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

From EjudgeWiki

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

Время выхода: 28 августа 2014 г.

В данной версии произведена переработка внутренней архитектуры. Генерация HTML-страниц вынесена в отдельные модули, которые подгружаются динамически при работе системы. Генерация страниц выполняется по шаблонам страниц в специальном формате CSP. Формат похож на JSP (java server pages) и расширен поддержкой специальных тегов, похожих не теги struts2.

Разработан препроцессор ej-page-gen, который преобразовывает шаблон в формате CSP в код на языке Си. Далее этот код компилируется в динамическую библиотеку, готовую к подгрузке в работающую систему.

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

В инсталлированной системе шаблоны страниц располагаются в каталоге ${prefix}/share/ejudge/csp. В подкаталоге contests находятся шаблоны интерфейса пользователя и администратора для проведения турнира и интерфейс пользователя для регистрации (master, judge, client, register). В подкаталоге super-server находятся шаблоны для настройки турнира (serve-control).

Каталог ${prefix}/share/ejudge/csp перезаписывается при каждом обновлении системы. Альтернативное место для файлов шаблонов - каталог ${contests_home_dir}. Файлы, находящиеся в этом каталоге, не перезаписываются при обновлении. Они имеют более высокий приоритет, чем файлы шаблонов в каталоге инсталляции системы. То есть, если файл шаблона обнаружен здесь, будет использоваться он, а не файл из каталога инсталляции системы.

В связи с переходом на новый механизм генерации страниц более не поддерживается включение файлов в генерируемые HTML-страницы, управляемое элементами priv_header_file, priv_footer_file, register_header_file, register_footer_file, register_head_style, register_par_style, register_table_style, team_header_file, team_footer_file, team_separator_file, team_menu_1_file, team_menu_2_file, team_menu_3_file, team_head_style, team_par_style.

Дополнительно к исходным кодам распространяются бинарные сборки в формате RPM для дистрибутива Fedora 20.