SlideShare una empresa de Scribd logo
1 de 91
Descargar para leer sin conexión
Александр Сычев
Разработчик iOS
Как не выстрелить себе в ногу
из конечного автомата
iOS state machine
• Постановка задачи
• Пример
• Другие реализации
• Заключение
2
iOS state machine
3
• Постановка задачи
• Пример
• Другие реализации
• Заключение
iOS state machine
Power OffPower On
Button click
Button click
State
Transition
Event
4
iOS state machine
Состояние
5
iOS state machine
Состояние
6
iOS state machine
7
• Игровые приложения
• Анализ текстов
• Параллельная обработка запросов
Традиционные задачи
iOS state machine
8
Традиционные задачи
• Игровые приложения
• Анализ текстов
• Параллельная обработка запросов
iOS state machine
iOS state machine
10
Традиционные задачи
• Игровые приложения
• Анализ текстов
• Параллельная обработка запросов
iOS state machine
11
Анализ текстов
Pattern: ABABAC
iOS state machine
12
Традиционные задачи
• Игровые приложения
• Анализ текстов
• Параллельная обработка запросов
iOS state machine
13
Обработка запросов
iOS state machine
14
Power OffPower On
Button click
Button click
State
Transition
Event
iOS state machine
Presentation layer
Business logic layer
Core layer
iOS state machine
Model-View-Controller
16
ModelView
ControllerSends user
actions
Updates
Updates
Notifies
Mediator Strategy
iOS state machine
VIPER
17
iOS state machine
Model-View-ViewModel
ModelView
ViewModel
Owns
Data and user
action
Owns and
updates
Notifies
UIKit independent
18
iOS state machine
Бизнес-логика
19
iOS state machine
Бизнес-логика
20
iOS state machine
21
iOS state machine
// обработка данных
22
ViewController
iOS state machine
23
IF (error) {
// обработка ошибки
} ELSE {
// обработка данных
}
ViewController
iOS state machine
24
IF (error) {
// обработка ошибки
} ELSE IF (data != NULL) {
// обработка данных
} ELSE {
// нет данных
}
ViewController
iOS state machine
25
IF (isWaiting) {
// ждем данные
} ELSE IF (error) {
// обработка ошибки
} ELSE IF (data != NULL) {
// обработка данных
} ELSE {
// нет данных
}
ViewController
iOS state machine
IF (isWaiting) {
IF (isWaitingAgain) {
// повторное ожидание
} ELSE {
// ждем данные
}
} ELSE IF (error) {
IF (systemError) {
// показать alert
} ELSE {
// показать toast
}
} ELSE IF (data != NULL) {
IF (data.length < 10) {
// обработка данных
} ELSE {
// обработка данных
}
} ELSE {
// нет данных
}
ViewController
26
iOS state machine
Недостатки
©💩kod.ru
27
• Нечитабелен
iOS state machine
Недостатки
• Нечитабелен
• Высокий порог вхождения
• Высокая сложность поддержки и развития
• Негибкий
• Нет защиты от фиктивных состояний
28
iOS state machine
Недостатки
29
• Нечитабелен
• Высокий порог вхождения
• Высокая сложность поддержки и развития
• Негибкий
• Нет защиты от фиктивных состояний
iOS state machine
Недостатки
30
• Нечитабелен
• Высокий порог вхождения
• Высокая сложность поддержки и развития
• Негибкий
• Нет защиты от фиктивных состояний
iOS state machine
Недостатки
31
• Нечитабелен
• Высокий порог вхождения
• Высокая сложность поддержки и развития
• Негибкий
• Нет защиты от фиктивных состояний
iOS state machine
32
Power OffPower On
Button click
Button click
State
Transition
Event
iOS state machine
33
• Постановка задачи
• Пример
• Другие реализации
• Заключение
iOS state machine
GKState
GKStateMachine
34
iOS state machine
35
GKState
GKStateMachine
iOS state machine
GKState
1.class CustomState: GKState
2.func isValidNextState(stateClass: AnyClass) -> Bool
3.func didEnterWithPreviousState(previousState: GKState?)
4.func willExitWithNextState(nextState: GKState)
36
iOS state machine
GKState
1.class CustomState: GKState
2.func isValidNextState(stateClass: AnyClass) -> Bool
3.func didEnterWithPreviousState(previousState: GKState?)
4.func willExitWithNextState(nextState: GKState)
37
iOS state machine
GKState
1.class CustomState: GKState
2.func isValidNextState(stateClass: AnyClass) -> Bool
3.func didEnterWithPreviousState(previousState: GKState?)
4.func willExitWithNextState(nextState: GKState)
38
iOS state machine
GKState
1.class CustomState: GKState
2.func isValidNextState(stateClass: AnyClass) -> Bool
3.func didEnterWithPreviousState(previousState: GKState?)
4.func willExitWithNextState(nextState: GKState)
39
iOS state machine
40
GKState
GKStateMachine
iOS state machine
GKStateMachine
1.init(states states: [GKState])
2.func enterState(_ stateClass: AnyClass) -> Bool
41
iOS state machine
GKStateMachine
1.init(states states: [GKState])
2.func enterState(_ stateClass: AnyClass) -> Bool
42
iOS state machine
Опишем состояния и
переходы между ними
43
iOS state machine
Состояния
Received
Waiting
NoData
Error
44
iOS state machine
Состояния
45
iOS state machine
Состояния
46
iOS state machine
Зададим параметры
автомата
47
iOS state machine
Создаем состояния
let waitingDataState = WaitingDataState()
let dataAvailableState = DataAvailableState()
let dataNotAvailableState = DataNotAvailableState()
let errorState = ErrorState()
48
iOS state machine
Задаем начальное состояние
stateMachine.enterState(WaitingDataState)
49
iOS state machine
Управление
50
enterState(WaitingDataState)
…
IF (error) {
enterState(ErrorState)
} ELSE IF (data != NULL) {
enterState(DataAvailableState)
} ELSE {
enterState(DataNotAvailableState)
}
iOS state machine
51
Gang of Four
iOS state machine
State pattern
52
iOS state machine
GKStateMachine
func goNextWith(_ config: AnyObject)
53
iOS state machine
GKState
func nextStateWith(_ config: AnyObject) -> AnyClass
54
iOS state machine
GameplayKit
Достоинства
• стандартная библиотека
• проста в освоении
• Objective-C / Swift
55
iOS state machine
GameplayKit
Недостатки
• доступна с iOS 9.0
• реализации состояний и переходов
тесно связаны
• дубликаты состояний
56
iOS state machine
57
• Постановка задачи
• Пример
• Другие реализации
• Заключение
iOS state machine
Objective-C
58
Библиотека iOS
TransitionKit 998 5.0
Shift 127 5.0?
TBStateMachine 36 5.0
iOS state machine
Библиотека iOS
TransitionKit 998 5.0
Shift 127 5.0?
TBStateMachine 36 5.0
Objective-C
59
iOS state machine
TransitionKit
• Состояния отделены от переходов
• Передача полезных данных при переходе
• Описание ошибочных переходов
60
iOS state machine
TransitionKit
61
• Состояния отделены от переходов
• Передача полезных данных при переходе
• Описание ошибочных переходов
iOS state machine
TransitionKit
62
• Состояния отделены от переходов
• Передача полезных данных при переходе
• Описание ошибочных переходов
iOS state machine
RestKit
63
iOS state machine
@interface RKOperationStateMachine : NSObject
@property (weak) NSOperation *operation;
@property dispatch_queue_t dispatchQueue;
@end
@interface RKOperationStateMachine ()
@property TKStateMachine *stateMachine;
@end
RestKit
64
iOS state machine
RestKit
ExecutingReady Finished
Start Finish / Cancel
65
iOS state machine
RestKit
- (void)start {
[self.stateMachine start];
}
66
iOS state machine
Objective-C
67
Библиотека iOS
TransitionKit 998 5.0
Shift 127 5.0?
TBStateMachine 36 5.0
iOS state machine
Shift
Любой NSObject может быть автоматом
68
iOS state machine
Swift
Библиотека Swift version
SwiftState 483 2.2
SwiftyStateMachine 287 2.2
Transporter 232 2.2
69
iOS state machine
Библиотека Swift version
SwiftState 483 2.2
SwiftyStateMachine 287 2.2
Transporter 232 2.2
Swift
70
iOS state machine
SwiftyStateMachine
•Полное описание автомата
•Контроль входных сигналов
•Высокая производительность
•Визуализация
71
iOS state machine
SwiftyStateMachine
72
•Полное описание автомата
•Контроль входных сигналов
•Высокая производительность
•Визуализация
iOS state machine
SwiftyStateMachine
73
•Полное описание автомата
•Контроль входных сигналов
•Высокая производительность
•Визуализация
iOS state machine
SwiftyStateMachine
74
•Полное описание автомата
•Контроль входных сигналов
•Высокая производительность
•Визуализация
iOS state machine
SwiftyStateMachine
75
<DOTLabelable>
•Визуализация
iOS state machine
76
• Постановка задачи
• Пример
• Другие реализации
• Заключение
iOS state machine
Достоинства
• Формализация
• Тестируемость
• Контроль потоков данных
• Контроль ошибок
• Единая точка входа для логирования / статистики
• История операций
77
iOS state machine
Достоинства
78
• Формализация
• Тестируемость
• Контроль потоков данных
• Контроль ошибок
• Единая точка входа для логирования / статистики
• История операций
iOS state machine
Достоинства
79
• Формализация
• Тестируемость
• Контроль потоков данных
• Контроль ошибок
• Единая точка входа для логирования / статистики
• История операций
iOS state machine
Достоинства
80
• Формализация
• Тестируемость
• Контроль потоков данных
• Контроль ошибок
• Единая точка входа для логирования / статистики
• История операций
iOS state machine
Достоинства
81
• Формализация
• Тестируемость
• Контроль потоков данных
• Контроль ошибок
• Единая точка входа для логирования / статистики
• История операций
iOS state machine
Достоинства
82
• Формализация
• Тестируемость
• Контроль потоков данных
• Контроль ошибок
• Единая точка входа для логирования / статистики
• История операций
iOS state machine
Задачи
Заказ такси
83
iOS state machine
Задачи
- (void)handleOrder:(Order *)order {
OrderStatus status = order.status;
switch (status) {
case OrderStatusOrdering:
[self.view showOrdering];
[self.interactor handleRideWithOrder:order];
break;
case OrderStatusWaiting:
[self.view showWaiting];
[self.interactor handleWaitingWithOrder:order];
break;
case OrderStatusDriverIsWaiting:
[self.view showDriverIsWaiting];
[self.interactor handleDriverIsWaitingWithOrder:order];
break;
case OrderStatusRide:
[self.view showRide];
[self.interactor handleRideWithOrder:order];
break;
case OrderStatusPayment:
[self.view showPayment];
[self.interactor handlePaymentWithOrder:order];
break;
case OrderStatusFinished:
[self.view showFinished];
[self.interactor handleFinishedWithOrder:order];
break;
case OrderStatusWaitingCancelled:
[self.view showWaitingCancelled];
[self.interactor handleWaitingCancelledWithOrder:order];
break;
case OrderStatusDriverIsWaitingCancelled:
[self.view showDriverIsWaitingCancelled];
[self.interactor handleDriverIsWaitingCancelledWithOrder:order];
break;
default:
[self.view showError];
break;
}
}
84
iOS state machine
Задачи
WaitingOrdering
Driver is
waiting
Placed
RidePayment
Arrived
Go
ArrivedFinished Paid
Cancelled
Cancelled
85
Заказ такси
iOS state machine
Заказ такси
86
iOS state machine
Задачи
Оформление заказа
87
iOS state machine
Задачи
DrawingUpOrdering Payment
Confirm
ShippingReceipt
Approved
Paid
Arrived
Finished
Received
Cancelled
Cancelled
88
Оформление заказа
iOS state machine
Задачи
Оплата
89
iOS state machine
App Coordinators
90
iOS state machine
@sychevbrain89
Brain89
rambler-ios
hr@rambler-co.ru
www.rambler-co.ru/jobs
Power OffPower On
Button click
Button click
State
Transition
Event

Más contenido relacionado

Destacado

SEO обучение за непрофесионалисти- в Biz Labs Plovdiv
SEO обучение за непрофесионалисти- в Biz Labs Plovdiv SEO обучение за непрофесионалисти- в Biz Labs Plovdiv
SEO обучение за непрофесионалисти- в Biz Labs Plovdiv Borislav Arapchev
 
Mountaire profile.pdf 6.19.15 (vietnamese)
Mountaire profile.pdf 6.19.15 (vietnamese)Mountaire profile.pdf 6.19.15 (vietnamese)
Mountaire profile.pdf 6.19.15 (vietnamese)Jessica Loan Tran
 
Индекс Инклюзии - инструмент развития школы
Индекс Инклюзии - инструмент развития школыИндекс Инклюзии - инструмент развития школы
Индекс Инклюзии - инструмент развития школыSelf-employed
 
The Development of Public Transportation Strategic Plan for Metro Cebu Volume...
The Development of Public Transportation Strategic Plan for Metro Cebu Volume...The Development of Public Transportation Strategic Plan for Metro Cebu Volume...
The Development of Public Transportation Strategic Plan for Metro Cebu Volume...Emmanuel Mongaya
 
Innovative hardware systems at ArabNet Beirut 2017
Innovative hardware systems at ArabNet Beirut 2017Innovative hardware systems at ArabNet Beirut 2017
Innovative hardware systems at ArabNet Beirut 2017ArabNet ME
 
Program kerja ksa 2017
Program kerja ksa 2017Program kerja ksa 2017
Program kerja ksa 2017SUKAWANGI03
 
Lernen mit digitalen Technologien - Herausforderungen und Chancen
Lernen mit digitalen Technologien - Herausforderungen und ChancenLernen mit digitalen Technologien - Herausforderungen und Chancen
Lernen mit digitalen Technologien - Herausforderungen und ChancenRoy Franke
 
Artisto: опыт запуска нейросетей в production / Эдуард Тянтов (Mail.ru Group)
Artisto: опыт запуска нейросетей в production / Эдуард Тянтов (Mail.ru Group)Artisto: опыт запуска нейросетей в production / Эдуард Тянтов (Mail.ru Group)
Artisto: опыт запуска нейросетей в production / Эдуард Тянтов (Mail.ru Group)Ontico
 
Evaluation question 3
Evaluation question 3Evaluation question 3
Evaluation question 3aimeehopson
 

Destacado (13)

Animaciones ejercicio
Animaciones ejercicioAnimaciones ejercicio
Animaciones ejercicio
 
SEO обучение за непрофесионалисти- в Biz Labs Plovdiv
SEO обучение за непрофесионалисти- в Biz Labs Plovdiv SEO обучение за непрофесионалисти- в Biz Labs Plovdiv
SEO обучение за непрофесионалисти- в Biz Labs Plovdiv
 
