Как сделать сервис с запуском более 2 ЯП по типу Codewars или repl.it?
Написал свой сайт отдаленно похожий на Codewars и реализовал там решения на 2 ЯП. Серверная часть написана на python, она и запускает его, второй js на клиенте запускается. Но не совсем понятно как добавлять другие ЯП. Скачивать др. ЯП на систему и запускать через os.system или искать что-то типа brython, но 1 много качать, а 2 трудновато найти и запустить.
lxc не нагружает сервер, мизерные накладные расходы по памяти и все
как частный случай - запускай все в докере, но внимательнее настраивай все, например сети внутри быть не должно
rPman, docker-ом пока не умею пользоваться, но была мысль когда прочёл ответ на свой вопрос. lxc+docker или что-то одно. "сети внутри быть не должно" вот тут я не понял
docker это не плюс- а отдельный продукт на основе lxc (точнее там уже что то другое запилили но идея та же)
Песочница - это понятие в it, означающее изоляцию, в твоем случае она должна быть максимальной, ведь ты буквально запускаешь любой чужой код на своем сервере.
не должно быть доступа ни в интернет, ни в локальную сеть сервера (даже если она виртуальная), ни к файлам сервера, ограничены должны быть оперативная память, нагрузка на диски и процессор (через счетчики, к примеру на каждого пользователя выделяешь определенное количество секунд процессорного времени и количество IOPS дисковых операций, при превышении убиваешь процесс и блокируешь работу аккаунта (временно). можно задать разные лимиты и на первых замедлять скорость.
Таких сервисов Online выполнения скопом или со специализацией по какому то одному языку (и бывает с IDE) много, а есть какой то "сложившийся" рейтинг таких площадок?
А, то к примеру, пробуешь запустить какой то код некоторого языка и даже консольного работающего интерфейса не всегда можно получить не говоря уж о графическом (бывает и каких пакетов не хватает)
P.S. Из последнего, что пробовал запустить примеры кода с площадки rosettacode.org языка ELM (2048 игра оттуда по ссылке запустилась на приведённом месте хранения примера, а на других площадках с ELM нет)
Навскидку более/менее понравилась площадка из последних экспериментов https://onecompiler.com/
Удалось запустить отдельные некоторые единичные файлы из проектов с Github реализаций языка программирования Forth (Форт) на разных языках программирования, но для полного запуска любого такого проекта, полагаю, сервис площадки должен уметь подхватывать все остальные файлы присутствующие в проекте с Github (т.е. указанием url- места исходного расположения проекта)
Такое есть вроде в проекте https://wokwi.com/ (в ссылках на площадку с Github Json файлов проектов при поиске wokwi) и каком то Online выполнении примеров для FPGA плат на Verilog, VHDL языках.
pharo, если я правильно понял ваш вопрос, то по поводу сайтов типа repl.it не знаю, я привел его в пример т.к. он имеет ту же ф-цию что мне интересна. А так я смотрел аналоги обучающих систем и выделил для себя Codewars и Exercisme, последний как то не очень понятен в использовании
pharo, конкретно с этим не могу помочь так как цель у меня обучающая система (да и не думаю что сведущ в этом хорошо, т.к. это мой 1 проект). Ну вот сейчас зашел скопировал код и у меня вроде как заработало
Marcenary, Да, код рабочий для запуска под gForth (Форт системой) используемой на таких площадках, как наиболее доступной для запуска под Linux,
но поиграть в этот Тетрис не получится. :)
т.е. вывод в терминал использует ESC-последовательности, которые никак не понимаются в запущенной песочнице для выполнния gForth программы.
На компьютере в запущеном gForth, конечно же, программа нормально отобразится.
Ну js в браузере, его устанавливать не нужно. Просто была мысль, использовать всякие конвертеры написанные на js типа typescript и т.д. но там сложновато.
Marcenary, еще раз - вы так потеряете эффект песочницы. Например, я напишу в вашем сервисе в js бесконечный цикл и у меня зависнет браузер. А должно все реагировать и написать что якесь говно.