Pull to refresh

Собственный онлайн компилятор.

Бывает, возникает необходимость скомпилировать и собрать программу, а под рукой отсутствует какой-либо компилятор. Я убил немало времени в поисках онлайн компилятора, но почти нигде нельзя было скачать получившийся екзешник, а просто можно было лицезреть сообщения компилятора об ошибках, либо не лицезреть, если весь код корректен. Однажды я наткнулся на один, где можно было скачать экзешник (компилятор собирал экзешники под винду), но вскоре он накрылся и уже полгода на там сайте красуется надпись «сервер перегружен, попробуйте зайти позже».
С чего вообще я сейчас пишу и к чему всё это. На днях начал писать прогу под линукс. Накропал немного кода. По определенным причинам комп с линуксом доступен мне далеко не постоянно, а с виндой – когда угодно и в любое время. Начало кода программы не привязано именно к линуксу, и может всё то же самое делать под виндой. Так вот, чтобы продолжить написание кода до тех пор, пока он не упрется в линуксовые особенности, мне потребовался компилятор в винде. А на виндовой машине я всего-навсего простой смертный юзер, и посему никакого софта установить не могу. Тут-то я и вспомнил про онлайн компиляторы, но тот единственный, который давал на выходе экзешник, ушел в мир иной, как я писал выше. Поиск выдавал мне кучу онлайн gcc компиляторов, но в винде они мне ничем помочь не могли.
Но тут меня посетила гениальная и до безобразия простая мысль. У меня же есть сайт, а сайты, как известно, работают на линуксовом сервере (ну или на BSD-шном, не столь важно). GCC входит в стандартную сборку этих операционных систем, если его специально не удаляли. По-хорошему, на сервере gcc не нужен и его вполне могли удалить. С надеждой в сердце загоняю на хостинг мой исходник (main.c), пишу нехитрый php скрипт:
<?
echo "Compiling...<br>\n" . shell_exec("gcc -std=c99 main.c 2>&1") . "<br>\n";
echo shell_exec("./a.out ");
?>


Вызываю его из браузера и, о чудо, наблюдаю вывод бинарничка в окне браузера.
Через веб-интерфейс редактирую исходник, и выполняю вышеуказанный скрипт для просмотра результата. Бинарник собирается с помощью gcc и выполняется на linux-системе, что мне и требуется. Дешево, надежно и практично!

Но радость была не долгой. Использовать ресурсы хостинга сайтов не по назначению, а именно для компиляции программ посредством GCC можно не безгранично. На следующий день захожу в раздел техподдержки хостинга и вижу пренеприятнейшее известие. А сообщение гласило следующее:
«На хостинге запрещено запускать любые скрипты, создающие значительную нагрузку.
Повторный запуск скриптов — приведет к блокированию аккаунта.»

Кстати, сообщение пришло примерно в это же время, когда я начал писать данный пост. То есть не успел я поделиться своей уловкой, а администрация уже прогневалась.
И это притом, что за день я выполнил пару «компиляция исходника + запуск бинарника» около пятидесяти раз, а код программы там совсем смешной на 10 кубов текста, то есть в действительности нагрузка на сервер копеечная.
Из всего вышеприведенного можно сделать два вывода:
1) при необходимости хостинг можно использовать для сборки программ
2) на виртуальном хостинге надо быть с такими экспериментами поаккуратнее и уж тем более не делать такую компиляцию доступной для посетителей.
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.