Пользовательская автоматизация профессиональных...

18
Пользовательская автоматизация профессиональных веб-приложений на Lua Александр Гладыш @agladysh Lua in Moscow Сентябрь 2016 1 / 19

Transcript of Пользовательская автоматизация профессиональных...

Page 1: Пользовательская автоматизация профессиональных веб-приложений на Lua

Пользовательская автоматизацияпрофессиональных веб-приложений

на Lua

Александр Гладыш@agladysh

Lua in MoscowСентябрь 2016

1 / 19

Page 2: Пользовательская автоматизация профессиональных веб-приложений на Lua

Профессиональные приложения

Профессиональное приложение:

I Для профессионалов, глубоко владеющих предметной областьюI Которые в большинстве своём не айтишники

Примеры:

I CAD’ыI Приложения для управления бизнес-логикой "больших"системI Бэкофисы сложных проектовI и так далее

2 / 19

Page 3: Пользовательская автоматизация профессиональных веб-приложений на Lua

Конкретика

I ТАИС разрабатывает профессиональное ПО для гражданской авиацииI Глубокая и обширная предметная область с длинной историейI Требует профессионального обучения пользователей

3 / 19

Page 4: Пользовательская автоматизация профессиональных веб-приложений на Lua

Пользовательский интерфейс предыдущего поколения

4 / 19

Page 5: Пользовательская автоматизация профессиональных веб-приложений на Lua

Перспективный пользовательский интерфейс

5 / 19

Page 6: Пользовательская автоматизация профессиональных веб-приложений на Lua

Многослойная система

Клиент

REST-сервер

Легаси SOAP-процессор

CRS

Внешние системы

6 / 19

Page 7: Пользовательская автоматизация профессиональных веб-приложений на Lua

Поток сообщений

Пользовательская команда

Запрос REST

Запрос SOAP

...

Запросы ко внешним системам

7 / 19

Page 8: Пользовательская автоматизация профессиональных веб-приложений на Lua

Задачи

I Автоматизация редких но сложных операций пользователя-экспертаI В дальнейшем — удобное API для более широкого круга пользователей

8 / 19

Page 9: Пользовательская автоматизация профессиональных веб-приложений на Lua

Почему макросы на клиенте?

I Запускать код пользователя на сервере — головная больI Особенно если уже есть система пользовательских командI Даже если её нет — у вас же есть серверное HTTP-API, правда?

9 / 19

Page 10: Пользовательская автоматизация профессиональных веб-приложений на Lua

Почему Lua?

I JavaScript тяжело изолировать от "кишок"проектаI Lua легко изолироватьI Сам факт использования другого языка делает дизайн API чищеI Lua легче освоить непрограммистами

10 / 19

Page 11: Пользовательская автоматизация профессиональных веб-приложений на Lua

Внешний вид: редактор скриптов

11 / 19

Page 12: Пользовательская автоматизация профессиональных веб-приложений на Lua

Внешний вид: команда

12 / 19

Page 13: Пользовательская автоматизация профессиональных веб-приложений на Lua

Внешний вид: результат выполнения

13 / 19

Page 14: Пользовательская автоматизация профессиональных веб-приложений на Lua

Lua в браузере: варианты

I lua.vm.jsI moonshine.jsI lua5.1.jsI starlightI ... и многие другие.

См. также: Sailor MVC.

14 / 19

Page 15: Пользовательская автоматизация профессиональных веб-приложений на Lua

Наш стек

I lua.vm.jsI Маленькая самописная библиотека для VFSI ACE (brace)I webpack

15 / 19

Page 16: Пользовательская автоматизация профессиональных веб-приложений на Lua

Немного кода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

Page 17: Пользовательская автоматизация профессиональных веб-приложений на Lua

Что дальше?

I Технически — Lua в браузере отлично работает и выполняет своизадачи.

I Главное — это удобство использования, а это уже вопрос дизайна API.

17 / 19

Page 18: Пользовательская автоматизация профессиональных веб-приложений на Lua

Вопросы?

Alexander Gladysh@agladysh

18 / 19