Skip to content

01Flame10/c0d3r

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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 и С/С++.


About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages