Изменения в версии 2.3.16

From EjudgeWiki
Revision as of 04:48, 4 August 2010 by Cher (talk | contribs) (ej-contests)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Навигация: Главная страница/Система ejudge/Разработка/История версий/Изменения в версии 2.3.16

Добавлена концепция групп пользователей. Каждая группа имеет уникальный числовой идентификатор (group_id) и уникальное имя (group_name). Пользователи могут объединяться в группы по произвольному принципу. Каждая группа может включать более одного пользователя и каждый пользователь может состоять членом более одной группы. Группы пользователей могут использоваться при фильтрации посылок для ограничения времени сдачи отдельных задач.

ej-compile

Поддерживается режим "только проверка стиля", при котором поступивший файл не компилируется, а запускается программа проверки стиля. Результат работы программы проверки стиля считается результатом компиляции.

ej-contests

У каждой посылки может быть установлен флаг "отмечена" (marked). Флаг может быть установлен как вручную, как и проверяющей программой.

В выражении фильтра поддерживается предикат marked, который выбирает только "отмеченные" посылки. Поддерживается предикат "latest_marked", который выбирает последнюю отмеченную посылку для пары (пользователь,задача).

В выражении фильтра поддерживается предикат inusergroup(GROUP_NAME), который выбирает пользователей, принадлежащих указанной группе пользователей.

Поддерживается новый тип задач "tests". Для этого типа задач требуется написание тестов по заданному условию задачи. Тесты проверяются на наборе программ, среди которых есть как правильные, так и неправильные. Правильные программы должны пройти все тесты, а неправильные - не пройти хотя бы один тест каждая.

Поддерживается альтернативная раскладка файлов. В альтернативной раскладке файлы группируются по задачам вместо группировки файлов по назначению.

Поддерживается выполнение произвольной программы в момент завершения турнира. Имя программы задается с помощью глобальной конфигурационной переменной contest_stop_cmd.

Добавлены глобальные конфигурационные переменные advanced_layout, disable_auto_refresh, problems_dir, contest_stop_cmd.

Добавлены конфигурационные переменные binary, valuer_sets_marked, ignore_unmarked, style_checker_env, test_checker_env, style_checker_cmd, test_checker_cmd, open_tests раздела описания задач.

Добавлена конфигурационная переменная style_checker_env раздела описания языкового процессора.

Добавлена глобальная конфигурационная переменная load_user_group. Добавлены конфигурационные переменные раздела описания задач group_start_date, group_deadline.

При просмотре таблицы текущих результатов привилегированный пользователь может задать выражение фильтра посылок для задач, пользователей и посылок. Таким образом можно ограничивать таблицу текущих результатов определенными пользователями или определенным временем.

Турниры корректно загружаются и работают, даже если в конфигурационном файле турнира не определен ни один языковой процессор.

Исправлена ошибка добавления записи в середину журнала посылок при хранении журнала посылок в БД MySQL.

Конфигурационная переменная enable_text_form раздела описания задачи работает и для обычных (STANDARD) задач на сдачу программ. Если значение переменной установлено в 1, на странице сдачи отображается как окно для непосредственного ввода текста программы, так и диалог для выбора файла для сдачи. Пользователь может сдать программу на проверку либо скопировав ее текст в окно, либо приложив файл. Сдать и текст программы, и приложенный файл одновременно нельзя.

ej-nwrun

При тестировании под win32 корректно работает одновременный ввод/вывод в файлы и стандартные потоки. Для этого в конфигурационный файл турнира добавлены конфигурационные переменные секции описания задачи combined_stdin и combined_stdout.

ej-super-server

При выполнении операции "Check contests settings" в режиме альтернативной раскладки файлов в каждом каталоге задачи запускается утилита make, если в этом каталоге присутствует Makefile.

При выполнении операции "Check contests settings" выполняется проверка тестов с помощью проверяющей программы для тестов, если она указана в секции описания задачи.

ejudge-edit-users

Поддерживается редактирование групп пользователей.

libchecker

Добавлен новый заголовочный файл checkutils.h, предназначенный для использования в случае, когда программа не является проверяющей программой, но использует функции библиотеки libchecker.

Добавлены новые функции checker_in_open, checker_out_open, checker_corr_open, checker_eof, checker_eoln, checker_skip_eoln_ex, checker_read_file_by_line_ex, checker_read_line_ex, checker_read_buf_ex, checker_read_int_ex, checker_read_unsigned_int_ex, checker_read_long_long_ex, checker_read_unsigned_long_long_ex, checker_read_double_ex, checker_read_long_double_ex.

Все функции чтения данных, кроме checker_read_file контролируют допустимость управляющих символов во входных данных. В текстовом файле могут появляться только пробельные управляющие символы. Символы, для которых выполняется условие

((c < ' ' && !isspace(c)) || c == 127)

являются недопустимыми в текстовом файле и в случае обнаружения таких символов выдается соответствующая ошибка.

Функции чтения вещественных чисел проверяют, что каждое число является отдельным элементом ввода (то есть последовательностью непробельных символов, ограниченной пробельными символами началом или концом файла). В предыдущих версиях строка "-1-1" считывалась как два числа -1 и -1, в этой версии будет выдана ошибка.

style_archive

Новая программа для проверки корректности архивов, сдаваемых на проверку для задач типа "tests".