инф.бюл.№17
инф.бюл.№17инф.бюл.№17
инф.бюл.№17
 
Mountaire profile.pdf 6.19.15 (vietnamese)
Mountaire profile.pdf 6.19.15 (vietnamese)Mountaire profile.pdf 6.19.15 (vietnamese)
Mountaire profile.pdf 6.19.15 (vietnamese)
 
NEWSLETTER T5
NEWSLETTER T5NEWSLETTER T5
NEWSLETTER T5
 
Индекс Инклюзии - инструмент развития школы
Индекс Инклюзии - инструмент развития школыИндекс Инклюзии - инструмент развития школы
Индекс Инклюзии - инструмент развития школы
 
Repaso Fundamentos de Marketing***
Repaso Fundamentos de Marketing***Repaso Fundamentos de Marketing***
Repaso Fundamentos de Marketing***
 
The Development of Public Transportation Strategic Plan for Metro Cebu Volume...
The Development of Public Transportation Strategic Plan for Metro Cebu Volume...The Development of Public Transportation Strategic Plan for Metro Cebu Volume...
The Development of Public Transportation Strategic Plan for Metro Cebu Volume...
 
Innovative hardware systems at ArabNet Beirut 2017
Innovative hardware systems at ArabNet Beirut 2017Innovative hardware systems at ArabNet Beirut 2017
Innovative hardware systems at ArabNet Beirut 2017
 
Program kerja ksa 2017
Program kerja ksa 2017Program kerja ksa 2017
Program kerja ksa 2017
 
Lernen mit digitalen Technologien - Herausforderungen und Chancen
Lernen mit digitalen Technologien - Herausforderungen und ChancenLernen mit digitalen Technologien - Herausforderungen und Chancen
Lernen mit digitalen Technologien - Herausforderungen und Chancen
 
Artisto: опыт запуска нейросетей в production / Эдуард Тянтов (Mail.ru Group)
Artisto: опыт запуска нейросетей в production / Эдуард Тянтов (Mail.ru Group)Artisto: опыт запуска нейросетей в production / Эдуард Тянтов (Mail.ru Group)
Artisto: опыт запуска нейросетей в production / Эдуард Тянтов (Mail.ru Group)
 
Evaluation question 3
Evaluation question 3Evaluation question 3
Evaluation question 3
 

Similar a Как не выстрелить себе в ногу из конечного автомата / Александр Сычев (RAMBLER&Co)

automation is iOS development
automation is iOS developmentautomation is iOS development
automation is iOS developmentIvan Trifonov
 
