За последнее время была существенно увеличена производительность виртуальной машины, стабилизировано ядро и спецификация, в язык добавлена поддержка исключений (try, catch, throw), поддержка UTF-8 BOM, вышел релиз языка OS 1.0, готовится документация и открытый сайт проекта.
ObjectScript в качестве нового языка для веб разработки
Существует много способов подключения скриптовых языков к вебу, например: свой вебсервер, модуль апача, phusion passenger, fastcgi и др. Каждый способ имеет свои плюсы и минусы.
Для сайтов с высокой нагрузкой, использующих, например, PHP, хорошо известна связка nginx + php-fpm (fastcgi). Nginx сам по себе хороший продукт и отлично себя зарекомендовал, он отдает статику (картинки, css и т.п.), а выполнение скриптов перенаправляет на php-fpm по протоколу fastcgi. Такое решение обеспечивает высокую стабильность и быструю обработку запросов. Кроме этого, fastcgi, можно подключить к апачу и др. веб-серверам.
В качестве реализации протокола fastcgi на C++ была выбрана кроссплатформенная библиотека fastcgi, с использованием которой был разработан OS-FCGI.
OS-FCGI — это сервис, работающий по протоколу FastCGI, для разработки сайтов на ObjectScript.
Установка OS-FCGI под linux из исходников
1. склонируйте репозиторий https://github.com/unitpoint/os-fcgi
git clone https://github.com/unitpoint/os-fcgi.git
2. выполните из под root следующие команды:
cd ./os-fcgi/ mkdir build && cd build cmake -DCMAKE_INSTALL_PREFIX=/ .. make make install service os-fcgi restart
Сервис os-fcgi будет работать в 8-потоком режиме и слушать порт 9000 для обработки fastcgi-запросов.
Поддержка веб разработки
Для целей веб разработки в парсер языка были добавлены следующие возможности:
1. Автоматическое определение UTF-8 BOM — это три невидимых служебных байта (EF BB BF) в начале документа с кодировкой UTF-8. Если BOM присутствует, то он не будет отправлен в выходной поток (проблема с отправкой BOM встречается, например, в скриптах на PHP, которая блокирует отправку заголовков HTTP).
2. Добавлены теги <% ... %>
и <%= ... %>
3. OS работает с двумя своими расширениями файлов: os и osh.
При использовании расширения os, парсер в начале файла активирует режим распознавания скрипта ObjectScript, т.е. это обычный скрипт OS.
При использовании osh (спроектировано специально для веб-разработки), файл начинается с выходного содержимого (т.е. то, что отправляется в output). Чтобы переключиться в режим скриптования, нужно использовать тег <%
или <%=
. Для переключения обратно в режим выходного содержимого, нужно использовать тег %>
.
Тег <%=
выводит в output следующее за ним значение, например, <%=value%>
или <%=sprintf("%.2f", num)%>
.
Также можно использовать расширения html и htm, которые обрабатываются аналогично osh. Это может быть полезно при использовании редакторов html с подсветкой синтаксиса. Для подсветки синтаксиса OS, лучше всего подходит правила подсветки синтаксиса языка JavaScript.
Первая веб страница на OS
Создадим документ index.osh в корне нашего сайта:
<!doctype html> <html> <head> <title>OS-FCGI FastCGI demo</title> </head> <body> <h1>Hello world!</h1> <h2>ObjectScript FastCGI demo</h2> <p> <% echo "Добро пожаловать!" %> </p> </body> </html>
Также можно загрузить полный репозиторий сайта objectscript.org по ссылке https://github.com/unitpoint/objectscript.org с примерами, например, core.os — стартовый скрипт для веб-приложения, буферизованный вывод, автоматическая подгрузка классов при первом использовании в коде и мн. др.
Как подключить OS-FCGI к NGINX и APACHE
Пример базового конфигурационного файла для подключения сервиса OS-FCGI к NGINX:
server { listen 80; server_name mydomain.com www.mydomain.com; root /home/myuser/mydomain.com/www; error_log /var/log/nginx/error.mydomain.com.log; access_log off; location ~ /\.ht { deny all; } location ~ /\.git { deny all; } location / { try_files $uri $uri/ /index.osh /index.os; } location ~* \.(jpg|jpeg|png|gif|swf|flv|mp4|mov|avi|wmv|m4v|mkv|ico|js|css|txt)$ { access_log off; expires 7d; } charset utf-8; location ~ ^.+\.osh? { fastcgi_split_path_info ^(.+\.osh?)(.*)$; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.osh; include fastcgi_params; fastcgi_intercept_errors on; fastcgi_ignore_client_abort on; fastcgi_read_timeout 360; } }
Пример базового конфигурационного файла для подключения сервиса OS-FCGI к APACHE:
<VirtualHost mydomain.com:80> ServerAdmin webmaster@mydomain.com DocumentRoot "/home/myuser/mydomain.com/www" ServerName mydomain.com FastCgiExternalServer "/home/myuser/mydomain.com/www" -host 127.0.0.1:9000 <Directory "/home/myuser/mydomain.com/www"> # SetHandler fastcgi-script AddHandler fastcgi-script .osh AddHandler fastcgi-script .os Options Indexes FollowSymLinks MultiViews ExecCGI AllowOverride all Order Deny,Allow Deny from all Allow from 127.0.0.1 </Directory> </VirtualHost>
Тестирование OS-FCGI на Windows
Для того, чтобы опробовать веб программирования на OS под Windows, необходимо:
1. склонировать репозиторий проекта OS-FCGI по ссылке github.com/unitpoint/os-fcgi
2. открыть в Visual Studio решение os-fcgi\win32\os-fcgi.sln
3. выбрать конфигурацию win32 или x64, скомпилировать и запустить проект os-fcgi
4. настроить веб-сервер для обработки запросов через fastcgi
После запуска os-fcgi, он будет полностью готов для обработки запросов по протоколу fastcgi на порту 9000 в однопотоковом режиме. Примечание: под linux платформы os-fcgi реализован, как сервис и работает в 8-потоком режиме.
Использование OS-FCGI под Денвером
Чтобы быстро запустить веб приложение на OS, можно воспользоваться программным пакетом Денвер.
Создать конфигурационный файл c:\WebServers\usr\local\apache\conf\extra\httpd-oscgi.conf следующего содержания:
<VirtualHost oscgi:80> ServerAdmin webmaster@oscgi DocumentRoot "c:/Sources/objectscript.org/www" ServerName oscgi FastCgiExternalServer "c:/Sources/objectscript.org/www" -host 127.0.0.1:9000 <Directory "c:/Sources/objectscript.org/www"> # SetHandler fastcgi-script AddHandler fastcgi-script .osh Options Indexes FollowSymLinks MultiViews ExecCGI AllowOverride all Order Deny,Allow Deny from all Allow from 127.0.0.1 </Directory> </VirtualHost>
Примечание: c:\WebServers — это стандартный путь при установке Денвера, нужно его заменить на ваш путь при необходимости, вместо c:/Sources/objectscript.org/www необходимо правильно прописать путь к тестовому сайту.
Отредактировать c:\WebServers\usr\local\apache\conf\httpd.conf, необходимо найти фразу: Если вы вручную хотите создать виртуальный хост и добавить подключение httpd-oscgi.conf. Пример части httpd.conf со сделанными изменениями:
# Если вы вручную хотите создать виртуальный хост со специфическими # настройками, то сделайте это сразу же после данного комментария. Include conf/extra/httpd-oscgi.conf
Теперь можно перезапустить Денвер и открыть в браузере адрес oscgi/ (только не забудьте добавить в папку сайта файл index.osh, описанный ранее).
Приветствуются коментарии, отзывы, пожелания. Удачи!
Спасибо: Игорю Богомолову за разработку cmake конфигурации и настройку сервиса os-fcgi под linux.
Другие релевантные статьи об ObjectScript:
- ObjectScript API, интеграция с C++. Часть 4: подключение пользовательских классов и функций на C++
- ObjectScript API, интеграция с C++. Часть 3: подключение модуля с функциями на C++
- ObjectScript API, интеграция с C++. Часть 2: выполнение скрипта на OS из C++
- ObjectScript API, интеграция с C++. Часть 1: работа со стеком, вызов функций OS из C++
- ObjectScript — новый язык программирования
ссылка на оригинал статьи http://habrahabr.ru/post/167387/
Добавить комментарий