LINUX.ORG.RU

Подскажите систему онлайн-компилирования и тестирования кода

 ,


0

1

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

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

Проблема: нигде не могу найти opensource вариант такой системы.

Про всякие codepad.org и аналогичные знаю, но необходима система на локальном хосте.

Собрать скрипты на коленке в chroot/qemu/selinux - самый последний вариант. Может все-таки существуют такие уже реализованные системы с открытым кодом для тестирования ПО по входному/выходному потоку?

Применяемые ЯП - С, С++ (консольные, libc-only).

★★

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

удачи

з.ы. https://www.google.com.ua/search?q=opensource online compiler&

anTaRes ★★★★
()
Последнее исправление: anTaRes (всего исправлений: 2)

docker твой друг.

А если устроит сторонний сервис - взгляни на степик.

pon4ik ★★★★★
()

Зачем веб интерфейс? Откройте доступ студентам по ssh. Создавайте им аккаунты в линукс через веб или вручную. Пусть компилируют в своей home ~ директории, проверите у них, залогинившись под рутом. Делов то.
Пысы: Нащет рута - это юмор.

menangen ★★★★★
()
Последнее исправление: menangen (всего исправлений: 2)

Глупая затея. Лучше написать юнит тесты, студенты же пусть свои исходники заливают в гит репозиторий. После коммита должен триггероваться запуск тестов, оценку система пусть выставляет на основании количества пройденных успешно тестов, либо тест сьютс. Реализовано ли это уже я не в курсе, в принципе затея интересная, может быть займусь в свободное время, но быстро результатов не жди :)
Кстати, прогугли jenkins, sonarqube и иже с ними, возможно их можно сконфигурировать для решения твоей проблемы.

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

Лучше написать юнит тесты
оценку система пусть выставляет на основании количества пройденных успешно тестов

кстати да, интересная идея
можно еще тестам «вес» назначить, чтоб не тупо по количеству пройденных, а по максимальной близости к требуемому результату (чтоб лишний пробел, например, не считало за серьезную ошибку)

anTaRes ★★★★
()
Последнее исправление: anTaRes (всего исправлений: 1)
Ответ на: комментарий от anTaRes

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

f1xmAn ★★★★★
()

См., например, ejudge.

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

Зачем веб интерфейс? Откройте доступ студентам по ssh.

Двачую, и студентам интереснее и тебе проще, плюс можно совместить с тестами - запускать тесты по крону, например, из установленной папки с установленным именем программы, типа ~/labs/lab1, ~/labs/lab2, а подробные результаты запуска уже можно выдавать в веб-интерфейс.

loz ★★★★★
()

git + jenkins?

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