Как стать автором
Обновить

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

Бывает, возникает необходимость скомпилировать и собрать программу, а под рукой отсутствует какой-либо компилятор. Я убил немало времени в поисках онлайн компилятора, но почти нигде нельзя было скачать получившийся екзешник, а просто можно было лицезреть сообщения компилятора об ошибках, либо не лицезреть, если весь код корректен. Однажды я наткнулся на один, где можно было скачать экзешник (компилятор собирал экзешники под винду), но вскоре он накрылся и уже полгода на там сайте красуется надпись «сервер перегружен, попробуйте зайти позже».
С чего вообще я сейчас пишу и к чему всё это. На днях начал писать прогу под линукс. Накропал немного кода. По определенным причинам комп с линуксом доступен мне далеко не постоянно, а с виндой – когда угодно и в любое время. Начало кода программы не привязано именно к линуксу, и может всё то же самое делать под виндой. Так вот, чтобы продолжить написание кода до тех пор, пока он не упрется в линуксовые особенности, мне потребовался компилятор в винде. А на виндовой машине я всего-навсего простой смертный юзер, и посему никакого софта установить не могу. Тут-то я и вспомнил про онлайн компиляторы, но тот единственный, который давал на выходе экзешник, ушел в мир иной, как я писал выше. Поиск выдавал мне кучу онлайн 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) на виртуальном хостинге надо быть с такими экспериментами поаккуратнее и уж тем более не делать такую компиляцию доступной для посетителей.
Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.