SlideShare une entreprise Scribd logo
1  sur  79
Télécharger pour lire hors ligne
Павел Ловцевич
Make form validation
GREAT FUN AGAIN!LIVE SLIDES HERE
Павел Ловцевич
CTO @ LOVATA & 2doc.by
@zigzag_mcquack
p.lovtsevich@lovata.com
Валидация
Подтверждение на основе представления объективных свидетельств
того, что требования, предназначенные для конкретного использования
или применения, выполнены.
(ISO 9000:2005),Системы менеджмента качества.Основные положения и
словарь
“
5
Цели валидации
• Получение корректных данных в корректном формате.
• Защита пользователя.
• Защита приложения.
6
Constraint
Validation API
Constraint Validation API methods
• Методы
• checkValidity() → true/false → invalid event
• reportValidity() → true/false → invalid event + сообщение об ошибке
• setCustomValidity(message) → true/false → invalid event + текст для
сообщения об ошибке
• Свойства
• willValidate → true/false на submit
• validity → ValidityState Properties
8
9
required
:invalid / :valid
required minlength
Отправить
11
:invalid
<input> ✓ ✓ ✓ ✓
<fieldset> ✗ ✓ ✓ ✓
<form> ✗ ✓ ✓ ✓
<button> ✗ ✗ ✗ ✗
input[type="submit"]:-moz-submit-invalid
1
1
12
:valid
<input> ✓ ✓ ✓ ✓
<fieldset> ✗ ✓ ✓ ✓
<form> ✗ ✓ ✓ ✓
<button> ✓ ✓ ✓ ✓
13
:invalid / :valid button
required minlength
Отправить
14
form:invalid
form:valid
:invalid / :valid button
button[type="submit"] {
box-shadow: 0px 0px 2px 2px rgba(255, 0, 0, 0.5);
}
button[type="submit"] {
box-shadow: 0px 0px 2px 2px rgba(0, 255, 0, 0.5);
}
01.
02.
03.
04.
05.
06.
15
pointer-events: none;
pointer-events: auto;
:invalid / :valid button
form:invalid button[type="submit"] {
box-shadow: 0px 0px 2px 2px rgba(255, 0, 0, 0.5);
}
form:valid button[type="submit"] {
box-shadow: 0px 0px 2px 2px rgba(0, 255, 0, 0.5);
}
01.
02.
03.
04.
05.
06.
07.
08.
16
minlength
maxlength
События minlength / maxlength
Ограничение JS CSS
minlength .tooShort :invalid
maxlength .tooLong :invalid / :out-of-range
19
minlength="2" maxlength="4"
minlength / maxlength
<input type="text" >
20
minlength / maxlength
required optional
Отправить
21
22
23
minlength / maxlength + value
123456 12
Отправить
24
pattern
27
pattern
• [a-z]
• w
• d
• (a|b)
• {2,4}
28
pattern
• [a-z]
• w
• d
• (a|b)
• {2,4}
29
pattern="^w{2,}$"
minlength + Edge support
<input type="text"
minlength="2"
maxlength="4"
>
01.
02.
03.
04.
30
^ $ w{2,}
minlength + Edge support
<input type="text"
minlength="2"
maxlength="4"
pattern=" w{2,} ">
<input type="text"
minlength="2"
maxlength="4"
pattern=" ">
01.
02.
03.
04.
01.
02.
03.
04.
31
title
Pattern message
<input type="text" pattern="220[0-9]{3,}"
title="Формат &quot;220XXX&quot;,
где &quot;XXX&quot; числа 0-9.">
01.
02.
03.
04.
33
220
Pattern message
<input type="text" pattern=" [0-9]{3,}"
title="Формат &quot;220XXX&quot;,
где &quot;XXX&quot; числа 0-9.">
01.
02.
03.
04.
34
[0-9]{3,}
Pattern message
<input type="text" pattern="220 "
title="Формат &quot;220XXX&quot;,
где &quot;XXX&quot; числа 0-9.">
01.
02.
03.
04.
title="Формат &quot;220XXX&quot;,
где &quot;XXX&quot; числа 0-9.">
Pattern message
<input type="text" pattern="220[0-9]{3,}"01.
02.
03.
04.
Pattern message
220000
Отправить
37
Pattern message
220000
Отправить
38
39
Дальше больше
41
Email,url
Ограничение JS CSS
required .valueMissing :invalid
maxlength .tooLong :invalid
minlength .tooShort :invalid
pattern .patternMismatch :invalid
type .typeMismatch :invalid
42
Выделение ошибки :required
john@doe.com
• required
• type
Отправить
43
44
:not( )
:valid
Выделение ошибки :required
input :placeholder-shown + ul .error-required {
color: green; /* required - ok */
}
input + ul .error-type {
color: green; /* type - ok */
}
01.
02.
03.
01.
02.
03.
45
:user-error
47
Number
Ограничение JS CSS
required .valueMissing :invalid
type .badInput :invalid
min .rangeUnderflow :invalid / :out-of-range
max .rangeOverflow :invalid / :out-of-range
step .stepMismatch :invalid
48
49
Выделение ошибки :out-of-range
number
• required
• range
• step
Отправить
50
:in-range
Выделение ошибки :out-of-range
input :not(:placeholder-shown) + ul .error-range {
color: green;
}
01.
02.
03.
51
:not(:placeholder-shown)
Выделение ошибки :out-of-range
input:in-range + ul .error-range {
color: green;
}
01.
02.
03.
52
:valid
Выделение ошибки :out-of-range
input + ul .error-step {
color: green;
}
01.
02.
03.
53
JIT
:not(:placeholder-shown)
Своевременность валидации
input:invalid:not(:focus) {
color: red;
}
01.
02.
03.
55
:not(:focus)
Своевременность валидации
input:invalid :not(:placeholder-shown) {
color: red;
}
01.
02.
03.
56
:invalid
Своевременность валидации
input :not(:focus):not(:placeholder-shown) {
color: red;
}
01.
02.
03.
57
Своевременность валидации
john@doe.com
Отправить
58
Своевременность валидации
field.onblur = function () {
this.reportValidity()
}
01.
02.
03.
59
Своевременность валидации
john@doe.com
Отправить
60
reportValidity()
setCustomValidity()
Кастомное сообщение
var field = [checking field];
field.addEventListener('blur', function () {
if (field.validity.typeMismatch) {
field.setCustomValidity("Error message.");
} else {
field.setCustomValidity("");
}
});
01.
02.
03.
04.
05.
06.
07.
08.
63
patternMismatch
setCustomValidity
Кастомное сообщение
var field = [checking field];
field.addEventListener('blur', function () {
if (field.validity. ) {
field. ("Error message.");
} else {
field.setCustomValidity("");
}
});
01.
02.
03.
04.
05.
06.
07.
08.
64
setCustomValidity("")
Кастомное сообщение
var field = [checking field];
field.addEventListener('blur', function () {
if (field.validity.patternMismatch) {
field.setCustomValidity("Error message.");
} else {
field. ;
}
});
01.
02.
03.
04.
05.
06.
07.
08.
65
novalidate
novalidate
• Отключает системные сообщения.
• Сохраняет состояния валидности (JS, CSS).
• Позволяет отправить форму.
field.validity.patternMismatch
Точка управления
var field = [checking field];
field.addEventListener('blur', function () {
if ( ) {
field.setCustomValidity("Error message.");
} else {
field.setCustomValidity("");
}
});
01.
02.
03.
04.
05.
06.
07.
08.
69
pass1!=pass2
Точка управления
var field = [checking field];
field.addEventListener('blur', function () {
if ( ) {
field.setCustomValidity("Error message.");
} else {
field.setCustomValidity("");
}
});
01.
02.
03.
04.
05.
06.
07.
08.
70
Собираем информацию о поле
// выбираем поле
var email = document.getElementById('email');
// читаем свойства
var validations = ['typeMismatch', 'tooShort'];
01.
02.
03.
04.
71
Собираем информацию о поле
function showError(typeError) {
console.log('Error type - ' + typeError);
}
01.
02.
03.
72
Собираем информацию о поле
email.addEventListener('blur', function(){
for (var i = 0; i < validations.length; i++){
if (email.validity[validations[i]]) {
showError(validations[i]);
}
}
});
01.
02.
03.
04.
05.
06.
07.
73
Собираем информацию о поле
Email *  
74
Глушим системные сообщения
document.forms[0].addEventListener('invalid',function (e) {
e.preventDefault();
},true);
01.
02.
03.
75
Native form validation,Peter-Paul Koch
• Part 1
• Part 2
• Part 3
76
Выводы
• Прогрессивное улучшение.
• Непривычный способ решения задачи.
• Правильный способ решения задачи.
• Проблемы багов, архитектуры и кроссбраузерности решаемы.
• Место для OpenSource!
77
Валидация на
сервере!
Спасибо за
внимание!
Вопросы?

Contenu connexe

Similaire à Make form validation fun again / Павел Ловцевич (LOVATA)

Архитектура кода нового 2ГИС Web API или куда мы дели MVC
Архитектура кода нового 2ГИС Web API или куда мы дели MVCАрхитектура кода нового 2ГИС Web API или куда мы дели MVC
Архитектура кода нового 2ГИС Web API или куда мы дели MVCDevDay
 
Design for Testability: Mocks, Stubs, Refactoring
Design for Testability: Mocks, Stubs, RefactoringDesign for Testability: Mocks, Stubs, Refactoring
Design for Testability: Mocks, Stubs, RefactoringLuxoftTraining
 
MS SWIT 2013 Design for Testability
MS SWIT 2013 Design for TestabilityMS SWIT 2013 Design for Testability
MS SWIT 2013 Design for TestabilitySergey Teplyakov
 
Web весна 2013 лекция 4
Web весна 2013 лекция 4Web весна 2013 лекция 4
Web весна 2013 лекция 4Technopark
 
Web осень 2012 лекция 4
Web осень 2012 лекция 4Web осень 2012 лекция 4
Web осень 2012 лекция 4Technopark
 
QA Fes 2016. Игорь Любин. Об автоматическом тестировании бэкенда в MediaMarkt
QA Fes 2016. Игорь Любин. Об автоматическом тестировании бэкенда в MediaMarktQA Fes 2016. Игорь Любин. Об автоматическом тестировании бэкенда в MediaMarkt
QA Fes 2016. Игорь Любин. Об автоматическом тестировании бэкенда в MediaMarktQAFest
 
Об автоматическом тестировании бэкенда в Media markt
Об автоматическом тестировании бэкенда в Media marktОб автоматическом тестировании бэкенда в Media markt
Об автоматическом тестировании бэкенда в Media marktIgor Lyubin
 
М. Боднарчук Современное функциональное тестирование с Codeception
М. Боднарчук Современное функциональное тестирование с CodeceptionМ. Боднарчук Современное функциональное тестирование с Codeception
М. Боднарчук Современное функциональное тестирование с CodeceptionAlbina Tiupa
 
Разработка Web-приложений на Angular JS. Архитектурные семинары Softengi
Разработка Web-приложений на Angular JS. Архитектурные семинары SoftengiРазработка Web-приложений на Angular JS. Архитектурные семинары Softengi
Разработка Web-приложений на Angular JS. Архитектурные семинары SoftengiSoftengi
 
Человекопонятные отчёты
Человекопонятные отчётыЧеловекопонятные отчёты
Человекопонятные отчётыbearoff
 
«MVVM в Swift», Александр Зимин, независимый iOS-разработчик
«MVVM в Swift», Александр Зимин, независимый iOS-разработчик«MVVM в Swift», Александр Зимин, независимый iOS-разработчик
«MVVM в Swift», Александр Зимин, независимый iOS-разработчикMail.ru Group
 
Rambler.iOS #8: Как не стать жертвой бэкендеров
Rambler.iOS #8: Как не стать жертвой бэкендеровRambler.iOS #8: Как не стать жертвой бэкендеров
Rambler.iOS #8: Как не стать жертвой бэкендеровRAMBLER&Co
 
Михаил Боднарчук Современное функциональное тестирование с Codeception
Михаил Боднарчук Современное функциональное тестирование с CodeceptionМихаил Боднарчук Современное функциональное тестирование с Codeception
Михаил Боднарчук Современное функциональное тестирование с CodeceptionAlbina Tiupa
 
Yii2
Yii2Yii2
Yii2Noveo
 
Полуавтоматизация third-party API
Полуавтоматизация third-party APIПолуавтоматизация third-party API
Полуавтоматизация third-party APISQALab
 
QaApi: взгляд на тестирование с другой стороны баррикад
QaApi: взгляд на тестирование с другой стороны баррикадQaApi: взгляд на тестирование с другой стороны баррикад
QaApi: взгляд на тестирование с другой стороны баррикадDmitry Maruschenko
 
2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной
2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной
2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полнойОмские ИТ-субботники
 

Similaire à Make form validation fun again / Павел Ловцевич (LOVATA) (20)

Архитектура кода нового 2ГИС Web API или куда мы дели MVC
Архитектура кода нового 2ГИС Web API или куда мы дели MVCАрхитектура кода нового 2ГИС Web API или куда мы дели MVC
Архитектура кода нового 2ГИС Web API или куда мы дели MVC
 
Haritonov
HaritonovHaritonov
Haritonov
 
Design for Testability: Mocks, Stubs, Refactoring
Design for Testability: Mocks, Stubs, RefactoringDesign for Testability: Mocks, Stubs, Refactoring
Design for Testability: Mocks, Stubs, Refactoring
 
MS SWIT 2013 Design for Testability
MS SWIT 2013 Design for TestabilityMS SWIT 2013 Design for Testability
MS SWIT 2013 Design for Testability
 
Web весна 2013 лекция 4
Web весна 2013 лекция 4Web весна 2013 лекция 4
Web весна 2013 лекция 4
 
Seamy side of autotests
Seamy side of autotestsSeamy side of autotests
Seamy side of autotests
 
Web осень 2012 лекция 4
Web осень 2012 лекция 4Web осень 2012 лекция 4
Web осень 2012 лекция 4
 
QA Fes 2016. Игорь Любин. Об автоматическом тестировании бэкенда в MediaMarkt
QA Fes 2016. Игорь Любин. Об автоматическом тестировании бэкенда в MediaMarktQA Fes 2016. Игорь Любин. Об автоматическом тестировании бэкенда в MediaMarkt
QA Fes 2016. Игорь Любин. Об автоматическом тестировании бэкенда в MediaMarkt
 
Об автоматическом тестировании бэкенда в Media markt
Об автоматическом тестировании бэкенда в Media marktОб автоматическом тестировании бэкенда в Media markt
Об автоматическом тестировании бэкенда в Media markt
 
М. Боднарчук Современное функциональное тестирование с Codeception
М. Боднарчук Современное функциональное тестирование с CodeceptionМ. Боднарчук Современное функциональное тестирование с Codeception
М. Боднарчук Современное функциональное тестирование с Codeception
 
Разработка Web-приложений на Angular JS. Архитектурные семинары Softengi
Разработка Web-приложений на Angular JS. Архитектурные семинары SoftengiРазработка Web-приложений на Angular JS. Архитектурные семинары Softengi
Разработка Web-приложений на Angular JS. Архитектурные семинары Softengi
 
Человекопонятные отчёты
Человекопонятные отчётыЧеловекопонятные отчёты
Человекопонятные отчёты
 
«MVVM в Swift», Александр Зимин, независимый iOS-разработчик
«MVVM в Swift», Александр Зимин, независимый iOS-разработчик«MVVM в Swift», Александр Зимин, независимый iOS-разработчик
«MVVM в Swift», Александр Зимин, независимый iOS-разработчик
 
Rambler.iOS #8: Как не стать жертвой бэкендеров
Rambler.iOS #8: Как не стать жертвой бэкендеровRambler.iOS #8: Как не стать жертвой бэкендеров
Rambler.iOS #8: Как не стать жертвой бэкендеров
 
Михаил Боднарчук Современное функциональное тестирование с Codeception
Михаил Боднарчук Современное функциональное тестирование с CodeceptionМихаил Боднарчук Современное функциональное тестирование с Codeception
Михаил Боднарчук Современное функциональное тестирование с Codeception
 
Yii2
Yii2Yii2
Yii2
 
Полуавтоматизация third-party API
Полуавтоматизация third-party APIПолуавтоматизация third-party API
Полуавтоматизация third-party API
 
QaApi: взгляд на тестирование с другой стороны баррикад
QaApi: взгляд на тестирование с другой стороны баррикадQaApi: взгляд на тестирование с другой стороны баррикад
QaApi: взгляд на тестирование с другой стороны баррикад
 
Behavior Driven Development
Behavior Driven DevelopmentBehavior Driven Development
Behavior Driven Development
 
2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной
2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной
2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной
 

Plus de Ontico

One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...Ontico
 
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Ontico
 
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Ontico
 
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Ontico
 
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Ontico
 
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)Ontico
 
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Ontico
 
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Ontico
 
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)Ontico
 
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)Ontico
 
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Ontico
 
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Ontico
 
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Ontico
 
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Ontico
 
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)Ontico
 
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Ontico
 
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Ontico
 
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...Ontico
 
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Ontico
 
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Ontico
 

Plus de Ontico (20)

One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
 
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
 
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
 
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
 
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
 
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
 
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
 
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
 
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
 
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
 
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
 
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
 
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
 
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
 
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
 
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
 
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
 
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
 
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
 
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
 

Make form validation fun again / Павел Ловцевич (LOVATA)