Список вопросов
Как зайти в Даркнет?!
25th January, 01:11
4
0
Как в tkinter из поля ввода Entry получить значение в одну переменную и обновить строку кнопкой, затем получить ещё одно введённое значение и затем сложить их. Ниже пример кода
21st July, 19:00
892
0
Программа, которая создает фейковые сервера в поиске игровых серверов CS 1.6 Steam
21st March, 17:43
948
0
Очень долго работает Update запрос Oracle
27th January, 09:58
912
0
не могу запустить сервер на tomcat HTTP Status 404 – Not Found
21st January, 18:02
905
0
Где можно найти фрилансера для выполнения поступающих задач, на постоянной основе?
2nd December, 09:48
938
0
Разработка мобильной кроссплатформенной военной игры
16th July, 17:57
1724
0
период по дням
25th October, 10:44
3955
0
Пишу скрипты для BAS только на запросах
16th September, 02:42
3720
0
Некорректный скрипт для закрытия блока
14th April, 18:33
4613
0
прокидывать exception в блоках try-catch JAVA
11th March, 21:11
4380
0
Помогите пожалуйста решить задачи
24th November, 23:53
6084
0
Не понимаю почему не открывается детальное описание продукта
11th November, 11:51
4350
0
Нужно решить задачу по программированию на массивы
27th October, 18:01
4395
0
Метода Крамера С++
23rd October, 11:55
4308
0
помогите решить задачу на C++
22nd October, 17:31
4002
0
Помогите решить задачу на python с codeforces
22nd October, 11:11
4492
0
Python с нуля: полное руководство для начинающих
18th June, 13:58
2598
0
Решение задач по программированию он-лайн. Варианты
Просмотров: 288
 
Ответов: 5
Хотелось бы добавить на один ресурс возможность решать задачи по программированию, например, как на Timus. Само веб-приложение написано на Java, хостится все это дело под Ubuntu.
Проблема в том, что на сервере есть еще и другие приложения, в том числе и коммерческие. Поэтому вариант с запусками присланных решений в отдельных процессах не подходит. Кроме того, будет достаточно серьезное ограничение по языкам программирования, чего не хотелось бы.
Видится такое решение проблемы: создать простые desktop приложения под основные ОС (или написать одно кроссплатформенное), которые будут уметь запускать процессы локально, собирать полученные данные и общаться с сервером. То есть человек скачивает программу и получает возможность решать задачи практически на любом языке программирования.
Собственно вопросы:
1. Как бы вы отнеслись к необходимости скачивать некоторый софт и запускать у себя? Подразумевается, что сайт в принципе trusted и информация о разработчиках сайта является открытой.
2. Может быть у вас есть другие идеи по организации процесса решения задач и проверки результатов.
Заранее спасибо за ваши ответы.
Запуск решений локально, помимо недоверия к постороннему софту у со стороны пользователя, не даёт контроля с вашей стороны.
Участник сможет расковырять присланный ему чекер, и посмотреть тесты. Либоо вообще, разобрав протокол посылать серверу результат «Всё ОК», даже не решая поставленную задачу.
Варианты:
Хостить задачи на специализированных сайтах типа TopCoder или SPOJ, и т.п. Многие из них позволяют создавать приватные наборы задач.
Второй вариант — сделать как в Google Code Jam. Там на сервере ничего не запускается. Когда приходит время сдавать, сервер предоставляет участнику тестсет, участник запускает у себя свою программу на этих тестах, и отправляет на сервер результаты работы.
На мой взгляд, проблема в том, что участники будут иметь доступ ко входным данным. Ещё обычно есть ограничения на время и память, тогда в зависимости от производительности компьютера участника одна и таже реализация может вкладываться в эти ограничения и не в кладываться. Ограничение памяти тоже не понятно как контролировать.
Спасибо за комментарии.
>> На мой взгляд, проблема в том, что участники будут иметь доступ ко входным данным.
>> Участник сможет расковырять присланный ему чекер, и посмотреть тесты. Либоо вообще, разобрав протокол посылать серверу результат «Всё ОК», даже не решая поставленную задачу.
Наверное доступ к тестам не является таким уж критичным. А на счет «все ок» — естественно проверка результатов будет проходить на стороне сервера. Хотя да, контроля мало, особенно по памяти и времени выполнения.
>> Второй вариант — сделать как в Google Code Jam.
Хороший вариант, спасибо.
Еще одна причина, по которой хотелось бы сделать desktop приложение. Можно попросить надежных пользователей выступать «сервером» для запуска чужих задач. То есть они пишут, что мол на их системе есть такие-то компиляторы/интерпретаторы, запускают программу, которая периодически пингает сервер на наличие чужих решений в очереди. Если решение есть, программа вытягивает его с набором тестов (и может даже с правильными результатами), выполняет, замеряет время, память и так далее.
Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться