Для всех

Markdown

Markdown - универсальный язык разметки текста. В нем есть почти все возможности HTML, поддержка ссылок, формул и других штук. Этот сайт изнутри написан на Markdown, потому что таким образом не надо писать HTML и CSS вручную.

Очень рекомендую изучить Markdown, потому что это займет у вас полчаса, а вы приобретете крутой навык, применимый для ведения заметок, оформления документов и создания сайтов.

Руководство по Markdown на русском

Статические сайты

Статические сайты не содержат серверной стороны - они работают исключительно в браузере. Их удобство в том, что их можно бесплатно хостить на GitHub. Для создания статических сайтов на Markdown рекомендую использовать Jekyll или Hugo - это программы, которые из ваших текстовых файлов на Markdown генерируют красивый сайт вроде этого.

LaTeX

\(\LaTeX\) - язык разметки математических, физических и химических формул. Его довольно просто выучить и использовать. Например, можно быстро создавать такие формулы:

\[\sum_{i = 0}^n{\frac{i}{k}} = \frac{\sum_{i = 0}^n{i}}{k}\] \[H^+ + OH^- = H_2O\]

Крутая инструкция по LaTeX

Для организаторов соревнований

🔥 Совет: Если вы хотите сделать контест для нескольких человек и вам не принципиальна независимость от сторонних сервисов, используйте мэшапы на Codeforces. Там все доступно и понятно, и вы можете использовать собственные задачи! Разворачивайте ejudge только в самых крайних случаях.

Polygon

Polygon - единственный хороший способ создавать задачи по спортивному программированию. Именно там сделано большинство задач из Codeforces.

Если вы поняли, что готовы сами писать задачи - дерзайте! Сервис бесплатный, общедоступный и работает на поддомене Codeforces.

Настройка и использование ejudge

ejudge - официальная тестирующая система Всероссийской олимпиады школьников по информатике, МОШ по информатике и других олимпиад.

Систему рекомендую устанавливать на Fedora или Ubuntu, с ними меньше всего проблем при установке.

Официальное руководство по установке на Fedora

Чтобы посылки тестировались, необходимо изолировать процессы в контейнерах. Насколько я знаю, это действие критично для работы системы.

Обязательная настройка на Fedora (изоляция в контейнерах)

Если необходима повышенная безопасность, необходимо поставить патч к ядру, чтобы всю систему нельзя было положить одной форкбомбой на Bash или C++. В своем ejudge я этот патч не ставил, но рекомендую это сделать.

Если возникают ошибки, которые не получается исправить, есть чатик в телеге.

Полезные скрипты для ejudge/Polygon

  • polygon-to-ejudge - перегоняет задачи из Polygon в ejudge лучше, чем стандартная утилита
  • polygon-cli - инструмент для доступа к Polygon из терминала