Решение задач по программированию он-лайн. Варианты

Хотелось бы добавить на один ресурс возможность решать задачи по программированию, например, как на Timus. Само веб-приложение написано на Java, хостится все это дело под Ubuntu.

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

Видится такое решение проблемы: создать простые desktop приложения под основные ОС (или написать одно кроссплатформенное), которые будут уметь запускать процессы локально, собирать полученные данные и общаться с сервером. То есть человек скачивает программу и получает возможность решать задачи практически на любом языке программирования.

Собственно вопросы:
1. Как бы вы отнеслись к необходимости скачивать некоторый софт и запускать у себя? Подразумевается, что сайт в принципе trusted и информация о разработчиках сайта является открытой.
2. Может быть у вас есть другие идеи по организации процесса решения задач и проверки результатов.

Заранее спасибо за ваши ответы.
  • Вопрос задан
  • 5818 просмотров
Решения вопроса 1
burdakovd
@burdakovd
Запуск решений локально, помимо недоверия к постороннему софту у со стороны пользователя, не даёт контроля с вашей стороны.

Участник сможет расковырять присланный ему чекер, и посмотреть тесты. Либоо вообще, разобрав протокол посылать серверу результат «Всё ОК», даже не решая поставленную задачу.

Варианты:
Хостить задачи на специализированных сайтах типа TopCoder или SPOJ, и т.п. Многие из них позволяют создавать приватные наборы задач.

Второй вариант — сделать как в Google Code Jam. Там на сервере ничего не запускается. Когда приходит время сдавать, сервер предоставляет участнику тестсет, участник запускает у себя свою программу на этих тестах, и отправляет на сервер результаты работы.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 4
frol
@frol
Линуксоид
На мой взгляд, проблема в том, что участники будут иметь доступ ко входным данным. Ещё обычно есть ограничения на время и память, тогда в зависимости от производительности компьютера участника одна и таже реализация может вкладываться в эти ограничения и не в кладываться. Ограничение памяти тоже не понятно как контролировать.
Ответ написан
Комментировать
@Jazzist
Не понял, сорри.
Ответ написан
Комментировать
javenue
@javenue Автор вопроса
Спасибо за комментарии.

>> На мой взгляд, проблема в том, что участники будут иметь доступ ко входным данным.
>> Участник сможет расковырять присланный ему чекер, и посмотреть тесты. Либоо вообще, разобрав протокол посылать серверу результат «Всё ОК», даже не решая поставленную задачу.

Наверное доступ к тестам не является таким уж критичным. А на счет «все ок» — естественно проверка результатов будет проходить на стороне сервера. Хотя да, контроля мало, особенно по памяти и времени выполнения.

>> Второй вариант — сделать как в Google Code Jam.
Хороший вариант, спасибо.

Еще одна причина, по которой хотелось бы сделать desktop приложение. Можно попросить надежных пользователей выступать «сервером» для запуска чужих задач. То есть они пишут, что мол на их системе есть такие-то компиляторы/интерпретаторы, запускают программу, которая периодически пингает сервер на наличие чужих решений в очереди. Если решение есть, программа вытягивает его с набором тестов (и может даже с правильными результатами), выполняет, замеряет время, память и так далее.
Ответ написан
Комментировать
opium
@opium
Просто люблю качественно работать
В мире веб2.0 это самоубийство, сделайте виртуалзацию, хотя бы опенвз и гоняйте все там.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы