Создание судьи онлайн с нуля

Интерактивный ребаз с --autosquash - это то, что я часто использую, когда мне нужно исправить предыдущие коммиты глубже в истории. Это существенно ускоряет процесс, который иллюстрирует ответ ZelluX, и особенно удобно, когда вам нужно отредактировать более одного коммита.

Из документации:

--autosquash

Когда сообщение журнала фиксации начинается с «squash!…» (Или «fixup!…»), И там это коммит, название которого начинается с того же самого…, автоматически изменяйте список задач rebase -i, чтобы коммит, помеченный для сквошинга, пришел сразу после коммита, подлежащего изменению

Предположим, у вас есть история это выглядит следующим образом:

$ git log --graph --oneline
* b42d293 Commit3
* e8adec4 Commit2
* faaf19f Commit1

и у вас есть изменения, которые вы хотите изменить в Commit2, затем зафиксируйте свои изменения, используя

$ git commit -m "fixup! Commit2"

, в качестве альтернативы вы можете использовать commit-sha вместо сообщение коммита, так что "fixup! e8adec4 или даже просто префикс сообщения коммита.

Затем инициируйте интерактивную перебазировку при коммите до

$ git rebase e8adec4^ -i --autosquash

, ваш редактор откроется с коммитами, уже правильно упорядоченными

pick e8adec4 Commit2
fixup 54e1a99 fixup! Commit2
pick b42d293 Commit3

, все что вам нужно сделать, это сохранить и выйти

15
задан iCodez 21 January 2015 в 18:05
поделиться

3 ответа

Я действительно не понимаю, о чем ваш вопрос. Нетрудно написать спецификацию дизайна для судьи с нуля.

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

Добавьте : и, пожалуйста, без анализа кода. У вас есть два варианта: либо сделать этот анализ кода доступным участникам во время конкурса, либо нет.

  • Если да: они тратят последние 5 минут своего времени, чтобы убедиться, что нет отрицательных баллов. Код становится намного хуже в процессе.

  • Если вы этого не сделаете: вы нарушите «верховенство закона»: люди знают механизм начисления баллов (также, что « s почему вы всегда даете им первый тест в тексте задачи).

Обновление: Извините, я сначала не заметил, что вы задаете какие-то конкретные вопросы. Песочница может быть менее важной, чем вы думаете - при хорошей конкуренции код становится общедоступным, так что «хакеры» будут действительно смущены. Тем не менее, я думаю, что видел практику, в которой вы не можете выполнять ввод-вывод, файловую систему или любое другое взаимодействие с системой напрямую (они пишут main () для вас, и это всегда одно и то же; вы только написать часть алгоритма с заданными потоками ввода / вывода). Ваш судья должен запускать только то, что он сам скомпилировал из источника.

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

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

вы пишете только часть алгоритма с заданными потоками ввода / вывода). Ваш судья должен запускать только то, что он сам скомпилировал из источника.

вы пишете только часть алгоритма с заданными потоками ввода / вывода). Ваш судья должен запускать только то, что он сам скомпилировал из источника.

1
ответ дан 1 December 2019 в 05:19
поделиться

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

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

client = firefox-a

1
ответ дан 1 December 2019 в 05:19
поделиться

Я не уверен, что такое онлайн-судья, но предполагаю, что это часть программного обеспечения для оценки правильности программ.

Я бы использовал для этого некоторые библиотеки сборки, тестирования и анализа . Примеры: Ant , JUnit и Checkstyle .

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

  • сбой сборки: 0 баллов
  • сборка выполнена успешно с предупреждениями 1 балл
  • сборка завершена без предупреждений 2 балла

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

  • За каждый пройденный тест: 1 балл

Наконец, запустите какую-нибудь утилиту анализа кода, чтобы оценить качество кода.

  • минус 1 балл за каждую жалобу утилиты

Конечно, вы можете захотеть изменить укажите значение, соответствующее вашим потребностям.

3
ответ дан 1 December 2019 в 05:19
поделиться
Другие вопросы по тегам:

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