И снова разработка под iOS. Павел Тайкало
И снова разработка под iOS. Павел ТайкалоИ снова разработка под iOS. Павел Тайкало
И снова разработка под iOS. Павел ТайкалоStanfy
 
End-2-End UI автоматизация в мобильном приложении. Наша реализация
End-2-End UI автоматизация в мобильном приложении. Наша реализацияEnd-2-End UI автоматизация в мобильном приложении. Наша реализация
End-2-End UI автоматизация в мобильном приложении. Наша реализацияSQALab
 
Сенцов Сергей "Приемы оптимизаций Desktop приложений"
Сенцов Сергей "Приемы оптимизаций Desktop приложений"Сенцов Сергей "Приемы оптимизаций Desktop приложений"
Сенцов Сергей "Приемы оптимизаций Desktop приложений"Yulia Tsisyk
 
Веб 3.0. Есть ли будущее у Java в RIA и Mobile?
Веб 3.0. Есть ли будущее у Java в RIA и Mobile?Веб 3.0. Есть ли будущее у Java в RIA и Mobile?
Веб 3.0. Есть ли будущее у Java в RIA и Mobile?Nikita Lipsky
 
iOS and Android Mobile Test Automation
iOS and Android Mobile Test AutomationiOS and Android Mobile Test Automation
iOS and Android Mobile Test AutomationAndrii Dzynia
 
UWDC 2013, Как мы используем Yii
UWDC 2013, Как мы используем YiiUWDC 2013, Как мы используем Yii
UWDC 2013, Как мы используем YiiAlexander Makarov
 
Mobile automation uamobile
Mobile automation uamobileMobile automation uamobile
Mobile automation uamobileUA Mobile
 
"Истории из жизни опытного iOS разработчика"— Игорь Чертенков
"Истории из жизни опытного iOS разработчика"— Игорь Чертенков"Истории из жизни опытного iOS разработчика"— Игорь Чертенков
"Истории из жизни опытного iOS разработчика"— Игорь ЧертенковImprove Group
 
Automation Functional Testing in Agile Projects
Automation Functional Testing in Agile ProjectsAutomation Functional Testing in Agile Projects
Automation Functional Testing in Agile ProjectsAndrey Rebrov
 
E2E-тестирование мобильных приложений
E2E-тестирование мобильных приложенийE2E-тестирование мобильных приложений
E2E-тестирование мобильных приложенийMoscowJS
 
Автоматизация UI тестирования под Windows и Windows Phone
Автоматизация UI тестирования под Windows и Windows PhoneАвтоматизация UI тестирования под Windows и Windows Phone
Автоматизация UI тестирования под Windows и Windows PhoneCodeFest
 
Solving the problems of espresso android autotests
Solving the problems of espresso android autotestsSolving the problems of espresso android autotests
Solving the problems of espresso android autotestsALEKSEITIURIN
 
Автоматизация тестирования iOS и Android приложений
Автоматизация тестирования iOS и Android приложенийАвтоматизация тестирования iOS и Android приложений
Автоматизация тестирования iOS и Android приложенийAndrei Pugachev
 
Бинарные уязвимости и эксплойты: технологии и перспективы
Бинарные уязвимости и эксплойты: технологии и перспективыБинарные уязвимости и эксплойты: технологии и перспективы
Бинарные уязвимости и эксплойты: технологии и перспективыd_olex
 
MBLTDev15: Alexander Orlov, Postforpost
MBLTDev15: Alexander Orlov, PostforpostMBLTDev15: Alexander Orlov, Postforpost
MBLTDev15: Alexander Orlov, Postforposte-Legion
 
Илья Кудинов
Илья КудиновИлья Кудинов
Илья КудиновCodeFest
 
QA Fest 2016. Денис Яременко. Как облегчить процесс мобильного тестирования
QA Fest 2016. Денис Яременко. Как облегчить процесс мобильного тестированияQA Fest 2016. Денис Яременко. Как облегчить процесс мобильного тестирования
QA Fest 2016. Денис Яременко. Как облегчить процесс мобильного тестированияQAFest
 
Moxy – реализация MVP под Android. С щепоткой магии
Moxy – реализация MVP под Android. С щепоткой магииMoxy – реализация MVP под Android. С щепоткой магии
Moxy – реализация MVP под Android. С щепоткой магииYuri Shmakov
 

