Антиплагиат (1231606), страница 6
Текст из файла (страница 6)
Чтобы узнать остальные параметры необходимовыполнить:$ ./configure –helpСледует отметить, что пользователь ejudge долж ен обладать правами доступа к каталогам web-файлов и cgi-bin сервераApache2. Если э то не выполняется, то необходимо установить требуемые права доступа к э тим каталогам.3.1.4 Настройка и запуск системы EjudgeДля начала необходимо создать конфигурац ию системы Ejudge. Для э того предназначен скрипт ejudge-setup:$ ./ejudge-setupВ меню следует обратить внимание на пункты «Edit global settings» и «Edit Administrator Identity».Для пункта меню «Edit global settings» необходимо заполнить:– «Sendmail program»«/usr/sbin/sendmail».–полныйпутькпрограммеотсылкипочты.Присваиваемэ томупараметрузначение– «Create Workdisk?» – установить в значение «по».Для пункта меню «Edit Administrator Identity» следует заполнить информац ию об администраторе системы:– I – указывается «1»;– Login – логин администратора (например, admin);– E-Mail – почта администратора;– Name – отображ аемое в системе имя;– Password – пароль.После заполнения следует сохранить файл, выбрав пункт «Save Setup Script».
Зачем от пользователя root запускаемустановку:# ./ejudge-install.shВ заключении необходимо выставить права на доступ к ссылкам на исполняемые файлы, которые установила система Ejudgeв указанный ранее каталог cgi-bin:# cd /usr/lib/cgi-bin # chmod 755 new-* judge master register serve-control team usersДля запуска системы Ejudge необходимо находясь в роли пользователя ejudge выполнить:$ cd /home/ejudge/inst-ejudge/bin/$ ./ejudge-control startСледует отметить, что если после э того web-сервер выдаёт ошибку, стоит удалить все файлы в каталоге cgi-bin ископировать туда файлы из каталога пользователя ejudge:$ cd /usr/lib/cgi-bin$ rm –rf new-* judge master register serve-control team users$ cp /home/ejudge/inst-ejudge/libexec/ejudge/cgi-bin/* ./После э того, если web-сервер запущ ен, мож но получить доступ к системе Ejudge через браузер по адресу http://localhost/cgibin/serve-control.3.1.5 Экспорт истории посылок из системы EjudgeКак говорилось ранее, в системе Ejudge присутствует возмож ность автоматического э кспорта истории посылок любогосоревнования в файле формата XML.
Данная функц ия доступна как администратору систему, так и администраторуконкретного турнира.Экспорт истории посылок мож ет быть двух видов:– внешний, для взаимодействия с другими системами;– внутренний, для импорта в другие компоненты Ejudge.История посылок, э кспортируемая из системы Ejudge внешним типом, имеет формат PCMS2. Подробно данный форматистории посылок будет рассмотрен в следующ ем разделе.Выводы по разделуВ текущ ий момент установка и настройка системы Ejudge произведена лишь на тестовой машине, но в будущ ем планируетсяеё внедрение и использование на сервере заказчика.Система Ejudge предоставляет следующ ие возмож ности для обучения студентов:– подготовка к соревнованиям по программированию;– проведение соревнований по программированию;– тренировка навыков программирования на базовом и продвинутом уровнях.Участвовать в соревнованиях и тренироваться в системе Ejudge мож но удалённо, так как доступ к ней предоставляетсяпосредству web-интерфейса.В системе Ejudge присутствует возмож ность э кспорта истории посылок в формате PCMS2.
Разрабатываемый модульподведения итогов долж ен принимать на вход данную историю посылок для визуализац ии хода и подведения итоговсоревнований по программированию проводимых в системе Ejudge.http://dvgups.antiplagiat.ru/ReportPage.aspx?docId=427.24091261&repNumb=115/2420.06.2016Антиплагиат3.2 Разработка модуля подведения итоговПо требованиям, предъявляемым к модулю подведения итогов, он мож ет быть реализован посредством одной web-страниц ы.На данной страниц е размещ ены меню настроек и таблиц а с результатами. Помимо э того присутствуют две кнопки – перваядля вызова меню, вторая для управления «разморозкой».3.2.1 Реализац ия меню настроекВсплывающ ее меню с настройками (рисунок 3.1) описанными в требованиях реализовано с помощ ью HTML, CSS, JavaScript ибиблиотеки jQuery.Рисунок 3.1 – Меню с настройками «разморозки»Меню с настройками имеет так называемую табличную вёрстку страниц ы, которая определена тэ гом table в файлеindex.php (прилож ение А, листинг А.1).Оформление меню определено свойствами тэ гов в файле setting.css (прилож ение А, листинг А.2).Выпадающ ий список в меню содерж ит в себе информац ию о том, какие истории посылок имеются на сервере.
Формированиеданного списка будет рассмотрено в следующ ем подразделе.Вызов меню осущ ествляется посредству одной из кнопок на web-страниц е. При наж атии на кнопку меню плавно исчезнетили появится. Исчезновение сопровож дается изменениями размера меню и параметра прозрачности, благодаря чемуисчезновение выглядит так, как будто меню сж имается в одну точку.
Такая анимац ия реализована с помощ ью библиотекиjQuery (листинг 3.1).Листинг 3.1 – Реализац ия анимац ии исчезновения/появления менюvar showSetting = true;function hideSetting() {if( showSetting )$( "#setting" ).hide( "slow" );else$( "#setting" ).show( "slow" );showSetting = !showSetting;}Функц ии hide() и show() библиотеки jQuery позволяют добиться описанной выше анимац ии.3.2.2 Хранение историй посылок на сервереНа сервере в папке log хранятся файлы формата XML с историями посылок различных соревнований.
Точно такой ж е форматимеют истории посылок, которые э кспортируются из системы Ejudge.Помимо э того на сервере имеется база данных с наименованиями всех имеющ ихся историй посылок. Подключение к базеданных осущ ествляется через РНР-сц енарий db.php (листинг 3.2).Листинг 3.2 – Файл db.php<?php$dbhost = 'localhost'; $dbname = 'table';$dbuser = 'root'; $dbpass = '';$connection = mysql_connect( $dbhost, $dbuser, $dbpass ) or die( mysql_error() );mysql_select_db( $dbname, $connection ) or die( mysql_error() );?>Наименования историй посылок хранятся в базе данных для быстрого формирования выпадающ его списка из меню настроек,которое реализовано вызовом РНР-сц енария logs.php (листинг 3.3):<?php include "php/logs.php"; ?>Листинг 3.3 – Файл logs.php<?phpinclude "php/db.php";$query = "SELECT * FROM `logs`";$res = mysql_query( $query );echo "<select id = 'fileLogFromServer'>";while( $row = mysql_fetch_array( $res ) ) {echo "<option>".$row["name"]."</option>";}echo "</select>";?>Сц енарий logs.php делает запрос в базу данных для получения списка наименований историй посылок.
После э того, черезц икл, идёт заполнения тэ га select, который в свою очередь является выпадающ им списком. Элементы выпадающ его спискавыделяются тэ гами option.3.2.3 Реализац ия загрузки истории посылокКак описано ранее, реализовано два варианта загрузки истории посылок:– с компьютера пользователя;– с сервера.Для загрузки истории посылок с компьютера используется стандартный э лемент оформления web-страниц – э лемент input стипом file. После выбора файла (рисунок 3.2), он обрабатывается через JavaScript (листинг 3.4).Рисунок 3.2 – Выбор истории посылок для загрузкиЛистинг 3.4 – Обработка загруж аемого файлаfunction loadLogFromUser() {if( loadLog( function( log ) {isLoadLog = false;loadLogFromFile( log, teams, problems, submits );http://dvgups.antiplagiat.ru/ReportPage.aspx?docId=427.24091261&repNumb=116/2420.06.2016АнтиплагиатcreateTable();goStart();})){deleteTable();}}function loadLog( onSuccess ) {var files = document.getElementyId( "fileLog" ).files;if( !files.length ) {return false;}var reader = new FileReader();reader.onloadend = function( event ) {onSuccess( event.target.result );};reader.onerror = function( event ) {alert( "Файл не мож ет быть прочитан! Код ошибки: " + event.target.error.code );};isLoadLog = true;reader.readAsText( files[0] );return true;}Функц ия loadLogFromUser() вызывается при загрузке истории посылок с компьютера.
Данная функц ия с функц ией onSuccess()в качестве аргумента, вызывает функц ию loadLog(), которая в свою очередь, пытается считать файл с историей посылок. Вслучае успеха, функц ия loadLog() вызывает переданную функц ию onSuccess(), которая отвечает за получение необходимыхданных из истории посылок.Выбор истории посылок для загрузки с сервера осущ ествляется через выпадающ ий список (рисунок 3.3).Рисунок 3.3 – Выбор истории посылок для загрузки с сервераЗагрузка истории посылок с сервера реализована с помощ ью технологии AJAX, которая позволяет функц иям JavaScriptвызывать РНР-сц енарии на стороне сервера и обрабатывать данные, полученные в ответ (листинг 3.5).Листинг 3.5 – Загрузка истории посылок с сервераfunction loadLogFromServer() {deleteTable();isLoadLog = true;var file = document.getElementyId( "fileLogFromServer" ).value;$.get( "php/loadLog.php", {"file":file}, function(data) {isLoadLog = false;loadLogFromFile( data, teams, problems, submits );createTable();goStart();} );}Функц ия loadLogFromServer() вызывает функц ию get() и передаёт в неё функц ию onSuccess(), которая рассматриваласьранее.
Функц ия get() делает запрос на сервер с вызовом РНР-сц енария loadLog.php (листинг 3.6).Листинг 3.6 – Файл loadLog.php<?php$file = $_GET["file"];echo file_get_contents( "C:/openServer/domains/table/log/".$file );?>PHP-сц енарий loadLog.php считывает историю посылок из определённого файла, хранимого на сервере, и возвращ ает её вфункц ию onSuccess() для дальнейшей обработки.Алгоритм обработки истории посылок будет рассмотрен в последующ их подразделах.3.2.4 Формат историй посылокИстории посылок соревнований могут быть записаны в обычный текстовый файл. Но чащ е всего для э того используютсяфайлы форматаXML (англ. eXtensible Markup Language – расширяемый язык разметки).[31]Как описано ранее, в системе Ejudge имеется возмож ность э кспорта истории посылок в формате PCMS2. Именно такойформат реализован в модуле подведения итогов.