Слайд 2Введение
Многие, кто профессионально занимаются программированием, возможно, слышали про спортивное программирование. Для решения
задач спортивного программирования существуют “Online Judge”, т.е. сайт с архивом задач и системой тестирования.
WnSOJ - одна из таких платформ. Отличие данной платформы от других состоит в том, что:
Сервер и тестирующая система написаны с помощью возможностей языка Python. Один из самых важных плюсов тестирующей системы - это быстрая проверка решения, даже если процессор сервера медленный. Также, сервер и тестирующая система работают одновременно с помощью технологии параллелизма, благодаря библиотеке multiprocessing.
Также, помимо архива задач, на сайте есть возможность искать, а также публиковать/редактировать/удалять работу.
Слайд 4Архитектура проекта
Сервер написан с помощью фреймворка Flask. Для поддержки форм использовался компонент
WT Forms. Также для хранения информации используется база данных.
Для поддержки базы данных использовалась библиотека SQLAlchemy и её возможности. Реализовано 4 класса-таблиц; 4 many-to-many модели; 4 one-to-many модели.
Тестирующая система написана с помощью библиотеки subprocess и psutil.
Для одновременной работы сервера и тестирующей системы использована библиотека multiprocessing.
Вспомогательные библиотеки: PIL, zipfile, io, datetime, os.
Слайд 5Компоненты интерфейса
Для создания интерфейса использованы возможности Bootstrap и JQuery. Также были использованы
плагины:
CodeMirror - для показа кода
MathJax - для написания математических выражений
Zero-MD - для показа Markdown файлов
Слайд 6Возможности. Задачи и посылки
Чтобы отправить решение, вам необходимо авторизоваться в системе. Вы
можете зарегистрироваться или войти в существующий аккаунт и отправить решение. Система автоматически проверит ваше решение и сообщит вердикт, максимально использованное время и максимальное количество используемой памяти. Как и говорилось ранее, одним из плюсов системы является то, что она хорошо оптимизирована - она быстро тестирует решение и выносит вердикт, даже если процессор сервера медленный.
Также, у каждой задачи есть разбор и решение на языке C++.
Администраторы могут добавлять новые задачи.
Слайд 7Возможности. Поиск работы
Вы также можете искать или публиковать/редактировать/удалять работу.
Есть 2 типа аккаунтов:
Обычный аккаунт - эти пользователи могут находить работу и общаться с работодателями по электронной почте или телефону. Откройте вакансию, которая вам понравилась, прочтите описание и, если работа вам подходит, свяжитесь с работодателем по электронной почте или телефону.
Бизнес-аккаунт - эти пользователи или компании могут публиковать, редактировать или удалять вакансии, а также находить и общаться по электронной почте или телефону с другими пользователями. Опубликуйте вакансию, при необходимости отредактируйте и просто дождитесь, пока какой-нибудь квалифицированный специалист свяжется с вами по электронной почте или телефону.
Также, администраторы могут добавлять работу, а также редактировать/удалять любую другую.
Слайд 8Возможности. Профиль
В профиле вы можете увидеть имя пользователя, адрес электронной почты, номер
телефона и статистику о задачах: последние 10 отправок и статистику вердиктов.
Также, если это бизнес-аккаунт, Вы можете с помощью фильтра просмотреть работы именно этого работодателя.
Также вы можете изменить аватар и пароль своего аккаунта.
Слайд 9Возможности. API
Платформа богата API. В API вы можете запросить:
список пользователей и пользователь
по id
список вакансий и вакансии по id
список посылок и посылка по id
список задач и задача по id
API находится по адресу http://127.0.0.1:5000/api/v1.
Слайд 10Пример API
Запрос: http://127.0.0.1:5000/api/v1/user/1
Ответ:
Запрос: http://127.0.0.1:5000/api/v1/submission/1
Ответ: