Программирование как способ выражения мыслей. Levon Avakyan
Я расскажу на простейших примерах как функционирует современный компьютер, какие языки программирования бывают, для чего они используются, какие парадигмы лежат в их основе. По сути, язык программирования это инструмент, с помощью которого можно рассказать машине, чего же мы от неё хотим, тем самым воплотив свои мысли.
Methods for building dialog agents and the technologies we used Grid Dynamics
Chatbots have now become an integral part of software development, which are closely related to both NLP and ML. The present report highlights the basic concepts and approaches of working with NLP by implementing dialogue agents (Intent classification, NER, Slot Filing), and you can also find out how to build an entire dialog system. No SaaS, only in-house solutions!
Программирование как способ выражения мыслей. Levon Avakyan
Я расскажу на простейших примерах как функционирует современный компьютер, какие языки программирования бывают, для чего они используются, какие парадигмы лежат в их основе. По сути, язык программирования это инструмент, с помощью которого можно рассказать машине, чего же мы от неё хотим, тем самым воплотив свои мысли.
Methods for building dialog agents and the technologies we used Grid Dynamics
Chatbots have now become an integral part of software development, which are closely related to both NLP and ML. The present report highlights the basic concepts and approaches of working with NLP by implementing dialogue agents (Intent classification, NER, Slot Filing), and you can also find out how to build an entire dialog system. No SaaS, only in-house solutions!
В очередной раз убедился, что программисты пишут программы совершенно безалаберно. И работают они не благодаря их заслугам, а благодаря удачному стечению обстоятельств и заботе разработчиков компиляторов в Microsoft или Intel. Да, да, именно они заботятся и в нужный момент подставляют костылики нашим кривобоким программкам.
Зачем тестировать? Тестирование в интерпретаторе и доктесты. Модуль unittest. Пакет py.test - на порядок лучше. Тестирование свойств и пакет hypothesis.
Declarative Internal DSLs in Lua: A Game Changing ExperienceAlexander Gladysh
The document discusses using internal domain-specific languages (DSLs) in Lua and provides examples of how to implement them. It describes loading DSL data into a tree structure, validating the data through tree traversal, and generating outputs by traversing the tree a second time. The document argues that this approach provides reusability across different DSLs and output targets with good error reporting. It also gives examples of where internal DSLs are used, such as for HTTP APIs, configuration files, databases, and visual editors.
Пользовательская автоматизация профессиональных веб-приложений на LuaAlexander Gladysh
Сложные профессиональные приложения мигрируют из десктопа в веб. Часто в них требуется предоставить пользователю возможность автоматизировать свою работу, писать «макросы». Спикер расскажет об опыте использования Lua в качестве макроязыка для профессионального веб-приложения.
A visual DSL toolkit in Lua: Past, present and futureAlexander Gladysh
This document outlines the past, present, and future of a visual domain-specific language (DSL) toolkit created in Lua. It discusses early generations of visual editors created by the author for specific domains like game dialog. The current generation toolkit allows non-programmers to visually describe control flows and outputs code or data. Areas for improvement include modernizing the UI, adding Lua support in the browser, and making the schema language more flexible. The future may include separating the schema into distinct languages for data structure, rendering output, and editor UIs.
Estos documentos proporcionan información sobre diferentes registros escolares y actas de nacimiento de entre los años 1979 y 2004 en México. Incluyen detalles sobre evaluaciones de rendimiento escolar, certificados de educación primaria, y extractos de actas que nombran a maestros, alumnos, jueces, testigos y detalles de nacimiento. Juntos, estos documentos ofrecen una perspectiva sobre cómo se registraban y evaluaban la educación y los nacimientos en el pasado.
This very short document does not contain any presentations. It simply states that there are currently no presentations available. The document provides very little information in only 3 words.
O documento fornece dicas sobre liderança e gestão de equipes. As principais ideias são: 1) criar um ambiente de trabalho divertido e positivo; 2) definir tarefas e metas específicas para a equipe; 3) premiar e apoiar os funcionários para obter bons resultados.
PUEMBO DE COTOPAXI
Una descripción fotografica del otro Puembo que existe en La Mana de la provincia de Cotopaxi. Pablo Guaña. Junta Parroquial de Puembo-Quito.
Organic Vegetable Gardening; by University of Tennessee
`
For more information, Please see websites below:
`
Organic Edible Schoolyards & Gardening with Children
http://scribd.com/doc/239851214
`
Double Food Production from your School Garden with Organic Tech
http://scribd.com/doc/239851079
`
Free School Gardening Art Posters
http://scribd.com/doc/239851159`
`
Increase Food Production with Companion Planting in your School Garden
http://scribd.com/doc/239851159
`
Healthy Foods Dramatically Improves Student Academic Success
http://scribd.com/doc/239851348
`
City Chickens for your Organic School Garden
http://scribd.com/doc/239850440
`
Simple Square Foot Gardening for Schools - Teacher Guide
http://scribd.com/doc/239851110
This is a presentation that I received from David Moosa Pidcock and here I am sharing the same with permission from David. This is an important source for anyone interested in history of wars, nature of political developments and future course of history.
1) Classon Helmet is developing an intelligent bike helmet that detects vehicles in the rider's blind spot and activates turn signals and brake lights based on body movements to improve safety and visibility.
2) The helmet aims to become the largest producer of high-quality helmets in Pakistan by successfully integrating modern technology and design.
3) Key features include blind spot detection using cameras, intuitive turn signals activated by hand gestures, automatic brake lights when slowing down, and guided navigation via a connected smartphone app.
This short document contains three letters - x, y, and z. The letters are arranged with x and z surrounding y in the first line, and y and z surrounding x in the second line. The document switches the positions of x and y between the two lines.
The document discusses strategies for mitigating climate change through more sustainable consumption, production, and transport patterns. It advocates adopting faith-based personal responses like daily prayer, which can transform fossil fuel-intensive leisure activities and greenhouse gas emissions. Interfaith teachings share common values like charity, family, and prayer that could unite efforts for ecological sustainability if promoted simultaneously worldwide. An ecologically sustainable economy requires interest-free public banking, renewable resources, just distribution, and energy independence.
В очередной раз убедился, что программисты пишут программы совершенно безалаберно. И работают они не благодаря их заслугам, а благодаря удачному стечению обстоятельств и заботе разработчиков компиляторов в Microsoft или Intel. Да, да, именно они заботятся и в нужный момент подставляют костылики нашим кривобоким программкам.
Зачем тестировать? Тестирование в интерпретаторе и доктесты. Модуль unittest. Пакет py.test - на порядок лучше. Тестирование свойств и пакет hypothesis.
Declarative Internal DSLs in Lua: A Game Changing ExperienceAlexander Gladysh
The document discusses using internal domain-specific languages (DSLs) in Lua and provides examples of how to implement them. It describes loading DSL data into a tree structure, validating the data through tree traversal, and generating outputs by traversing the tree a second time. The document argues that this approach provides reusability across different DSLs and output targets with good error reporting. It also gives examples of where internal DSLs are used, such as for HTTP APIs, configuration files, databases, and visual editors.
Пользовательская автоматизация профессиональных веб-приложений на LuaAlexander Gladysh
Сложные профессиональные приложения мигрируют из десктопа в веб. Часто в них требуется предоставить пользователю возможность автоматизировать свою работу, писать «макросы». Спикер расскажет об опыте использования Lua в качестве макроязыка для профессионального веб-приложения.
A visual DSL toolkit in Lua: Past, present and futureAlexander Gladysh
This document outlines the past, present, and future of a visual domain-specific language (DSL) toolkit created in Lua. It discusses early generations of visual editors created by the author for specific domains like game dialog. The current generation toolkit allows non-programmers to visually describe control flows and outputs code or data. Areas for improvement include modernizing the UI, adding Lua support in the browser, and making the schema language more flexible. The future may include separating the schema into distinct languages for data structure, rendering output, and editor UIs.
Estos documentos proporcionan información sobre diferentes registros escolares y actas de nacimiento de entre los años 1979 y 2004 en México. Incluyen detalles sobre evaluaciones de rendimiento escolar, certificados de educación primaria, y extractos de actas que nombran a maestros, alumnos, jueces, testigos y detalles de nacimiento. Juntos, estos documentos ofrecen una perspectiva sobre cómo se registraban y evaluaban la educación y los nacimientos en el pasado.
This very short document does not contain any presentations. It simply states that there are currently no presentations available. The document provides very little information in only 3 words.
O documento fornece dicas sobre liderança e gestão de equipes. As principais ideias são: 1) criar um ambiente de trabalho divertido e positivo; 2) definir tarefas e metas específicas para a equipe; 3) premiar e apoiar os funcionários para obter bons resultados.
PUEMBO DE COTOPAXI
Una descripción fotografica del otro Puembo que existe en La Mana de la provincia de Cotopaxi. Pablo Guaña. Junta Parroquial de Puembo-Quito.
Organic Vegetable Gardening; by University of Tennessee
`
For more information, Please see websites below:
`
Organic Edible Schoolyards & Gardening with Children
http://scribd.com/doc/239851214
`
Double Food Production from your School Garden with Organic Tech
http://scribd.com/doc/239851079
`
Free School Gardening Art Posters
http://scribd.com/doc/239851159`
`
Increase Food Production with Companion Planting in your School Garden
http://scribd.com/doc/239851159
`
Healthy Foods Dramatically Improves Student Academic Success
http://scribd.com/doc/239851348
`
City Chickens for your Organic School Garden
http://scribd.com/doc/239850440
`
Simple Square Foot Gardening for Schools - Teacher Guide
http://scribd.com/doc/239851110
This is a presentation that I received from David Moosa Pidcock and here I am sharing the same with permission from David. This is an important source for anyone interested in history of wars, nature of political developments and future course of history.
1) Classon Helmet is developing an intelligent bike helmet that detects vehicles in the rider's blind spot and activates turn signals and brake lights based on body movements to improve safety and visibility.
2) The helmet aims to become the largest producer of high-quality helmets in Pakistan by successfully integrating modern technology and design.
3) Key features include blind spot detection using cameras, intuitive turn signals activated by hand gestures, automatic brake lights when slowing down, and guided navigation via a connected smartphone app.
This short document contains three letters - x, y, and z. The letters are arranged with x and z surrounding y in the first line, and y and z surrounding x in the second line. The document switches the positions of x and y between the two lines.
The document discusses strategies for mitigating climate change through more sustainable consumption, production, and transport patterns. It advocates adopting faith-based personal responses like daily prayer, which can transform fossil fuel-intensive leisure activities and greenhouse gas emissions. Interfaith teachings share common values like charity, family, and prayer that could unite efforts for ecological sustainability if promoted simultaneously worldwide. An ecologically sustainable economy requires interest-free public banking, renewable resources, just distribution, and energy independence.
Global entry strategies global p s of marketingSourav Karmakar
The document discusses a global entry strategies project team consisting of Novika Chada, Justin Raj, Soma Roys, and Sunit Kumar. It introduces the global P's of marketing as it relates to market entry strategies, including planning, producing, promoting, and perfecting. It also briefly outlines some common foreign market entry methods such as foreign direct investment, franchising, and licensing.
The document discusses the magazine "Cornwall Life" and its effective use of regional identity and imagery from Cornwall to appeal to both residents and tourists. It analyzes design elements like the cover image featuring surfers and coastal scenery, varied colored cover lines, and inclusion of contributor profiles. While the large masthead size overshadows the title somewhat, images and layouts on the contents pages and spreads help communicate the magazine's lifestyle focus around Britain's coastline.
El documento trata sobre el conocimiento pedagógico y menciona conceptos como juego, actividades de cooperación y oposición, formación colaborativa e integral, inclusión, constructivismo, asignación de tareas y conocimiento recíproco para promover la exploración.
Тренинг GLPK, часть 1: Модель планирования производстваGleb Zakhodiakin
Первая часть тренинга по решению задач оптимизации в пакете GLPK. В презентации рассматриваются основные компоненты оптимизационной модели и их реализация на языке MathProg на примере задачи планирования производства. Рассматриваются автоматически формируемые отчеты по решению.
C++ CoreHard Autumn 2018. Что не умеет оптимизировать компилятор - Александр ...corehard_by
Все мы знаем, что компиляторы в настоящее время достаточно умные. И нам как программистам зачастую не нужно думать о каких-то незначительных оптимизациях - мы полагаемся на оптимизации компилятора. Что ж, настало время выяснить, действительно ли настолько компиляторы умны и узнать, в каких местах программист всё же (может быть) умнее.
Теория языков программирования некоторые слайды к лекциямSergey Staroletov
Теория языков программирования (немного об интерпретаторах, триадах, оптимизации, парсерах и прочее)
Compilers construction some lectures of whole course, it covers some methods on interpreters, optimisations, antlr, dsl (introduction)
Промышленный подход к тюнингу PostgreSQL: эксперименты над базами данныхNikolay Samokhvalov
Shared_buffers = 25% – это много или мало? Или в самый раз? Как понять, подходит ли эта – довольно устаревшая – рекомендация в вашем конкретном случае?
Пришло время подойти к вопросу подбора параметров postgresql.conf "по-взрослому". Не с помощью слепых "автотюнеров" или устаревших советов из статей и блогов, а на основе:
строго выверенных экспериментов на БД, производимых автоматизированно, в больших количествах и в условиях, максимально приближенных к "боевым",
глубокого понимания особенностей работы СУБД и ОС.
Используя Nancy CLI (https://gitlab.com/postgres.ai/nancy), мы рассмотрим конкретный пример – пресловутые shared_buffers – в разных ситуациях, в разных проектах и попробуем разобраться, как же подобрать оптимальную настройку для нашей инфраструктуры, БД и нагрузки.
https://pgconf.ru/2019/242809
08.11 SEMPRO Club - Влад Моргун - Цвет настроения серыйVladislav Morgun
SEO Team-lead в ЛУН & Flatfy. Куратор курса «Product SEO» в Projector. SEO-консультант
Серое SEO - баланс во вселенной.
Сын маминой подруги автоматизирует процессы. А вы?
Продвижение по белому, где все по чёрному.
Что делать, чтобы Google не укусил за бочок?
Как вам такое?
8-го ноября на Sempro.Club мы посмотрим на Google, как на продукт и узнаем как создать синергию между поиском и Вашим проектом. Обсудим цели и ограничения поисковых систем. Вектор их развития. Рассмотрим примеры поисковой оптимизации направленной на продукт и пользователя с использованием "серых" техник. Поделимся наработками по автоматизации процессов.
У нас в гостях Владислав Моргун SEO Team-lead в ЛУН & Flatfy. Вы знаете еще кого-то, кто имеет опыт продвижения долгосрочных белых проектов на 37+ стран?
Мероприятие Must know для SEO-специалистов, которые работают в продуктовых компаниях. Junior/Middle SEO.
This document summarizes best practices for designing a REST API, including making the API easy to use, read, and extend. It provides real-world examples and discusses tools for documentation, validation, and JSON generation. Key recommendations include using nouns for resources, explicit versioning, token-based or OAuth authentication, and representing resources as complete URLs.
SQLAlchemy is a Python SQL toolkit and object relational mapper that allows developers to work with relational databases in Python. It provides a way to generate SQL expressions programmatically and functions as an object relational mapper, allowing Python classes to be mapped to database tables. SQLAlchemy aims to provide a full suite of tools for working with relational databases directly or via an object-relational abstraction layer.
Александр Гладыш — Visual editor for business logic in Lua and JS
1. Опыт создания
визуальных редакторов бизнес-логики
для непрограммистов
на Lua и JavaScript
Александр Гладыш
LogicEditor.com, CTO
ag@logiceditor.com
2. Что такое «бизнес-логика»?
● Бизнес-логика — совокупность правил,
принципов, зависимостей поведения
объектов предметной области.
● Иначе можно сказать, что бизнес-логика —
это реализация правил и ограничений
автоматизируемых операций.
— Wikipedia
4. Как пишется бизнес-логика?
Классика:
→ Придумали
→ Поставили в план программистам
→ Программисты добрались до тикета,
поругались, что-то написали
→ Потестировали, поняли, что всё не так
→ Поставили в план программистам доработки
→ ...и так ad nauseam
5. Как пишется бизнес-логика?
Выделенный программист:
→ Придумали
→ Объяснили задачу программисту
→ Программист «сразу» написал код
→ Потестировали, попросили поправить
→ ...и так ad nauseam
6. Как хочется писать бизнес-логику?
→ Сам придумал
→ Сам реализовал
→ Сразу протестировал
→ Поправил как надо
→…
→ PROFIT!!!
8. «Почему гейм-дизайнеры
— не программисты?»
Профессиональные программисты, помимо
навыков составления алгоритмов и их
реализации ещё, как минимум, имеют:
● Технические знания об используемой
системе
● Навыки отладки
● Навыки командной работы с кодом
9. Что делать?
● Требуется средство работы с бизнес-
логикой, которое будет прощать
технические ошибки, а, лучше, не давать
их совершать.
● При этом это средство должно, по
возможности, минимально ограничивать
свободу творчества пользователя.
10. Типичные решения
● Пустить пользователя в базу
● Дать ему писать XML
● Сделать ему бэкофис — админку
11. Недостаточно гибко!
Рано или поздно любая попытка
абстрагирования логики в данные
растягивается слишком сильно
и лопается.
12. Нужен редактор бизнес-логики!
Редактируем всю «логику» (алгоритм),
а не только «данные» (параметры алгоритма)
При этом нужно обеспечить:
● приемлемую кривую обучения;
● приемлемую сложность работы;
● доступную сложность разработки и поддержки, т. е.
адекватную гибкость решения.
19. Как это решали мы?
Краткая ретроспектива
шести поколений идеи
В каждом случае реализация была сделана мной и / или моими коллегами
полностью с нуля, включая графику, для разных заказчиков / работодателей.
Повторно использовалась и развивалась только общая идея о том,
как это должно работать.
20. Редактор видео-квестов
(Увы, скриншота не осталось)
Грубо:
Граф из реплик диалогов с возможностью
привязывать к ним видеоряд.
~2002–2004, достался в наследство
24. Анализ
● Кто-то предпочитает псевдо-естественный текст,
кто-то — блок-схемы.
● Все редакторы принесли существенную пользу.
● Некоторые оказались абсолютно незаменимы.
● В ретроспективе ясно, что вместо работы над
некоторыми следовало нанять скрипторов.
● Ни один из редакторов первых шести поколений не
оказался достаточно гибким, чтобы выйти за рамки
конкретной технологии (движка или даже игры). Но
такая задача и не ставилась.
27. Цели
● Минимальная стоимость создания новых
редакторов.
● Минимальный порог внедрения в «любой» проект
на «любой» технологии, даже сторонний.
● Минимальная стоимость поддержки вновь
созданных редакторов.
● Достаточная простота освоения и эксплуатации
этих редакторов их пользователями.
28. «No silver bullet»
Даже если вы собираете ваши domain-
specific редакторы при помощи идеального
сферического тулкита в вакууме, который
закрывает любые технические вопросы,
вам всё равно нужно ломать голову над
юзабилити каждого конкретного
редактора!
29. Природа данных редактора
Редактор работает с деревом Control Flow
На основе этого дерева «рендерятся»
(генерируются):
● UI редактора (у нас — DHTML,
псевдоестественный текст).
● Конечные данные (код!), с которым работает
приложение, для которого сделан редактор.
И то и другое — структурированный
текст.
30. Дерево
Если параметр Мана > 100, то
Нанести урон параметр Мана / 3, цель: оппонент
● Условие
● Булево выражение
– «>»
● Получить значение параметра
– «Мана»
● «100»
● Список действий
– Действие
● Нанести урон по цели
– «/»
● Получить значение параметра
● «Мана»
● «3»
– «Оппонент»
31. Конечные данные
для нашего примера
Если параметр Мана > 100, то
Нанести урон параметр Мана / 3, цель: оппонент
if self:get_param(MANA) > 100 then
self:deal_damage_to(
self:get_param(MANA) / 3,
self:get_opponent()
)
end
32. Типы нод
Если параметр Мана > 100, то
Нанести урон параметр Мана / 3, цель: оппонент
● Если (Boolean), то (ActionList) → Root
● (Action) [, …, (Action)] → ActionList
● (Number) > (Number) → Boolean
● Параметр (ParamID) → Number
● Мана → ParamID
● (Пользовательская константа) → Number
● Нанести урон (Number), цель: (Target) → Action
● (Number) / (Number) → Number
● Оппонент → Target
33. «Схема»
● Выделенные нами типы нод (плюс
информация о том, какой тип — корневой)
определяют правила конструирования
дерева данных редактора.
● Будем называть полный набор типов нод
для конкретного редактора логики схемой
(данных) этого редактора.
34. Схема — фундамент для всех
манипуляций с деревом данных
● Валидация дерева данных (проверка на соответствие
схеме).
● Дефолтные значения («новый документ» и добавление
новых элементов в старый).
● Правила генерации UI и конечных данных.
● Правила работы UI с деревом данных.
35. Манипуляции с деревом данных
в редакторе
● Создать новый документ
● Добавить потомка
● Удалить потомка
● Заменить потомка
● Переставить потомков местами
36. Допустимость манипуляций
● Допустимость выполнения той или иной манипуляции
для каждой ноды напрямую зависит от того, что можно
делать с прямыми потомками (первого уровня) ноды
данного типа:
● в списке действий можно поменять элементы
местами или изменить их количество;
● а вот поменять в условии список действий и булево
выражение или же совсем удалить булево
выражение — уже нельзя.
37. Классификация типов нод
● Классифицируем типы нод по тому, как ведут
себя их прямые потомки.
● Для краткости будем называть «класс типа
ноды» «метатипом».
● Для ясности, будем вместо «тип ноды»
говорить «конкретный тип ноды».
38. Метатипы
Для простоты выберем следующий набор метатипов:
● literal,
● value,
● list,
● record,
● variant.
Если допустить введение «промежуточных» фиктивных
нод, при помощи типов, основанных на этом наборе
метатипов можно описать практически любую требуемую
схему дерева. (Например, list of records of values =
dictionary of values, variant of literals = enum.)
39. Literal
Если параметр Мана > 100, то
Нанести урон параметр Мана / 3, цель: оппонент
● В примере: «оппонент», «Мана».
● Нет потомков.
● Нельзя редактировать.
● В конечных данных — константная строка.
40. Value
Если параметр Мана > 100, то
Нанести урон параметр Мана / 3, цель: оппонент
● В примере: «100», «3».
● Нет потомков.
● В редакторе пользователь задаёт конкретное
значение для каждой ноды.
● В конечные данные попадает значение,
заданное пользователем (возможно,
предварительно обработанное и в обрамлении
какого-то текста).
41. List
Если параметр Мана > 100, то
Нанести урон параметр Мана / 3, цель: оппонент
● В примере: список действий (с единственным элементом
— «нанести урон»).
● «Произвольное» число потомков одного,
фиксированного конкретного типа.
● Пользователь может менять число потомков, заменять
их, переставлять местами.
● В конечные данные попадают склеенные один за одним
значения (с сохранением порядка; возможно, через
разделитель и с дополнительным текстом до и после).
42. Record
Если параметр Мана > 100, то
Нанести урон параметр Мана / 3, цель: оппонент
● В примере: «если..., то», «параметр», «нанести урон
…, цель», «>», «/».
● Фиксированное число потомков заданных
конкретных типов.
● Конфигурацию прямых потомков нельзя
редактировать
● В конечные данные потомки подставляются в
заранее определённом порядке (возможно, с каким-
то текстом до, после и между ними).
43. Variant
Если параметр Мана > 100, то
Нанести урон параметр Мана / 3, цель: оппонент
● В примере: булева операция в «если / то», численная
операция — величина наносимого урона. (Не были
детализованы на слайдах с примерами.)
● Один потомок, конкретный тип которого входит в заранее
заданный набор.
Пользователь может редактировать конкретный тип потомка.
● В конечные данные подставляются данные потомка
(возможно, в обрамлении какого-то текста).
44. Генерация конкретных данных
и UI редактора
И то и другое — структурированный текст.
Для его генерации:
● Обходим дерево данных снизу вверх.
● Получаем конкретный тип и метатип ноды.
● Текст для листовых нод известен сразу.
● Для нелистовых нод подставляем текст
потомков в шаблон текста этой ноды.
45. Текстовые шаблоны для нод
Если параметр Мана > 100, то
Нанести урон параметр Мана / 3, цель: оппонент
Упрощённо, для редактора:
● Record: Если ${1}, то<br> ${2}
● List: Ноды списка действий склеиваем через <br>
● Record: ${1} > ${2}
● Record: Параметр ${1}
● Literal: Мана
● Value: ${1}
● Record: Нанести урон ${1}, цель: ${2} → Action
● Record: ${1} / ${2} → Number
● Literal: Оппонент → Target
46. Создание конкретного редактора
● Описываем схему данных (на Lua-based DSL)
● Из неё генерируем (на Lua):
● Валидатор данных (на Lua, на JavaScript)
● Генератор дефолтных данных (на JavaScript)
● Код редактирования (на JavaScript)
● Код генерации конкретных данных (на Lua)
● …
● PROFIT!!!
47. Почему Lua?
Хорошая поддержка «встроенных» декларативных DSL-ей:
schema:literal "boolean.true"
{
editor:ui [[True]]
{
"<b>True</b>";
description = [[<i><b>True</b></i><br>
<hr>
The boolean constant <i><b>True</b></i>
]];
};
render:data
{
"true";
};
}
48. Почему Lua?
Хорошая поддержка Sandboxing'а.
При должной подготовке можно не бояться
работать с данными из недоверенных
источников.
Если аккуратно писать схему, то и
получившийся в результате код тоже можно
запускать безбоязненно.
50. За рамками доклада остались
● Схема второго ● Опциональные
уровня потомки
● Устойчивость ● Подходы к
данных к интеграции
изменениям схемы конечных данных в
● Области видимости приложения
● Внешние и
● Много-много мелких
внутренние фичей для тюнинга
источники данных UI.