Similar a Как не выстрелить себе в ногу из конечного автомата / Александр Сычев (RAMBLER&Co) (20)

automation is iOS development
automation is iOS developmentautomation is iOS development
automation is iOS development
 
И снова разработка под iOS. Павел Тайкало
И снова разработка под iOS. Павел ТайкалоИ снова разработка под iOS. Павел Тайкало
И снова разработка под iOS. Павел Тайкало
 
End-2-End UI автоматизация в мобильном приложении. Наша реализация
End-2-End UI автоматизация в мобильном приложении. Наша реализацияEnd-2-End UI автоматизация в мобильном приложении. Наша реализация
End-2-End UI автоматизация в мобильном приложении. Наша реализация
 
Сенцов Сергей "Приемы оптимизаций Desktop приложений"
Сенцов Сергей "Приемы оптимизаций Desktop приложений"Сенцов Сергей "Приемы оптимизаций Desktop приложений"
Сенцов Сергей "Приемы оптимизаций Desktop приложений"
 
Automation testing desktop applications
Automation testing desktop applicationsAutomation testing desktop applications
Automation testing desktop applications
 
Веб 3.0. Есть ли будущее у Java в RIA и Mobile?
Веб 3.0. Есть ли будущее у Java в RIA и Mobile?Веб 3.0. Есть ли будущее у Java в RIA и Mobile?
Веб 3.0. Есть ли будущее у Java в RIA и Mobile?
 
iOS and Android Mobile Test Automation
iOS and Android Mobile Test AutomationiOS and Android Mobile Test Automation
iOS and Android Mobile Test Automation
 
UWDC 2013, Как мы используем Yii
UWDC 2013, Как мы используем YiiUWDC 2013, Как мы используем Yii
UWDC 2013, Как мы используем Yii
 
Mobile automation uamobile
Mobile automation uamobileMobile automation uamobile
Mobile automation uamobile
 
"Истории из жизни опытного iOS разработчика"— Игорь Чертенков
"Истории из жизни опытного iOS разработчика"— Игорь Чертенков"Истории из жизни опытного iOS разработчика"— Игорь Чертенков
"Истории из жизни опытного iOS разработчика"— Игорь Чертенков
 
Automation Functional Testing in Agile Projects
Automation Functional Testing in Agile ProjectsAutomation Functional Testing in Agile Projects
Automation Functional Testing in Agile Projects
 
E2E-тестирование мобильных приложений
E2E-тестирование мобильных приложенийE2E-тестирование мобильных приложений
E2E-тестирование мобильных приложений
 
Автоматизация UI тестирования под Windows и Windows Phone
Автоматизация UI тестирования под Windows и Windows PhoneАвтоматизация UI тестирования под Windows и Windows Phone
Автоматизация UI тестирования под Windows и Windows Phone
 
Solving the problems of espresso android autotests
Solving the problems of espresso android autotestsSolving the problems of espresso android autotests
Solving the problems of espresso android autotests
 
Автоматизация тестирования iOS и Android приложений
Автоматизация тестирования iOS и Android приложенийАвтоматизация тестирования iOS и Android приложений
Автоматизация тестирования iOS и Android приложений
 
Бинарные уязвимости и эксплойты: технологии и перспективы
Бинарные уязвимости и эксплойты: технологии и перспективыБинарные уязвимости и эксплойты: технологии и перспективы
Бинарные уязвимости и эксплойты: технологии и перспективы
 
MBLTDev15: Alexander Orlov, Postforpost
MBLTDev15: Alexander Orlov, PostforpostMBLTDev15: Alexander Orlov, Postforpost
MBLTDev15: Alexander Orlov, Postforpost
 
Илья Кудинов
Илья КудиновИлья Кудинов
Илья Кудинов
 
QA Fest 2016. Денис Яременко. Как облегчить процесс мобильного тестирования
QA Fest 2016. Денис Яременко. Как облегчить процесс мобильного тестированияQA Fest 2016. Денис Яременко. Как облегчить процесс мобильного тестирования
QA Fest 2016. Денис Яременко. Как облегчить процесс мобильного тестирования
 
Moxy – реализация MVP под Android. С щепоткой магии
Moxy – реализация MVP под Android. С щепоткой магииMoxy – реализация MVP под Android. С щепоткой магии
Moxy – реализация MVP под Android. С щепоткой магии
 

Más 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
 

Más 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...
 

Как не выстрелить себе в ногу из конечного автомата / Александр Сычев (RAMBLER&Co)