Пользовательская автоматизация профессиональных...
-
Upload
alexander-gladysh -
Category
Technology
-
view
155 -
download
3
Transcript of Пользовательская автоматизация профессиональных...
Пользовательская автоматизацияпрофессиональных веб-приложений
на Lua
Александр Гладыш@agladysh
Lua in MoscowСентябрь 2016
1 / 19
Профессиональные приложения
Профессиональное приложение:
I Для профессионалов, глубоко владеющих предметной областьюI Которые в большинстве своём не айтишники
Примеры:
I CAD’ыI Приложения для управления бизнес-логикой "больших"системI Бэкофисы сложных проектовI и так далее
2 / 19
Конкретика
I ТАИС разрабатывает профессиональное ПО для гражданской авиацииI Глубокая и обширная предметная область с длинной историейI Требует профессионального обучения пользователей
3 / 19
Пользовательский интерфейс предыдущего поколения
4 / 19
Перспективный пользовательский интерфейс
5 / 19
Многослойная система
Клиент
REST-сервер
Легаси SOAP-процессор
CRS
Внешние системы
6 / 19
Поток сообщений
Пользовательская команда
Запрос REST
Запрос SOAP
...
Запросы ко внешним системам
7 / 19
Задачи
I Автоматизация редких но сложных операций пользователя-экспертаI В дальнейшем — удобное API для более широкого круга пользователей
8 / 19
Почему макросы на клиенте?
I Запускать код пользователя на сервере — головная больI Особенно если уже есть система пользовательских командI Даже если её нет — у вас же есть серверное HTTP-API, правда?
9 / 19
Почему Lua?
I JavaScript тяжело изолировать от "кишок"проектаI Lua легко изолироватьI Сам факт использования другого языка делает дизайн API чищеI Lua легче освоить непрограммистами
10 / 19
Внешний вид: редактор скриптов
11 / 19
Внешний вид: команда
12 / 19
Внешний вид: результат выполнения
13 / 19
Lua в браузере: варианты
I lua.vm.jsI moonshine.jsI lua5.1.jsI starlightI ... и многие другие.
См. также: Sailor MVC.
14 / 19
Наш стек
I lua.vm.jsI Маленькая самописная библиотека для VFSI ACE (brace)I webpack
15 / 19
Немного кодаvar LuaVM = require(’lua.vm.js’);
var execute = function(code) { return this.lua_.execute(code); };var provideModule = function(name, value) {
this.lua_._G.get("package").get("loaded").set(name, value);};
var Vm = function() { this.lua_ = new LuaVM.Lua.State(); };
Vm.prototype = {execute: execute,provideModule: provideModule,constructor: Vm
};module.exports = Vm;
16 / 19
Что дальше?
I Технически — Lua в браузере отлично работает и выполняет своизадачи.
I Главное — это удобство использования, а это уже вопрос дизайна API.
17 / 19
Вопросы?
Alexander Gladysh@agladysh
18 / 19