LINUX.ORG.RU

Встречайте dudge: система для проведения олимпиад по программированию

 


0

3

Стал доступен svn-репозиторий системы для проведения олимпиад по программированию, которая разрабатывается в Самарском государственном техническом университете.

Основные возможности системы:

  • Автоматизированная проверка исходных текстов решения на наборе тестов.
  • Поддержка различных типов соревнований, причем новые типы соревнований могут подключаться в систему после ее установки.
  • Хранение информации о ходе соревнования, базы участников и их рейтинга.
  • Вычисление статистики по соревнованию.
  • Распределенная проверка решений, отправленных участниками, на нескольких проверяющих компьютерах.
  • Проверка решений на Windows- и Linux-системах.
  • Поддержка любых компиляторов путем задания их использования через шаблоны вызова из командной строки.
  • Мультиязычный веб-интерфейс с возможностью переключения языка пользователем.
  • Работа на любой платформе, на которой работает Java.

Ищутся люди, заинтересованные в развитии системы и ее использовании в своих учебных заведениях или организациях.

>>> Подробности

★★★★★

Проверено: post-factum ()
Последнее исправление: post-factum (всего исправлений: 1)
Ответ на: комментарий от eliriand

Велосипед не мой, попросили разместить. :-)

AS ★★★★★
() автор топика

И еще вопрос к автору, если он здесь. Как там сделано Time Limit/Memory Limit в Linux? Нужно патчить ядро для этого, или найден способ обойтись без этого? Когда я пытался написать подобную штуку, то наткнулся на то, что TL не получается отмерять стандартными средствами с точностью больше секунды, а ML невозможно нормально отделить от падения (забыл какого сигнала).

snizovtsev ★★★★★
()

Эх... А я 10 лет назад как-то так... По дедовски областную судил. Головой и руками.

Lumi ★★★★★
()
Ответ на: комментарий от simplex

Проблема что ждать надо по времени CPU, а не настоящему. Как вариант разве что очень часто делать проверки по таймеру.

snizovtsev ★★★★★
()
Ответ на: комментарий от snizovtsev

> Проблема что ждать надо по времени CPU, а не настоящему.

И какова разница на счётных задачах при полной утилизации ядра?

Lumi ★★★★★
()

Прочитал заголовок как «Встречайте dude». Думал какая-то стоящая прикольная вещь.

Mr_Alone ★★★★★
()
Ответ на: комментарий от snizovtsev

А как time делает? Наверное что-то вроде clock подойдет.

simplex
()

> This project currently has no downloads.

Хм...

northerner ★★★
()
Ответ на: комментарий от snizovtsev

> Проблема что ждать надо по времени CPU

http://linux.die.net/man/2/setrlimit

RLIMIT_CPU. CPU time limit in seconds

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

northerner ★★★
()
Ответ на: комментарий от snizovtsev

проблема даже не сколько в TL а в security violation.

процесс должен не иметь право выполнять большинство системных вызовов. я так понимаю что именно в этом основное назначение патча ядра который вместе с ejudge идет

Dimson
()

> Работа на любой платформе, на которой работает Java.

С этого надо было начинать и сразу же заканчивать.

Smacker ★★★★★
()
Ответ на: комментарий от Deleted

> Есть eJudge и Contester. Зачем еще один велосипед?

Начнем с того, что есть PC^2...

http://www.ecs.csus.edu/pc2/

Впрочем ни одна из этих систем не ориентирована на широкого потребителя. Видели последние рекомендации по проведению школьного этапа олимпиады по информатике? Вынь и положь тестирование решений.

http://rosolymp.ru/index.php?option=com_content&view=article&id=6451&Itemid=909

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

northerner ★★★
()
Ответ на: комментарий от Deleted

потому что больше ни на что наши университеты не способны, зачем спрашивать очевидные вещи?

trashymichael ★★★
()
Ответ на: комментарий от ma1uta

Да и на тимусе он же стоял, если не изменяет память.

ma1uta ★★★
()
Ответ на: комментарий от northerner

>чтобы потенциальный пользователь не начал открывать левых файлов, сокетов и прочего.

Загнуть в lxc, например.

rave
()

чем ejudge не угодил? I want to ride my bycicle...

memnek
()

простите, а Арно^WМигель-классик ожидается?

splinter ★★★★★
()

Многим лень поднимать постргесс из-за такой программулины.

guitarist ★★
()

катап в ней точне больше всех фрагов настреляет.

anonymous
()
Ответ на: комментарий от northerner

>Видели последние рекомендации по проведению школьного этапа олимпиады по информатике? Вынь и положь тестирование решений.

Так вроде бы так всегда было? По крайней мере у нас на олимпиадах ученики обязаны кроме текста программы письменно протестировать её. Хотя бы на черновике... И кажется мне, что это сделано на тот случай, если в комиссии никто толком программированием не владеет :) А так глянули - и всё понятно, где и как что делается. Ну и ошибки вроде виднее. На практическом туре, там проще, сразу за машиной ребёнок работает, преподы ток конечные результаты выполнения смотрят.
А вообще, по сабжу, вроде интересная штука, ток отсутствие каких-либо файлегов на страничке скачивания огорчает...

Vier_E ★★★
()
Ответ на: комментарий от dartius

>А накой вообще нужны эти олимпиады по программированию?

Ну чтобы среди школьнегоф определять единичных особей с наличием моска, повёрнутого в сторону программирования. Очевидно именно для этого.
А вот нафига фсякие олимпиады по МСО и интернет-серфингам, это я не понимаю, да.

Vier_E ★★★
()

> Dudge - это универсальная система для проведения олимпиад по программированию и другим предметам, написанная на Java и J2EE с использованием СУБД PostgresQL и распространяющаяся по лицензии GPL.

Холи мазер оф год. EJB! Там что банковские транзакции надо проводить с толстых клиентов?

r ★★★★★
()

> Работа на любой платформе, на которой работает Java.

меня всегда интересовало как добиться такого успеха?

ACR
()
Ответ на: комментарий от anonymous

> Побеждает в олимпиаде тот, кто взламывает систему

Обычно дисквалифицируют. Код решения читают, поэтому просто заставить систему принимать все тесты как правильные слишком подозрительно. Максимум что можно достать это сами тесты и подгонять решение под них. Тут тоже часто возникают вопросы.

tulskiy
()

НГУ? Я у вас пару дней назад олимпиаду по информатике писал, иногда медленно компилировалось.

ValdikSS ★★★★★
()

> Java

А как же педон? Или руби?

Или таки разработчики сей системы понимают, что в CV надо указывать «Java», а не недоязычки :)

Bioreactor ★★★★★
()

Система мне давала 5 баллов в одном случае, и 5 баллов в другом, если немного код изменишь. Я так и не понял, в чем ошибка, и вставил рандом и залил код. Получил 10 баллов, прошло.

ValdikSS ★★★★★
()

Ответы на вопросы

Всем привет, я один из авторов Даджа (основной разработчик). Прежде всего, хочу сказать, что сейчас система находится в полуфабрикатном состоянии, так что просьба ее текущую отлаженность не судить строго - она изначально создавалась для проведения уютненьких олимпиад по программированию на факультете. Публикация о ней заметки на ЛОРе для меня стала неожиданностью. :)

В целом мы только что открыли и выложили исходники системы под GPLv3 - идея в том, чтобы сделать опенсорсную систему олимпиад, которой мог бы пользоваться любой российский университет или школа.

И еще вопрос к автору, если он здесь. Как там сделано Time Limit/Memory Limit в Linux?

В данный момент - через rlimit (было решено для начала сделать самым простым способом).

Virl
()

Тестовая версия сейчас работает по адресу http://dudge.fait.samgtu.ru/ Непосредственная проверка задач сейчас там отрублена, чтобы нас не хакнули (там куча багов). :)

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

Virl
()
Ответ на: Ответы на вопросы от Virl

> Публикация о ней заметки на ЛОРе для меня стала неожиданностью. :)

Меня один из сотрудников, если я правильно понимаю, кафедры попросил. По крайней мере факультета - точно. :-) Вообще я думал, что согласовано...

AS ★★★★★
() автор топика
Ответ на: комментарий от Vier_E

> ток отсутствие каких-либо файлегов на страничке скачивания огорчает...

Там svn доступен, я в новости специально акцентировал. На последней вкладке, Source которая:

svn checkout http://dudge.googlecode.com/svn/trunk/ dudge-read-only

AS ★★★★★
() автор топика
Ответ на: комментарий от AS

> Меня один из сотрудников, если я правильно понимаю, кафедры попросил. По крайней мере факультета - точно. :-) Вообще я думал, что согласовано...

Да все нормально, он мне и прислал ссылку на эту ветку.

Virl
()
Ответ на: комментарий от Vier_E

> А вообще, по сабжу, вроде интересная штука, ток отсутствие каких-либо файлегов на страничке скачивания огорчает...

Файлов там нет потому, что мы буквально несколько дней назад мигрировали на гуглкод свой собственный ранее закрытый репозитарий. Система до этого использовалась только в рамках факультета, поэтому необходимости собирать какие-то «релизы» или установочные пакеты не было.

Так или иначе, там на сайте доступны полные исходники системы через svn, которые собираются ant'ом или netbeans'ом. В готовых пакетах сейчас смысла все равно мало, т.к. в системе в любом случае сначала надо поправить пару текущих страшных багов, прежде чем ее смогут использовать неподготовленные пользователи.

Virl
()
Ответ на: комментарий от AS

Собственно, на сайте указаны мои контакты - если у уважаемых комментаторов будут вопросы по исходникам или работе системы - можете стучаться ко мне в аську или джаббер.

Virl
()
Ответ на: комментарий от r

> Холи мазер оф год. EJB! Там что банковские транзакции надо проводить с толстых клиентов?

Нет, это обычное веб-приложение. Это и является основным отличием Dudge'а от ejudge и большинства прочих систем - он разрабатывается как цельное веб-приложение (с плагинами для проверки на разных языках / валидирования решений, конечно), а не как лазаревско-франкенштейновский набор служб, сервисов и xslt трансформаций. Т.е. конечная цель разработки Dudge - чтобы преподаватель в университете или школе (при небольшой помощи сисадмина или ученика) мог просто поставить парой кликов Dudge на компьютер и проводить соревнования или лабораторные в уже готовом для этого веб-окружении с базой пользователей, его собственной базой задач, удобном веб-интерфейсе - без вникания во внутренности работы системы и всякие group_id и т.п.

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

Virl
()
Ответ на: комментарий от melkor217

> чем оно лучше ejudge?

Тем, что вместо вот этого:

http://www.ejudge.ru/INSTALL.RUS.txt

у нас уже сейчас требуется копирование четырех файликов в папку автодеплоя сервера приложений. (Ну, с точностью до пре-альфа недоработок, вроде редактирования полей-костылей в СУБД, которые мы еще не убрали)

Virl
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.