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

Post on 12-Apr-2017

157 Views

Category:

Technology

3 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

на 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

top related