01Flame10/c0d3r
Folders and files
| Name | Name | Last commit date | ||
|---|---|---|---|---|
Repository files navigation
Ссылки: - Презентация https://docs.google.com/presentation/d/10Gli8RFJMT-LKowyRCrjZM6SG_t9lYiY10-K_s1QIbU/edit?usp=sharing - Видео https://drive.google.com/file/d/1MNqrY08QZJohf-tMbEc_jqaYx-CnUDgT/view?usp=sharing Основная система написана на Java/Spring, база данных MySQL. Фронтенд: Bootstrap, MDBootstrap, JavaScript. Сборка с помощью Maven, который подтягивает все зависимости, включая hibernate и mysql. Сборка достаточно сложная, но все работает. Если у вас что-то не будет запускаться - пожалуйста сообщите. Также есть более простая версия системы без hibernate и с базой данных h2, но там не будет работать облачная IDE - можем прислать исходники по запросу. Abaris написан на Go, запускается как фоновый процесс командой: go run abaris.go & Далее, ему можно присылать команды на компиляцию прямо в браузере через localhost. Пример запроса: http://localhost:8000/process?data=1|2|Hello, World!|http://pavelandreyev.com/uploads/helloworld.java|helloworld.java|HelloWorld Параметры разделены символом | параметр 1: ID задания параметр 2: ID языка программирования параметр 3: Ожидаемый результат автотеста параметр 4: адрес для загрузки исходного файла параметр 5: имя файла в локальном хранилище параметр 6: имя запускаемого файла Пример запроса с ошибкой: http://localhost:8000/process?data=1|2|Hello,%20World!|http://pavelandreyev.com/uploads/helloerror.java|helloworld.java|HelloWorld Пример успешного запроса для C++: http://localhost:8000/process?data=1|1|Hello,%20World!|http://pavelandreyev.com/uploads/helloworld.cpp|helloworld.cpp|./a.out Все параметры конфигурируются облачной IDE. Для примера мы разместили тестовые файлы на демо-сервере. Для запуска новых запросов в демо-режиме может потребоваться перезапустить Abaris. После вызова Abaris загружает удаленный файл из URL, записывает его в локальную систему, запускает компиляцию, выполнение и выдает результат обратно в вызывающий процесс. Архитектурно Abaris находится на отдельном сервере, и только выполняет код, который он получает из удаленного сервера, где реализованы личные кабинеты и IDE. Это сделано в целях безопасности, чтобы при выполнении код студента не повредил собственный репозиторий. Также этим достигается всегда одинаковое выделение ресурсов системы на выполнение кода студента, таким образом, можно задавать время исполнения кода как результат автотеста, и оно не будет меняться из-за параллельных процессов. Все задачи на исполнение кода Abaris выполняет последовательно. В данной версии реализована работа с Java и С/С++.