пятница, 5 декабря 2014 г.

Node.js против носорога

Посвящается 30-ю JavaScript (4 декабря)!

Nashorn это JavaScript (JS) движок в Java 8 поверх JVM (Java Virtual Machine). Используя его можно писать на JS и при этом обращаться к Java объектам и библиотекам.


Но этого оказалось мало и Java сообщество решило замахнуться на Node.JS! Так родился проект Avatar.js - полная реализация Node.js на JVM.


Так, хватит теории... Давайте уже поиграемся с ними!
Мое рабочее окружение ОС Windows 8.1 с установленной JDK 8.0_25.
С сайта https://maven.java.net/content/repositories/public/com/oracle/ скачиваем:
avatar-js-0.10.32-20141204.073208-53.jar
и
libavatar-js-win-x64-0.10.32-20141126.224700-36.dll

Далее, создаем папку проекта, для примера HelloAvatar и переносим в нее наши файлы. Jar файл переименовываем в avatar-js.jar, а DLL переименовываем в avatar-js.dll.

Осталось собственно написать JS приложение, предлагаю пока воспользоваться стандартным примером по NodeJS и написать HTTP-сервер с одной страницей. Для этого создаем файл app.js  в папке проекта со следующим содержимым:

Все готово! 3-2-1-Запуск в командной консоли:

java -Djava.library.path=<полный путь к папке проекта>\HelloAvatar -jar avatar-js.jar app.js

После этого в браузере заходим по адресу: http://127.0.0.1:8000/

Все у нас NodeJS работает поверх JVM.

среда, 8 января 2014 г.

Возвращение Будулая и Магия Asterisk AGI часть 1 (обзор)



Привет мой дорогой читатель!

Сегодня в очередной раз воспользовавшись своей "цифровой памятью" в виде этого блога, очень удивился, что за прошедшие 2 года ты не забыл про меня. Да, я выпал на это долгое время из блогосферы.

За это время многое изменилось в моей жизни, кто-то ушел навсегда, кто-то появился. Теперь я отец прекрасной дочери. Еще за прошедшее время я успел сменить два места работы: небольшого провайдера, местный банк и снова вернуться в небольшую компанию. Накопилось много всего что хочется тебе рассказать, поэтому я попытаюсь найти время чтобы поделиться. Спасибо что есть!..

Магия Asterisk AGI.

Ну а начать хочется с такой интересной темы как интернет телефония. Так уж получилось, что последнее время я плотно работал VoIP-сервером Astrisk и его связке со сторонним ПО. Это не единственный, не самый производительный, но самый поддерживаемый и развитый сервер. Подробнее о нем можно прочитать тут: http://asterisk.ru/functionality.

Но нам всем всегда хочется чего-то большего, поэтому программисты придумали интерфейс управления сервером - AGI.

AGI - это встроенный в Asterisk метод выполнения внешних скриптов (по аналогии с CGI для http серверов), который может расширить функциональность asterisk при помощи других языков программирования. Таких, как: Java, .Net, Perl, PHP, C, Shell - все зависит от Вашего желания. Подробнее здесь: http://asterisk.ru/knowledgebase/Asterisk+AGI

Чтобы не быть голословным рассмотрим задачу:
- Создать систему голосового информирования пользователя о балансе на его счете.
- Информация должна предоставляться по паролю, введенному на клавиатуре телефона в тоновом режиме.
- Уже имеем развернутый сервер телефонии Asterisk
- Данные о балансе лежат в БД Oracle.

При проектировании сервиса было решено отделить приложение от "боевой базы", что-бы не плодить лишнюю нагрузку на серверах БД, поэтому в качестве кеша использовали локальный сервер-БД на основе MySQL. Выбор конечно спорный, но на тот момент это самая знакомая БД.

Сама логика выполнена в виде 2-х PHP-скриптов. Выбор аналогичен предыдущему, PHP наиболее изученный язык на тот момент. Первый это скрипт обновления данных в локальной БД из "боевой" вызываемый по крону, для связи с Oracle используем php-oci8. Второй собственно сам AGI-скрипт вызываемый Asterisk, для связи с Asterisk используем php-agi (http://phpagi.sourceforge.net/).

Важное замечание: Во время работы сервера Asterisk в режиме отладки AGI (команда: "agi set debug on" в консоли Asterisk), оказалось что сервер затрачивает значительное время общение с AGI-скриптом, в моем случае порядка минуты. При отключении отладки задержка пропадает.

Также нам понадобиться записать ряд голосовых файлов которые мы будет проигрывать абоненту. И подумать над структурой меню. На сегодня все :) продолжение следует...



Цикл статей Магия Asterisk:
Магия Asterisk AGI часть 1 (обзор)
Магия Asterisk AGI часть 2 (планируем IVR и пишем голос)
Магия Asterisk AGI часть 3 (пишем AGI-скрипты на PHP)