SlideShare uma empresa Scribd logo
1 de 65
Baixar para ler offline
DSL для правил валидации
Алексей Букуров
Старший инженер-программист
HWdTech, LLC
Мы не хотим лекций в субботу
2
DSL на коленке
Евгений Тюменцев
Директор
HWdTech, LLC
3
Проблемы
❏ Валидация данных
4
Проблемы
❏ Валидация данных
❏ Валидация данных
5
Проблемы
❏ Валидация данных
❏ Валидация данных
❏ Валидация данных
6
❏ Унифицировать механизм валидации
Задача
7
Валидация на основе метаописания
8
...
validators: [{
method: 'lte',
message: 'Field foo should be less than 10',
value: 10
}]
...
Реализовать DSL
❏ Математические операции
❏ Логические операции
❏ Функции
❏ Переменные
9
Готовые решения?
❏ math-expression-evaluator
❏ mathjs
❏ angular-expressions
❏ expressions-js
❏ expression-paser
10
math-expression-evaluator
Чрезвычайно эффективный, гибкий и потрясающий
парсер для математических выражений в Javascript
http://redhivesoftware.github.io/math-expression-evaluator
120,205 downloads in the last day
640,123 downloads in the last week
2,390,992 downloads in the last month
One open issues on GitHub
No open pull requests on GitHub
11
Достоинства
❏ Популярность (2,390,992 скачиваний в месяц)
❏ Работа с математическими выражениями
❏ Расширяемость
❏ Размер библиотеки ~13Kb
❏ Документация
12
Недостатки
❏ Не поддерживает логических выражений
13
mathjs
Math.js - библиотека для JavaScript и Node.js.
Включает в себя гибкий анализатор выражений с
поддержкой символьных вычислений, поставляется
с большим набором встроенных функций и констант
http://mathjs.org
3,432 downloads in the last day
16,779 downloads in the last week
68,277 downloads in the last month
87 open issues on GitHub
10 open pull requests on GitHub
14
Достоинства
❏ Популярность (68,277 скачиваний в месяц)
❏ Работа с математическими и логическими выражениями
❏ Расширяемость
❏ Документация
15
Недостатки
❏ Внушительный размер библиотеки ~150Kb
16
angular-expressions
Лучшая часть Angular, вынесенная в отдельный
модуль
www.npmjs.com/package/angular-expressions
66 downloads in the last day
478 downloads in the last week
1,606 downloads in the last month
3 open issues on GitHub
No open pull requests on GitHub
17
Достоинства
❏ Популярность (1,606 скачиваний в месяц)
❏ Работа с математическими выражениями и фильтрами
❏ Размер библиотеки ~13.5Kb
18
Недостатки
❏ Не поддерживает логических выражений
❏ Отсутствие расширяемости функционала
19
expressions-js
Преобразует строковые выражения в исполняемые
функции JavaScript
www.npmjs.com/package/expressions-js
3 downloads in the last day
66 downloads in the last week
325 downloads in the last month
2 open issues on GitHub
No open pull requests on GitHub
20
Достоинства
❏ Работа с математическими и логическими выражениями
❏ Расширяемость
❏ Размер библиотеки ~8.5Kb
21
Недостатки
❏ Реализован на регулярных выражениях
22
expression-parser
Парсер математических выражений, со встроенным
компилятором для создания исполняемых функций
в JavaScript
www.npmjs.com/package/expression-parser
1 downloads in the last day
7 downloads in the last week
70 downloads in the last month
2 open issues on GitHub
No open pull requests on GitHub
23
Достоинства
❏ Работа с математическими выражениями
❏ Расширяемость
24
Недостатки
❏ Не поддерживает логических выражений
❏ Размер библиотеки ~26Kb
25
morph-expressions
Чрезвычайно эффективный и гибкий парсер
математических и/или логических выражение для
JavaScript.
www.npmjs.com/package/morph-expressions
26
Использование
import Parser from 'morph-expressions';
const parser = new Parser();
const compiled = parser.parse('1 + 1');
compiled.eval(); // returns 2
27
Переменные
const compiled = parser.parse('x + 1 - y == 0');
compiled.identifiers; // ['x', 'y']
compiled.eval({ x: 2, y: 3 }); // true
parser.parseAndEval('x + 1 - y == 0', { x: 2, y: 3 });
28
Функции и вычислимые поля
parser.registerFunction('sqr', val => val * val);
parser.registerProperty('foo', () => 'bar');
parser.registerProperty('now', () => new Date());
parser.parseAndEval('sqr(sqr(x))', { x: 2 }); // 16
parser.parseAndEval('foo'); // ‘bar’
parser.parseAndEval('now'); // Wed Feb 04 2015 12:00:00
29
Валидация площади квартиры
parser.registerFunction('SUM', (l, r) => l + r);
parser.parseAndEval('SUM(kitchen, living) <= total', {
total: 40,
kitchen: 10,
living: 30
});
30
Валидация почтового кода
parser.registerFunction('ZIP_CODE', c => /d{6}/.test(c));
parser.parseAndEval('ZIP_CODE(code)', { code: 644106 });
31
Можно? Можно всё!
32
❏ Кириллица?
❏ Пароль?
❏ Проверка возраста?
Ближайшие планы
❏ Возможность расширение с помощью плагинов
❏ Плагин для Excel функций
33
Выводы
❏ Сокращение рутинной работы
34
Генератор форм
Игорь Циглер
Инженер-программист
HWdTech, LLC
Написать несколько тысяч форм для ввода данных
Задача
36
Проблемы
❏ Много форм
37
Проблемы
❏ Много форм
❏ Контейнеры
38
Проблемы
❏ Много форм
❏ Контейнеры
❏ Валидация данных
39
Проблемы
❏ Много форм
❏ Контейнеры
❏ Валидация данных
❏ Сложноподчиненные поля
40
Проблемы
❏ Много форм
❏ Контейнеры
❏ Валидация данных
❏ Сложноподчиненные поля
❏ Вычислимые поля
41
JSON Form
❏ Валидация только по значению текущего поля
42
Репозиторий: git.io/vDO2D
JSON Form
❏ Валидация только по значению текущего поля
❏ Нет сложноподчиненных полей
43
Репозиторий: git.io/vDO2D
JSON Form
❏ Валидация только по значению текущего поля
❏ Нет сложноподчиненных полей
❏ Нет вычислимых полей
44
Репозиторий: git.io/vDO2D
JSON Form
❏ Валидация только по значению текущего поля
❏ Нет сложноподчиненных полей
❏ Нет вычислимых полей
❏ Не поддерживается с 2014 года
45
Репозиторий: git.io/vDO2D
JSON Form
❏ Валидация только по значению текущего поля
❏ Нет сложноподчиненных полей
❏ Нет вычислимых полей
❏ Не поддерживается с 2014 года
❏ Устаревшие зависимости
46
Репозиторий: git.io/vDO2D
47
48
49
50
Smartforms
"form": {
"email": { "block": "input" },
"пароль": {
"block": "input",
"type": "password"
}
},
"schema": ["email", "пароль"]
51
Контейнеры
"schema": [{
"block": "container",
"items": [
"email",
"пароль"
]
}]
52
Таблицы
53
"schema": [{
"block": "fieldset",
"items": [
"Адрес", "Дом",
"Корпус", "Квартира"
],
"layout": [
1,
3
]
}]
Таблицы
54
"schema": [{
"block": "fieldset",
"items": [
"Адрес", "Дом",
"Корпус", "Квартира"
],
"layout": [
1,
[6, 3, 3]
]
}]
Списки
55
"schema": [{
"block": "list",
"items": [
"email",
"пароль"
],
"layout": 1
}]
Списки
56
Динамические контейнеры
57
Апробация morph-expressions на smartforms
Библиотека для создания форм и
модальных окон с формами по
метаописанию
58
Для чего будем использовать DSL?
❏ Валидация
❏ Сложноподчиненные поля
❏ Вычислимые поля
59
Валидация данных
"validationRules": [
{
"rule": "1 <= длина и длина <= 4 и число",
"errorMessage": "...",
"isGlobalError": false
}
]
60
Пример регистрации свойств
parser.registerProperty('длина', scope => {
const value = scope[scope.fieldName] || '';
return value.length;
});
61
Сложноподчиненные поля
"Номер телефона": {
"dependencies": "Тип == ’По номеру телефона’",
"placeholder": "+7 (3822) ______"
"block": "text"
}
62
Вычислимые поля
63
"Сумма": {
"block": "text",
"label": "Сумма"
},
"Комиссия": {
"block": "static",
"calculationRule": "Сумма * 0.05"
}
Спасибо за внимание!
64
❏ hwdtech.ru/smartforms
❏ vk.com/hwdtech
Валидация пароля
65

Mais conteúdo relacionado

Mais procurados

Gradle Introduction
Gradle IntroductionGradle Introduction
Gradle IntroductionKirill Rozov
 
Быстрое развёртывание шаблонов и статики в Mail.ru, Николай Кондратов
Быстрое развёртывание шаблонов и статики в Mail.ru, Николай КондратовБыстрое развёртывание шаблонов и статики в Mail.ru, Николай Кондратов
Быстрое развёртывание шаблонов и статики в Mail.ru, Николай КондратовFuenteovejuna
 
Девять кругов ада или PostgreSQL Vacuum / Алексей Лесовский (PostgreSQL-Consu...
Девять кругов ада или PostgreSQL Vacuum / Алексей Лесовский (PostgreSQL-Consu...Девять кругов ада или PostgreSQL Vacuum / Алексей Лесовский (PostgreSQL-Consu...
Девять кругов ада или PostgreSQL Vacuum / Алексей Лесовский (PostgreSQL-Consu...Ontico
 
Отладка производительности СУБД MySQL
Отладка производительности СУБД MySQLОтладка производительности СУБД MySQL
Отладка производительности СУБД MySQLSveta Smirnova
 
Hacking PostgreSQL. Обзор исходного кода
Hacking PostgreSQL. Обзор исходного кодаHacking PostgreSQL. Обзор исходного кода
Hacking PostgreSQL. Обзор исходного кодаAnastasia Lubennikova
 
Компиляция скриптов PHP. Алексей Романенко
Компиляция скриптов PHP. Алексей РоманенкоКомпиляция скриптов PHP. Алексей Романенко
Компиляция скриптов PHP. Алексей РоманенкоFuenteovejuna
 
Мониторинг и отладка MySQL: максимум информации при минимальных потерях
Мониторинг и отладка MySQL: максимум информации при минимальных потеряхМониторинг и отладка MySQL: максимум информации при минимальных потерях
Мониторинг и отладка MySQL: максимум информации при минимальных потеряхSveta Smirnova
 
Семь тысяч Rps, один go
Семь тысяч Rps, один goСемь тысяч Rps, один go
Семь тысяч Rps, один goBadoo Development
 
Профессиональная разработка в суровом Enterprise
Профессиональная разработка в суровом EnterpriseПрофессиональная разработка в суровом Enterprise
Профессиональная разработка в суровом EnterpriseAlexander Granin
 
Автоматизация тестирования клиентской производительности / Николай Лавлинский...
Автоматизация тестирования клиентской производительности / Николай Лавлинский...Автоматизация тестирования клиентской производительности / Николай Лавлинский...
Автоматизация тестирования клиентской производительности / Николай Лавлинский...Ontico
 

Mais procurados (11)

Gradle Introduction
Gradle IntroductionGradle Introduction
Gradle Introduction
 
Быстрое развёртывание шаблонов и статики в Mail.ru, Николай Кондратов
Быстрое развёртывание шаблонов и статики в Mail.ru, Николай КондратовБыстрое развёртывание шаблонов и статики в Mail.ru, Николай Кондратов
Быстрое развёртывание шаблонов и статики в Mail.ru, Николай Кондратов
 
105
105105
105
 
Девять кругов ада или PostgreSQL Vacuum / Алексей Лесовский (PostgreSQL-Consu...
Девять кругов ада или PostgreSQL Vacuum / Алексей Лесовский (PostgreSQL-Consu...Девять кругов ада или PostgreSQL Vacuum / Алексей Лесовский (PostgreSQL-Consu...
Девять кругов ада или PostgreSQL Vacuum / Алексей Лесовский (PostgreSQL-Consu...
 
Отладка производительности СУБД MySQL
Отладка производительности СУБД MySQLОтладка производительности СУБД MySQL
Отладка производительности СУБД MySQL
 
Hacking PostgreSQL. Обзор исходного кода
Hacking PostgreSQL. Обзор исходного кодаHacking PostgreSQL. Обзор исходного кода
Hacking PostgreSQL. Обзор исходного кода
 
Компиляция скриптов PHP. Алексей Романенко
Компиляция скриптов PHP. Алексей РоманенкоКомпиляция скриптов PHP. Алексей Романенко
Компиляция скриптов PHP. Алексей Романенко
 
Мониторинг и отладка MySQL: максимум информации при минимальных потерях
Мониторинг и отладка MySQL: максимум информации при минимальных потеряхМониторинг и отладка MySQL: максимум информации при минимальных потерях
Мониторинг и отладка MySQL: максимум информации при минимальных потерях
 
Семь тысяч Rps, один go
Семь тысяч Rps, один goСемь тысяч Rps, один go
Семь тысяч Rps, один go
 
Профессиональная разработка в суровом Enterprise
Профессиональная разработка в суровом EnterpriseПрофессиональная разработка в суровом Enterprise
Профессиональная разработка в суровом Enterprise
 
Автоматизация тестирования клиентской производительности / Николай Лавлинский...
Автоматизация тестирования клиентской производительности / Николай Лавлинский...Автоматизация тестирования клиентской производительности / Николай Лавлинский...
Автоматизация тестирования клиентской производительности / Николай Лавлинский...
 

Destaque

Problemario de Álgebra Lineal
Problemario de Álgebra LinealProblemario de Álgebra Lineal
Problemario de Álgebra LinealJuliho Castillo
 
Le service relais by easy relay
Le service relais by easy relayLe service relais by easy relay
Le service relais by easy relayEasyRelay
 
Cuadro comparativo linux, windows y android
Cuadro comparativo linux, windows y androidCuadro comparativo linux, windows y android
Cuadro comparativo linux, windows y androidSthefy Zavala
 
«Взломать за 60 секунд», Артем Кулаков, Redmadrobot
«Взломать за 60 секунд», Артем Кулаков, Redmadrobot«Взломать за 60 секунд», Артем Кулаков, Redmadrobot
«Взломать за 60 секунд», Артем Кулаков, RedmadrobotMail.ru Group
 
Drenajes Pélvicos Transgenital, Transrectal y Percutáneo
Drenajes Pélvicos Transgenital, Transrectal y PercutáneoDrenajes Pélvicos Transgenital, Transrectal y Percutáneo
Drenajes Pélvicos Transgenital, Transrectal y PercutáneoUro Woller
 
Libro la geometría euclidiana como generatriz de la forma en la arquitectura ...
Libro la geometría euclidiana como generatriz de la forma en la arquitectura ...Libro la geometría euclidiana como generatriz de la forma en la arquitectura ...
Libro la geometría euclidiana como generatriz de la forma en la arquitectura ...Gusstock Concha Flores
 
кри 2014 elastic search рациональный подход к созданию собственной системы а...
кри 2014 elastic search  рациональный подход к созданию собственной системы а...кри 2014 elastic search  рациональный подход к созданию собственной системы а...
кри 2014 elastic search рациональный подход к созданию собственной системы а...Vyacheslav Nikulin
 
Использование Elasticsearch для организации поиска по сайту
Использование Elasticsearch для организации поиска по сайтуИспользование Elasticsearch для организации поиска по сайту
Использование Elasticsearch для организации поиска по сайтуOlga Lavrentieva
 
Tratamiento de Padecimientos Crónicos de la Vejiga
Tratamiento de Padecimientos Crónicos de la VejigaTratamiento de Padecimientos Crónicos de la Vejiga
Tratamiento de Padecimientos Crónicos de la VejigaUro Woller
 
2013-02-02 03 Голушко. Полнотекстовый поиск с Elasticsearch
2013-02-02 03 Голушко. Полнотекстовый поиск с Elasticsearch2013-02-02 03 Голушко. Полнотекстовый поиск с Elasticsearch
2013-02-02 03 Голушко. Полнотекстовый поиск с ElasticsearchОмские ИТ-субботники
 
2017-03-11 02 Денис Нелюбин. Docker & Ansible - лучшие друзья DevOps
2017-03-11 02 Денис Нелюбин. Docker & Ansible - лучшие друзья DevOps2017-03-11 02 Денис Нелюбин. Docker & Ansible - лучшие друзья DevOps
2017-03-11 02 Денис Нелюбин. Docker & Ansible - лучшие друзья DevOpsОмские ИТ-субботники
 
Internet redes y elementos de conexión
Internet redes y elementos de conexiónInternet redes y elementos de conexión
Internet redes y elementos de conexiónshendry jaramillo
 

Destaque (18)

Problemario de Álgebra Lineal
Problemario de Álgebra LinealProblemario de Álgebra Lineal
Problemario de Álgebra Lineal
 
Le service relais by easy relay
Le service relais by easy relayLe service relais by easy relay
Le service relais by easy relay
 
Manejo de word 2010
Manejo de word 2010Manejo de word 2010
Manejo de word 2010
 
Cuadro comparativo linux, windows y android
Cuadro comparativo linux, windows y androidCuadro comparativo linux, windows y android
Cuadro comparativo linux, windows y android
 
Informatica proyecto
Informatica proyectoInformatica proyecto
Informatica proyecto
 
Rapport final-2
Rapport final-2Rapport final-2
Rapport final-2
 
«Взломать за 60 секунд», Артем Кулаков, Redmadrobot
«Взломать за 60 секунд», Артем Кулаков, Redmadrobot«Взломать за 60 секунд», Артем Кулаков, Redmadrobot
«Взломать за 60 секунд», Артем Кулаков, Redmadrobot
 
Drenajes Pélvicos Transgenital, Transrectal y Percutáneo
Drenajes Pélvicos Transgenital, Transrectal y PercutáneoDrenajes Pélvicos Transgenital, Transrectal y Percutáneo
Drenajes Pélvicos Transgenital, Transrectal y Percutáneo
 
Comités de ética en la investigación con animales
Comités de ética en la investigación con animalesComités de ética en la investigación con animales
Comités de ética en la investigación con animales
 
Wachovia corporation
Wachovia corporationWachovia corporation
Wachovia corporation
 
Libro la geometría euclidiana como generatriz de la forma en la arquitectura ...
Libro la geometría euclidiana como generatriz de la forma en la arquitectura ...Libro la geometría euclidiana como generatriz de la forma en la arquitectura ...
Libro la geometría euclidiana como generatriz de la forma en la arquitectura ...
 
кри 2014 elastic search рациональный подход к созданию собственной системы а...
кри 2014 elastic search  рациональный подход к созданию собственной системы а...кри 2014 elastic search  рациональный подход к созданию собственной системы а...
кри 2014 elastic search рациональный подход к созданию собственной системы а...
 
Использование Elasticsearch для организации поиска по сайту
Использование Elasticsearch для организации поиска по сайтуИспользование Elasticsearch для организации поиска по сайту
Использование Elasticsearch для организации поиска по сайту
 
Tratamiento de Padecimientos Crónicos de la Vejiga
Tratamiento de Padecimientos Crónicos de la VejigaTratamiento de Padecimientos Crónicos de la Vejiga
Tratamiento de Padecimientos Crónicos de la Vejiga
 
2013-02-02 03 Голушко. Полнотекстовый поиск с Elasticsearch
2013-02-02 03 Голушко. Полнотекстовый поиск с Elasticsearch2013-02-02 03 Голушко. Полнотекстовый поиск с Elasticsearch
2013-02-02 03 Голушко. Полнотекстовый поиск с Elasticsearch
 
2017-03-11 02 Денис Нелюбин. Docker & Ansible - лучшие друзья DevOps
2017-03-11 02 Денис Нелюбин. Docker & Ansible - лучшие друзья DevOps2017-03-11 02 Денис Нелюбин. Docker & Ansible - лучшие друзья DevOps
2017-03-11 02 Денис Нелюбин. Docker & Ansible - лучшие друзья DevOps
 
2017-03-11 01 Игорь Родионов. Docker swarm vs Kubernetes
2017-03-11 01 Игорь Родионов. Docker swarm vs Kubernetes2017-03-11 01 Игорь Родионов. Docker swarm vs Kubernetes
2017-03-11 01 Игорь Родионов. Docker swarm vs Kubernetes
 
Internet redes y elementos de conexión
Internet redes y elementos de conexiónInternet redes y elementos de conexión
Internet redes y elementos de conexión
 

Semelhante a 2017-02-04 03 Алексей Букуров, Игорь Циглер. DSL для правил валидации

Михаил Корепанов "Инкрементальные обновления на клиенте. Ловкость рук и никак...
Михаил Корепанов "Инкрементальные обновления на клиенте. Ловкость рук и никак...Михаил Корепанов "Инкрементальные обновления на клиенте. Ловкость рук и никак...
Михаил Корепанов "Инкрементальные обновления на клиенте. Ловкость рук и никак...Yandex
 
Что нам стоит DAL построить? Акуляков Артём D2D Just.NET
Что нам стоит DAL построить? Акуляков Артём D2D Just.NETЧто нам стоит DAL построить? Акуляков Артём D2D Just.NET
Что нам стоит DAL построить? Акуляков Артём D2D Just.NETDev2Dev
 
webpack: 7 бед - один ответ
webpack: 7 бед - один ответwebpack: 7 бед - один ответ
webpack: 7 бед - один ответDenis Izmaylov
 
2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один
2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один
2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только одинHappyDev
 
Производительность и надежность Docsvision 5
Производительность и надежность Docsvision 5Производительность и надежность Docsvision 5
Производительность и надежность Docsvision 5Docsvision
 
Javascript-фреймворки:
 должен остаться только один
Javascript-фреймворки:
 должен остаться только одинJavascript-фреймворки:
 должен остаться только один
Javascript-фреймворки:
 должен остаться только одинSergey Xek
 
Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)
Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)
Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)Ontico
 
"Webpack: 7 бед — один ответ" — Денис Измайлов, MoscowJS 17
"Webpack: 7 бед — один ответ" — Денис Измайлов, MoscowJS 17"Webpack: 7 бед — один ответ" — Денис Измайлов, MoscowJS 17
"Webpack: 7 бед — один ответ" — Денис Измайлов, MoscowJS 17MoscowJS
 
Apache.JMeter для .NET-проектов
Apache.JMeter для .NET-проектовApache.JMeter для .NET-проектов
Apache.JMeter для .NET-проектовSQALab
 
Zero Downtime PHP Deployment with Envoyer And Forge
Zero Downtime PHP Deployment with Envoyer And ForgeZero Downtime PHP Deployment with Envoyer And Forge
Zero Downtime PHP Deployment with Envoyer And ForgeYehor Herasymchuk
 
"Redux: the best for isomorphic apps", Денис Измайлов, MoscowJS 25
"Redux: the best for isomorphic apps", Денис Измайлов, MoscowJS 25"Redux: the best for isomorphic apps", Денис Измайлов, MoscowJS 25
"Redux: the best for isomorphic apps", Денис Измайлов, MoscowJS 25MoscowJS
 
redux: the best for isomorphic apps
redux: the best for isomorphic appsredux: the best for isomorphic apps
redux: the best for isomorphic appsDenis Izmaylov
 
Баба Яга против!
Баба Яга против!Баба Яга против!
Баба Яга против!Roman Dvornov
 
Software Analytics in frontend
Software Analytics in frontendSoftware Analytics in frontend
Software Analytics in frontendDenis Kolesnikov
 
Иван Карев — Клиентская оптимизация
Иван Карев — Клиентская оптимизацияИван Карев — Клиентская оптимизация
Иван Карев — Клиентская оптимизацияYandex
 
Баба-Яга против! — Роман Дворнов, Ostrovok.ru
Баба-Яга против! — Роман Дворнов, Ostrovok.ruБаба-Яга против! — Роман Дворнов, Ostrovok.ru
Баба-Яга против! — Роман Дворнов, Ostrovok.ruYandex
 
Денис Иванов
Денис ИвановДенис Иванов
Денис ИвановCodeFest
 
State of the Standardized Web
State of the Standardized WebState of the Standardized Web
State of the Standardized WebYandex
 

Semelhante a 2017-02-04 03 Алексей Букуров, Игорь Циглер. DSL для правил валидации (20)

Михаил Корепанов "Инкрементальные обновления на клиенте. Ловкость рук и никак...
Михаил Корепанов "Инкрементальные обновления на клиенте. Ловкость рук и никак...Михаил Корепанов "Инкрементальные обновления на клиенте. Ловкость рук и никак...
Михаил Корепанов "Инкрементальные обновления на клиенте. Ловкость рук и никак...
 
Что нам стоит DAL построить? Акуляков Артём D2D Just.NET
Что нам стоит DAL построить? Акуляков Артём D2D Just.NETЧто нам стоит DAL построить? Акуляков Артём D2D Just.NET
Что нам стоит DAL построить? Акуляков Артём D2D Just.NET
 
webpack: 7 бед - один ответ
webpack: 7 бед - один ответwebpack: 7 бед - один ответ
webpack: 7 бед - один ответ
 
2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один
2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один
2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один
 
Производительность и надежность Docsvision 5
Производительность и надежность Docsvision 5Производительность и надежность Docsvision 5
Производительность и надежность Docsvision 5
 
Javascript-фреймворки:
 должен остаться только один
Javascript-фреймворки:
 должен остаться только одинJavascript-фреймворки:
 должен остаться только один
Javascript-фреймворки:
 должен остаться только один
 
Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)
Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)
Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)
 
"Webpack: 7 бед — один ответ" — Денис Измайлов, MoscowJS 17
"Webpack: 7 бед — один ответ" — Денис Измайлов, MoscowJS 17"Webpack: 7 бед — один ответ" — Денис Измайлов, MoscowJS 17
"Webpack: 7 бед — один ответ" — Денис Измайлов, MoscowJS 17
 
Little Service in 2h
Little Service in 2hLittle Service in 2h
Little Service in 2h
 
Apache.JMeter для .NET-проектов
Apache.JMeter для .NET-проектовApache.JMeter для .NET-проектов
Apache.JMeter для .NET-проектов
 
Zero Downtime PHP Deployment with Envoyer And Forge
Zero Downtime PHP Deployment with Envoyer And ForgeZero Downtime PHP Deployment with Envoyer And Forge
Zero Downtime PHP Deployment with Envoyer And Forge
 
"Redux: the best for isomorphic apps", Денис Измайлов, MoscowJS 25
"Redux: the best for isomorphic apps", Денис Измайлов, MoscowJS 25"Redux: the best for isomorphic apps", Денис Измайлов, MoscowJS 25
"Redux: the best for isomorphic apps", Денис Измайлов, MoscowJS 25
 
redux: the best for isomorphic apps
redux: the best for isomorphic appsredux: the best for isomorphic apps
redux: the best for isomorphic apps
 
Баба Яга против!
Баба Яга против!Баба Яга против!
Баба Яга против!
 
Breaking logs
Breaking logsBreaking logs
Breaking logs
 
Software Analytics in frontend
Software Analytics in frontendSoftware Analytics in frontend
Software Analytics in frontend
 
Иван Карев — Клиентская оптимизация
Иван Карев — Клиентская оптимизацияИван Карев — Клиентская оптимизация
Иван Карев — Клиентская оптимизация
 
Баба-Яга против! — Роман Дворнов, Ostrovok.ru
Баба-Яга против! — Роман Дворнов, Ostrovok.ruБаба-Яга против! — Роман Дворнов, Ostrovok.ru
Баба-Яга против! — Роман Дворнов, Ostrovok.ru
 
Денис Иванов
Денис ИвановДенис Иванов
Денис Иванов
 
State of the Standardized Web
State of the Standardized WebState of the Standardized Web
State of the Standardized Web
 

Mais de Омские ИТ-субботники

2017-08-12 01 Алексей Коровянский. Привет, ARKit!
2017-08-12 01 Алексей Коровянский. Привет, ARKit!2017-08-12 01 Алексей Коровянский. Привет, ARKit!
2017-08-12 01 Алексей Коровянский. Привет, ARKit!Омские ИТ-субботники
 
2017-08-12 02 Антон Ковалев. Texture a.k.a AsyncDisplayKit
2017-08-12 02 Антон Ковалев. Texture a.k.a AsyncDisplayKit2017-08-12 02 Антон Ковалев. Texture a.k.a AsyncDisplayKit
2017-08-12 02 Антон Ковалев. Texture a.k.a AsyncDisplayKitОмские ИТ-субботники
 
2017-05-06 02 Илья Сиганов. Зачем учить машины?
2017-05-06 02 Илья Сиганов. Зачем учить машины?2017-05-06 02 Илья Сиганов. Зачем учить машины?
2017-05-06 02 Илья Сиганов. Зачем учить машины?Омские ИТ-субботники
 
2017 04-08 03 Максим Верзаков. Docker — жизнь, вселенная и все остальное
2017 04-08 03 Максим Верзаков. Docker — жизнь, вселенная и все остальное2017 04-08 03 Максим Верзаков. Docker — жизнь, вселенная и все остальное
2017 04-08 03 Максим Верзаков. Docker — жизнь, вселенная и все остальноеОмские ИТ-субботники
 
2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы
2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы
2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системыОмские ИТ-субботники
 
2017-02-04 01 Евгений Тюменцев. Выразительные возможности языков программиро...
2017-02-04 01 Евгений Тюменцев. Выразительные возможности языков программиро...2017-02-04 01 Евгений Тюменцев. Выразительные возможности языков программиро...
2017-02-04 01 Евгений Тюменцев. Выразительные возможности языков программиро...Омские ИТ-субботники
 
2016-12-03 01 Вадим Литвинов. От 2D к 3D обзор методов реконструкции поверхно...
2016-12-03 01 Вадим Литвинов. От 2D к 3D обзор методов реконструкции поверхно...2016-12-03 01 Вадим Литвинов. От 2D к 3D обзор методов реконструкции поверхно...
2016-12-03 01 Вадим Литвинов. От 2D к 3D обзор методов реконструкции поверхно...Омские ИТ-субботники
 
2016-12-03 02 Алексей Городецкий. Как пишут компиляторы
2016-12-03 02 Алексей Городецкий. Как пишут компиляторы2016-12-03 02 Алексей Городецкий. Как пишут компиляторы
2016-12-03 02 Алексей Городецкий. Как пишут компиляторыОмские ИТ-субботники
 
2016-12-03 03 Евгений Тюменцев. DSL на коленке
2016-12-03 03 Евгений Тюменцев. DSL на коленке2016-12-03 03 Евгений Тюменцев. DSL на коленке
2016-12-03 03 Евгений Тюменцев. DSL на коленкеОмские ИТ-субботники
 
2016-11-12 02 Николай Линкер. Чему Java может поучиться у Haskell и наоборот
2016-11-12 02 Николай Линкер. Чему Java может поучиться у Haskell и наоборот2016-11-12 02 Николай Линкер. Чему Java может поучиться у Haskell и наоборот
2016-11-12 02 Николай Линкер. Чему Java может поучиться у Haskell и наоборотОмские ИТ-субботники
 
2016-11-12 03 Максим Дроздов. Навести порядок быстро, или как спасти оценки н...
2016-11-12 03 Максим Дроздов. Навести порядок быстро, или как спасти оценки н...2016-11-12 03 Максим Дроздов. Навести порядок быстро, или как спасти оценки н...
2016-11-12 03 Максим Дроздов. Навести порядок быстро, или как спасти оценки н...Омские ИТ-субботники
 
2016-11-12 01 Егор Непомнящих. Агрегация и осведомленность
2016-11-12 01 Егор Непомнящих. Агрегация и осведомленность 2016-11-12 01 Егор Непомнящих. Агрегация и осведомленность
2016-11-12 01 Егор Непомнящих. Агрегация и осведомленность Омские ИТ-субботники
 
2016-10-01 03 Андрей Аржанников. Что такое Bluetooth Low Energy?
2016-10-01 03 Андрей Аржанников. Что такое Bluetooth Low Energy?2016-10-01 03 Андрей Аржанников. Что такое Bluetooth Low Energy?
2016-10-01 03 Андрей Аржанников. Что такое Bluetooth Low Energy?Омские ИТ-субботники
 
2016-10-01 02 Евгений Комаров. Как я сделал IoT-кикер
2016-10-01 02 Евгений Комаров. Как я сделал IoT-кикер2016-10-01 02 Евгений Комаров. Как я сделал IoT-кикер
2016-10-01 02 Евгений Комаров. Как я сделал IoT-кикерОмские ИТ-субботники
 
2016-10-01 01 Звиад Кардава. Welcome to Internet of Things
2016-10-01 01 Звиад Кардава. Welcome to Internet of Things2016-10-01 01 Звиад Кардава. Welcome to Internet of Things
2016-10-01 01 Звиад Кардава. Welcome to Internet of ThingsОмские ИТ-субботники
 
2016-09-17 02 Игорь Гончаровский. Техническая и программная сторона VoIP
2016-09-17 02 Игорь Гончаровский. Техническая и программная сторона VoIP2016-09-17 02 Игорь Гончаровский. Техническая и программная сторона VoIP
2016-09-17 02 Игорь Гончаровский. Техническая и программная сторона VoIPОмские ИТ-субботники
 
2016-09-17 01 Василий Полозов. Обзор понятий и технологий VoIP
2016-09-17 01 Василий Полозов. Обзор понятий и технологий VoIP2016-09-17 01 Василий Полозов. Обзор понятий и технологий VoIP
2016-09-17 01 Василий Полозов. Обзор понятий и технологий VoIPОмские ИТ-субботники
 
2016-08-20 01 Дмитрий Рабецкий, Сергей Сорокин. Опыт работы с Android Medi...
2016-08-20 01 Дмитрий Рабецкий, Сергей Сорокин. Опыт работы с Android Medi...2016-08-20 01 Дмитрий Рабецкий, Сергей Сорокин. Опыт работы с Android Medi...
2016-08-20 01 Дмитрий Рабецкий, Сергей Сорокин. Опыт работы с Android Medi...Омские ИТ-субботники
 

Mais de Омские ИТ-субботники (20)

2017-08-12 01 Алексей Коровянский. Привет, ARKit!
2017-08-12 01 Алексей Коровянский. Привет, ARKit!2017-08-12 01 Алексей Коровянский. Привет, ARKit!
2017-08-12 01 Алексей Коровянский. Привет, ARKit!
 
2017-08-12 02 Антон Ковалев. Texture a.k.a AsyncDisplayKit
2017-08-12 02 Антон Ковалев. Texture a.k.a AsyncDisplayKit2017-08-12 02 Антон Ковалев. Texture a.k.a AsyncDisplayKit
2017-08-12 02 Антон Ковалев. Texture a.k.a AsyncDisplayKit
 
2017-05-06 02 Илья Сиганов. Зачем учить машины?
2017-05-06 02 Илья Сиганов. Зачем учить машины?2017-05-06 02 Илья Сиганов. Зачем учить машины?
2017-05-06 02 Илья Сиганов. Зачем учить машины?
 
2017 04-08 03 Максим Верзаков. Docker — жизнь, вселенная и все остальное
2017 04-08 03 Максим Верзаков. Docker — жизнь, вселенная и все остальное2017 04-08 03 Максим Верзаков. Docker — жизнь, вселенная и все остальное
2017 04-08 03 Максим Верзаков. Docker — жизнь, вселенная и все остальное
 
2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы
2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы
2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы
 
2017-02-04 02 Яков Лило. Решение задач
2017-02-04 02 Яков Лило. Решение задач2017-02-04 02 Яков Лило. Решение задач
2017-02-04 02 Яков Лило. Решение задач
 
2017-02-04 01 Евгений Тюменцев. Выразительные возможности языков программиро...
2017-02-04 01 Евгений Тюменцев. Выразительные возможности языков программиро...2017-02-04 01 Евгений Тюменцев. Выразительные возможности языков программиро...
2017-02-04 01 Евгений Тюменцев. Выразительные возможности языков программиро...
 
2016-12-03 01 Вадим Литвинов. От 2D к 3D обзор методов реконструкции поверхно...
2016-12-03 01 Вадим Литвинов. От 2D к 3D обзор методов реконструкции поверхно...2016-12-03 01 Вадим Литвинов. От 2D к 3D обзор методов реконструкции поверхно...
2016-12-03 01 Вадим Литвинов. От 2D к 3D обзор методов реконструкции поверхно...
 
2016-12-03 02 Алексей Городецкий. Как пишут компиляторы
2016-12-03 02 Алексей Городецкий. Как пишут компиляторы2016-12-03 02 Алексей Городецкий. Как пишут компиляторы
2016-12-03 02 Алексей Городецкий. Как пишут компиляторы
 
2016-12-03 03 Евгений Тюменцев. DSL на коленке
2016-12-03 03 Евгений Тюменцев. DSL на коленке2016-12-03 03 Евгений Тюменцев. DSL на коленке
2016-12-03 03 Евгений Тюменцев. DSL на коленке
 
2016-11-12 02 Николай Линкер. Чему Java может поучиться у Haskell и наоборот
2016-11-12 02 Николай Линкер. Чему Java может поучиться у Haskell и наоборот2016-11-12 02 Николай Линкер. Чему Java может поучиться у Haskell и наоборот
2016-11-12 02 Николай Линкер. Чему Java может поучиться у Haskell и наоборот
 
2016-11-12 03 Максим Дроздов. Навести порядок быстро, или как спасти оценки н...
2016-11-12 03 Максим Дроздов. Навести порядок быстро, или как спасти оценки н...2016-11-12 03 Максим Дроздов. Навести порядок быстро, или как спасти оценки н...
2016-11-12 03 Максим Дроздов. Навести порядок быстро, или как спасти оценки н...
 
2016-11-12 01 Егор Непомнящих. Агрегация и осведомленность
2016-11-12 01 Егор Непомнящих. Агрегация и осведомленность 2016-11-12 01 Егор Непомнящих. Агрегация и осведомленность
2016-11-12 01 Егор Непомнящих. Агрегация и осведомленность
 
2016-10-01 03 Андрей Аржанников. Что такое Bluetooth Low Energy?
2016-10-01 03 Андрей Аржанников. Что такое Bluetooth Low Energy?2016-10-01 03 Андрей Аржанников. Что такое Bluetooth Low Energy?
2016-10-01 03 Андрей Аржанников. Что такое Bluetooth Low Energy?
 
2016-10-01 02 Евгений Комаров. Как я сделал IoT-кикер
2016-10-01 02 Евгений Комаров. Как я сделал IoT-кикер2016-10-01 02 Евгений Комаров. Как я сделал IoT-кикер
2016-10-01 02 Евгений Комаров. Как я сделал IoT-кикер
 
2016-10-01 01 Звиад Кардава. Welcome to Internet of Things
2016-10-01 01 Звиад Кардава. Welcome to Internet of Things2016-10-01 01 Звиад Кардава. Welcome to Internet of Things
2016-10-01 01 Звиад Кардава. Welcome to Internet of Things
 
2016-09-17 03 Василий Полозов. WebRTC
2016-09-17 03 Василий Полозов. WebRTC2016-09-17 03 Василий Полозов. WebRTC
2016-09-17 03 Василий Полозов. WebRTC
 
2016-09-17 02 Игорь Гончаровский. Техническая и программная сторона VoIP
2016-09-17 02 Игорь Гончаровский. Техническая и программная сторона VoIP2016-09-17 02 Игорь Гончаровский. Техническая и программная сторона VoIP
2016-09-17 02 Игорь Гончаровский. Техническая и программная сторона VoIP
 
2016-09-17 01 Василий Полозов. Обзор понятий и технологий VoIP
2016-09-17 01 Василий Полозов. Обзор понятий и технологий VoIP2016-09-17 01 Василий Полозов. Обзор понятий и технологий VoIP
2016-09-17 01 Василий Полозов. Обзор понятий и технологий VoIP
 
2016-08-20 01 Дмитрий Рабецкий, Сергей Сорокин. Опыт работы с Android Medi...
2016-08-20 01 Дмитрий Рабецкий, Сергей Сорокин. Опыт работы с Android Medi...2016-08-20 01 Дмитрий Рабецкий, Сергей Сорокин. Опыт работы с Android Medi...
2016-08-20 01 Дмитрий Рабецкий, Сергей Сорокин. Опыт работы с Android Medi...
 

2017-02-04 03 Алексей Букуров, Игорь Циглер. DSL для правил валидации