Сведения о вопросе

FromRussia

18:04, 2nd October, 2020

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

Просмотров: 288   Ответов: 5

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

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

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

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

Заранее спасибо за ваши ответы.



  Сведения об ответе

darknet

06:00, 25th September, 2020

Запуск решений локально, помимо недоверия к постороннему софту у со стороны пользователя, не даёт контроля с вашей стороны.

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

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

Второй вариант — сделать как в Google Code Jam. Там на сервере ничего не запускается. Когда приходит время сдавать, сервер предоставляет участнику тестсет, участник запускает у себя свою программу на этих тестах, и отправляет на сервер результаты работы.


  Сведения об ответе

+-*/

05:16, 27th September, 2020

На мой взгляд, проблема в том, что участники будут иметь доступ ко входным данным. Ещё обычно есть ограничения на время и память, тогда в зависимости от производительности компьютера участника одна и таже реализация может вкладываться в эти ограничения и не в кладываться. Ограничение памяти тоже не понятно как контролировать.


  Сведения об ответе

lool

08:50, 29th September, 2020

Не понял, сорри.


  Сведения об ответе

KOMP

04:08, 26th September, 2020

Спасибо за комментарии.

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

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

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

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


  Сведения об ответе

dump

15:52, 25th September, 2020

В мире веб2.0 это самоубийство, сделайте виртуалзацию, хотя бы опенвз и гоняйте все там.


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться