SlideShare a Scribd company logo
Dependency Injection
в iOS
Дугнист Владислав
План
• Что такое зависимости?
• Что такое внедрение зависимостей (DI)?
• Какие плюсы мы получаем при использовании
DI?
• Почему я выбрал Blood Magic.
2
Зависимости
View
Controller
3
Зависимости
View
Controller
Service
Data
3
Зависимости
- (void)viewDidLoad
{
[super viewDidLoad];
__weak typeof(self) wSelf = self;
[??? citiesWeatherWithCallback:^(NSArray *array, NSError *error) {
wSelf.cities = array;
[wSelf.tableView reloadData];
}];
}
4
Зависимости
- (void)viewDidLoad
{
[super viewDidLoad];
__weak typeof(self) wSelf = self;
[??? citiesWeatherWithCallback:^(NSArray *array, NSError *error) {
wSelf.cities = array;
[wSelf.tableView reloadData];
}];
}
Зависимость
4
Зависимости
Singleton решение:
- (void)viewDidLoad
{
[super viewDidLoad];
__weak typeof(self) wSelf = self;
[[WFCOpenWeatherService sharedInstance]
citiesWeatherWithCallback:^(NSArray *array, NSError *error) {
wSelf.cities = array;
[wSelf.tableView reloadData];
}];
}
5
Зависимости
Singleton решение:
- (void)viewDidLoad
{
[super viewDidLoad];
__weak typeof(self) wSelf = self;
[[WFCOpenWeatherService sharedInstance]
citiesWeatherWithCallback:^(NSArray *array, NSError *error) {
wSelf.cities = array;
[wSelf.tableView reloadData];
}];
}
Неявная зависимость
5
Признак неявных
зависимостей
// WFCViewController.h
@interface WFCViewController : UIViewController
@end
6
Inversion of control
// WFCViewController.h
@interface WFCViewController : UIViewController
@property (nonatomic) id <WFCWeatherServiceProtocol> weatherService;
@end
// WFCViewController.m
- (void)viewDidLoad
{
[super viewDidLoad];
__weak typeof(self) wSelf = self;
[_weatherService citiesWeatherWithCallback:^(NSArray *array, NSError
*error) {
wSelf.cities = array;
[wSelf.tableView reloadData];
}];
}
7
Чем полезен IoC?
• Повышает читаемость кода.
• Позволяет выставлять сервисы с заглушками в
отладочной версии.
• Упрощает тестирование.
Демо
9
Blood Magic
• github: https://github.com/railsware/BloodMagic
• Podfile: pod 'BloodMagic/Injectable', :git =>
'https://github.com/railsware/BloodMagic.git'
Blood Magic
BMInitializer *weatherServiceInitializer =
[BMInitializer injectableInitializer];
weatherServiceInitializer.containerClass =
[WFCViewController class];
weatherServiceInitializer.protocols =
@[@protocol(WFCWeatherServiceProtocol)];
weatherServiceInitializer.initializer = ^id (id sender) {
return [WFCLocalWeatherService new];
};
[weatherServiceInitializer registerInitializer];
Blood Magic (синтаксис)
@interface BMInitializer : NSObject
@property (nonatomic, strong) Class propertyClass;
@property (nonatomic, strong) Class containerClass;
@property (nonatomic, strong) NSArray *protocols;
@property (nonatomic, copy) magic_initializer_t initializer;
- (void)registerInitializer;
@end
Blood Magic
// WFCViewController.h
@interface WFCViewController : UIViewController <BMInjectable>
@property (nonatomic) id <WFCWeatherServiceProtocol> weatherService;
@end
// WFCViewController.m
@dynamic weatherService;
Демо 2
Другие DI-
фреймворки
Typhoon
• http://typhoonframework.org
• github: https://github.com/appsquickly/Typhoon
• Серия статей на хабре: http://habrahabr.ru/
company/rambler-co/blog/258325/
• Доклад Rambler&Co: http://www.youtube.com/
watch?v=LO59z3fjc9k
Typhoon
• Конфигурация зависимостей на уровне
assembly.
• Auto-inject.
Typhoon
Удобные аннотации:
@interface WFCViewController : UIViewController
@property (nonatomic) InjectedProtocol(WFCWeatherServiceProtocol)
weatherService;
@end
Typhoon
@implementation WFCAssembly
- (id <WFCWeatherServiceProtocol>)defaultWeatherService
{
return [TyphoonDefinition withClass:[WFCLocalWeatherService class]
configuration:^(TyphoonDefinition *definition) {
definition.scope = TyphoonScopeSingleton;
}];
}
@end
typedef NS_ENUM(NSInteger, TyphoonScope)
{
TyphoonScopeObjectGraph,
TyphoonScopePrototype,
TyphoonScopeSingleton,
TyphoonScopeLazySingleton,
TyphoonScopeWeakSingleton,
};
Typhoon
+ удобные аннотации
+ поддержка scope
+ больше community
- большие накладные расходы при работе с assembly
- нет возможности выставить условием containerClass
при auto inject’ах
Objection
• http://objection-framework.org
• github: https://github.com/atomicobject/
objection
Objection
@interface Car : NSObject
{
Engine *engine;
Brakes *brakes;
BOOL awake;
}
// Will be filled in by objection
@property(nonatomic, strong) Engine *engine;
// Will be filled in by objection
@property(nonatomic, strong) Brakes *brakes;
@property(nonatomic) BOOL awake;
@implementation Car
objection_requires(@"engine", @"brakes")
@synthesize engine, brakes, awake;
@end
Objection
+ поддержка scope
+ второй по популярности после typhoon
- синтаксис
- отсутствие аннотаций
- нет возможности выставить условием containerClass
при inject’ах
The end
cocoaheads slack: @dv
other: /vdugnist

More Related Content

What's hot

Чистая архитектура с VIPER / Сергей Крапивенский (Rambler&Co)
Чистая архитектура с VIPER / Сергей Крапивенский (Rambler&Co)Чистая архитектура с VIPER / Сергей Крапивенский (Rambler&Co)
Чистая архитектура с VIPER / Сергей Крапивенский (Rambler&Co)
Ontico
 
#7 "Многообещающий JavaScript – Promises" Денис Речкунов
#7 "Многообещающий JavaScript – Promises" Денис Речкунов#7 "Многообещающий JavaScript – Promises" Денис Речкунов
#7 "Многообещающий JavaScript – Promises" Денис Речкунов
JSib
 
Референсная архитектура приложения на ASP.NET MVC
Референсная архитектура приложения на ASP.NET MVCРеференсная архитектура приложения на ASP.NET MVC
Референсная архитектура приложения на ASP.NET MVCAndrew Mayorov
 
Rambler.iOS #3: Dependency Injection в iOS
Rambler.iOS #3: Dependency Injection в iOSRambler.iOS #3: Dependency Injection в iOS
Rambler.iOS #3: Dependency Injection в iOS
RAMBLER&Co
 
Selenium: начало работы
Selenium: начало работыSelenium: начало работы
Selenium: начало работыPaul Stashevsky
 
Киллер-фича языка C# — конструкция async/await
Киллер-фича языка C# — конструкция async/awaitКиллер-фича языка C# — конструкция async/await
Киллер-фича языка C# — конструкция async/await
Byndyusoft
 
Selenium: приемы работы
Selenium: приемы работыSelenium: приемы работы
Selenium: приемы работы
Paul Stashevsky
 
In-App-Purchases и с чем их едят
In-App-Purchases и с чем их едятIn-App-Purchases и с чем их едят
In-App-Purchases и с чем их едят
Pavel Bashmakov
 
Knockoutjs на примере 2ГИС-Онлайн
Knockoutjs на примере 2ГИС-ОнлайнKnockoutjs на примере 2ГИС-Онлайн
Knockoutjs на примере 2ГИС-Онлайн2ГИС Технологии
 
Rambler.iOS #5: VIPER и Swift
Rambler.iOS #5: VIPER и SwiftRambler.iOS #5: VIPER и Swift
Rambler.iOS #5: VIPER и Swift
RAMBLER&Co
 
"Истории из жизни опытного iOS разработчика"— Игорь Чертенков
"Истории из жизни опытного iOS разработчика"— Игорь Чертенков"Истории из жизни опытного iOS разработчика"— Игорь Чертенков
"Истории из жизни опытного iOS разработчика"— Игорь Чертенков
Improve Group
 
Rambler.iOS #5: Генерамба и прочие аспекты кодогенерации в VIPER
Rambler.iOS #5: Генерамба и прочие аспекты кодогенерации в VIPERRambler.iOS #5: Генерамба и прочие аспекты кодогенерации в VIPER
Rambler.iOS #5: Генерамба и прочие аспекты кодогенерации в VIPER
RAMBLER&Co
 
сервисы в Angular js
сервисы в Angular jsсервисы в Angular js
сервисы в Angular js
yakimchuk
 
Пользователь точно оценит! Повышение производительности мобильных приложений ...
Пользователь точно оценит! Повышение производительности мобильных приложений ...Пользователь точно оценит! Повышение производительности мобильных приложений ...
Пользователь точно оценит! Повышение производительности мобильных приложений ...
Ontico
 
iOS-05_2-UIKit
iOS-05_2-UIKitiOS-05_2-UIKit
iOS-05_2-UIKit
Noveo
 
View как чистая функция от состояния базы данных - Илья Беда, bro.agency
View как чистая функция от состояния базы данных  - Илья Беда, bro.agencyView как чистая функция от состояния базы данных  - Илья Беда, bro.agency
View как чистая функция от состояния базы данных - Илья Беда, bro.agency
it-people
 
Java 9: what is there beyond modularization
Java 9: what is there beyond modularizationJava 9: what is there beyond modularization
Java 9: what is there beyond modularization
Ivan Krylov
 
Разработка Web-приложений на Angular JS. Архитектурные семинары Softengi
Разработка Web-приложений на Angular JS. Архитектурные семинары SoftengiРазработка Web-приложений на Angular JS. Архитектурные семинары Softengi
Разработка Web-приложений на Angular JS. Архитектурные семинары Softengi
Softengi
 
Технологии тестирования Rich Web client, Андрей Плешков, Форум Технологий Mai...
Технологии тестирования Rich Web client, Андрей Плешков, Форум Технологий Mai...Технологии тестирования Rich Web client, Андрей Плешков, Форум Технологий Mai...
Технологии тестирования Rich Web client, Андрей Плешков, Форум Технологий Mai...tfmailru
 
Изоморфные приложения и Python - Виталий Глибин, Huntflow
Изоморфные приложения и Python - Виталий Глибин, HuntflowИзоморфные приложения и Python - Виталий Глибин, Huntflow
Изоморфные приложения и Python - Виталий Глибин, Huntflow
it-people
 

What's hot (20)

Чистая архитектура с VIPER / Сергей Крапивенский (Rambler&Co)
Чистая архитектура с VIPER / Сергей Крапивенский (Rambler&Co)Чистая архитектура с VIPER / Сергей Крапивенский (Rambler&Co)
Чистая архитектура с VIPER / Сергей Крапивенский (Rambler&Co)
 
#7 "Многообещающий JavaScript – Promises" Денис Речкунов
#7 "Многообещающий JavaScript – Promises" Денис Речкунов#7 "Многообещающий JavaScript – Promises" Денис Речкунов
#7 "Многообещающий JavaScript – Promises" Денис Речкунов
 
Референсная архитектура приложения на ASP.NET MVC
Референсная архитектура приложения на ASP.NET MVCРеференсная архитектура приложения на ASP.NET MVC
Референсная архитектура приложения на ASP.NET MVC
 
Rambler.iOS #3: Dependency Injection в iOS
Rambler.iOS #3: Dependency Injection в iOSRambler.iOS #3: Dependency Injection в iOS
Rambler.iOS #3: Dependency Injection в iOS
 
Selenium: начало работы
Selenium: начало работыSelenium: начало работы
Selenium: начало работы
 
Киллер-фича языка C# — конструкция async/await
Киллер-фича языка C# — конструкция async/awaitКиллер-фича языка C# — конструкция async/await
Киллер-фича языка C# — конструкция async/await
 
Selenium: приемы работы
Selenium: приемы работыSelenium: приемы работы
Selenium: приемы работы
 
In-App-Purchases и с чем их едят
In-App-Purchases и с чем их едятIn-App-Purchases и с чем их едят
In-App-Purchases и с чем их едят
 
Knockoutjs на примере 2ГИС-Онлайн
Knockoutjs на примере 2ГИС-ОнлайнKnockoutjs на примере 2ГИС-Онлайн
Knockoutjs на примере 2ГИС-Онлайн
 
Rambler.iOS #5: VIPER и Swift
Rambler.iOS #5: VIPER и SwiftRambler.iOS #5: VIPER и Swift
Rambler.iOS #5: VIPER и Swift
 
"Истории из жизни опытного iOS разработчика"— Игорь Чертенков
"Истории из жизни опытного iOS разработчика"— Игорь Чертенков"Истории из жизни опытного iOS разработчика"— Игорь Чертенков
"Истории из жизни опытного iOS разработчика"— Игорь Чертенков
 
Rambler.iOS #5: Генерамба и прочие аспекты кодогенерации в VIPER
Rambler.iOS #5: Генерамба и прочие аспекты кодогенерации в VIPERRambler.iOS #5: Генерамба и прочие аспекты кодогенерации в VIPER
Rambler.iOS #5: Генерамба и прочие аспекты кодогенерации в VIPER
 
сервисы в Angular js
сервисы в Angular jsсервисы в Angular js
сервисы в Angular js
 
Пользователь точно оценит! Повышение производительности мобильных приложений ...
Пользователь точно оценит! Повышение производительности мобильных приложений ...Пользователь точно оценит! Повышение производительности мобильных приложений ...
Пользователь точно оценит! Повышение производительности мобильных приложений ...
 
iOS-05_2-UIKit
iOS-05_2-UIKitiOS-05_2-UIKit
iOS-05_2-UIKit
 
View как чистая функция от состояния базы данных - Илья Беда, bro.agency
View как чистая функция от состояния базы данных  - Илья Беда, bro.agencyView как чистая функция от состояния базы данных  - Илья Беда, bro.agency
View как чистая функция от состояния базы данных - Илья Беда, bro.agency
 
Java 9: what is there beyond modularization
Java 9: what is there beyond modularizationJava 9: what is there beyond modularization
Java 9: what is there beyond modularization
 
Разработка Web-приложений на Angular JS. Архитектурные семинары Softengi
Разработка Web-приложений на Angular JS. Архитектурные семинары SoftengiРазработка Web-приложений на Angular JS. Архитектурные семинары Softengi
Разработка Web-приложений на Angular JS. Архитектурные семинары Softengi
 
Технологии тестирования Rich Web client, Андрей Плешков, Форум Технологий Mai...
Технологии тестирования Rich Web client, Андрей Плешков, Форум Технологий Mai...Технологии тестирования Rich Web client, Андрей Плешков, Форум Технологий Mai...
Технологии тестирования Rich Web client, Андрей Плешков, Форум Технологий Mai...
 
Изоморфные приложения и Python - Виталий Глибин, Huntflow
Изоморфные приложения и Python - Виталий Глибин, HuntflowИзоморфные приложения и Python - Виталий Глибин, Huntflow
Изоморфные приложения и Python - Виталий Глибин, Huntflow
 

Viewers also liked

BizTalks. Алексей Сергеев. Проект «Mail.Ru для бизнеса»
BizTalks. Алексей Сергеев. Проект «Mail.Ru для бизнеса»BizTalks. Алексей Сергеев. Проект «Mail.Ru для бизнеса»
BizTalks. Алексей Сергеев. Проект «Mail.Ru для бизнеса»
Mail.ru Group
 
«Buzzwords everywhere, или Борьба с ветряными мельницами», Артём Дроздов, Mai...
«Buzzwords everywhere, или Борьба с ветряными мельницами», Артём Дроздов, Mai...«Buzzwords everywhere, или Борьба с ветряными мельницами», Артём Дроздов, Mai...
«Buzzwords everywhere, или Борьба с ветряными мельницами», Артём Дроздов, Mai...
Mail.ru Group
 
Денис Кулябин, Moscow Atlassian Meetup 21 апреля, Mail.Ru Group
Денис Кулябин, Moscow Atlassian Meetup 21 апреля, Mail.Ru GroupДенис Кулябин, Moscow Atlassian Meetup 21 апреля, Mail.Ru Group
Денис Кулябин, Moscow Atlassian Meetup 21 апреля, Mail.Ru Group
Mail.ru Group
 
BizTalks. Максим Макашев («Братья Чебурашкины. Семейная ферма»)
BizTalks. Максим Макашев («Братья Чебурашкины. Семейная ферма»)BizTalks. Максим Макашев («Братья Чебурашкины. Семейная ферма»)
BizTalks. Максим Макашев («Братья Чебурашкины. Семейная ферма»)
Mail.ru Group
 
Андрей Ларионов, Moscow Atlassian Meetup 21 апреля, Mail.Ru Group
Андрей Ларионов, Moscow Atlassian Meetup 21 апреля, Mail.Ru GroupАндрей Ларионов, Moscow Atlassian Meetup 21 апреля, Mail.Ru Group
Андрей Ларионов, Moscow Atlassian Meetup 21 апреля, Mail.Ru Group
Mail.ru Group
 
Дмитрий Юницкий. «Android NDK или как я перестал бояться и полюбил нативную р...
Дмитрий Юницкий. «Android NDK или как я перестал бояться и полюбил нативную р...Дмитрий Юницкий. «Android NDK или как я перестал бояться и полюбил нативную р...
Дмитрий Юницкий. «Android NDK или как я перестал бояться и полюбил нативную р...
Mail.ru Group
 
CocoaHeads Moscow. Азиз Латыпов, VIPole. «Запросы в CoreData с агрегатными фу...
CocoaHeads Moscow. Азиз Латыпов, VIPole. «Запросы в CoreData с агрегатными фу...CocoaHeads Moscow. Азиз Латыпов, VIPole. «Запросы в CoreData с агрегатными фу...
CocoaHeads Moscow. Азиз Латыпов, VIPole. «Запросы в CoreData с агрегатными фу...
Mail.ru Group
 
«JMM в Android», Максим Ефимов, Redmadrobot
«JMM в Android», Максим Ефимов, Redmadrobot«JMM в Android», Максим Ефимов, Redmadrobot
«JMM в Android», Максим Ефимов, Redmadrobot
Mail.ru Group
 
«Компонентная верстка с AngularJS», Андрей Яманов (CTO TeamHunt)
«Компонентная верстка с AngularJS», Андрей Яманов (CTO TeamHunt)«Компонентная верстка с AngularJS», Андрей Яманов (CTO TeamHunt)
«Компонентная верстка с AngularJS», Андрей Яманов (CTO TeamHunt)
Mail.ru Group
 
Droidcon Moscow 2015. Настоящий Build должен делать 3 вещи собрать, проверить...
Droidcon Moscow 2015. Настоящий Build должен делать 3 вещи собрать, проверить...Droidcon Moscow 2015. Настоящий Build должен делать 3 вещи собрать, проверить...
Droidcon Moscow 2015. Настоящий Build должен делать 3 вещи собрать, проверить...
Mail.ru Group
 
Droidcon Moscow 2015. Расширение мобильного бэкенда и интернета вещей в облак...
Droidcon Moscow 2015. Расширение мобильного бэкенда и интернета вещей в облак...Droidcon Moscow 2015. Расширение мобильного бэкенда и интернета вещей в облак...
Droidcon Moscow 2015. Расширение мобильного бэкенда и интернета вещей в облак...
Mail.ru Group
 
«Управление логикой переходов между экранами приложения с помощью координатор...
«Управление логикой переходов между экранами приложения с помощью координатор...«Управление логикой переходов между экранами приложения с помощью координатор...
«Управление логикой переходов между экранами приложения с помощью координатор...
Mail.ru Group
 
Droidcon Moscow 2015. Оптимизация кросс-платформенной разработки. Максим Кузн...
Droidcon Moscow 2015. Оптимизация кросс-платформенной разработки. Максим Кузн...Droidcon Moscow 2015. Оптимизация кросс-платформенной разработки. Максим Кузн...
Droidcon Moscow 2015. Оптимизация кросс-платформенной разработки. Максим Кузн...
Mail.ru Group
 
«Пиринговый веб на JavaScript», Денис Глазков
«Пиринговый веб на JavaScript», Денис Глазков«Пиринговый веб на JavaScript», Денис Глазков
«Пиринговый веб на JavaScript», Денис Глазков
Mail.ru Group
 
Дмитрий Селиванов, OK.RU. Finding Similar Items in high-dimensional spaces: L...
Дмитрий Селиванов, OK.RU. Finding Similar Items in high-dimensional spaces: L...Дмитрий Селиванов, OK.RU. Finding Similar Items in high-dimensional spaces: L...
Дмитрий Селиванов, OK.RU. Finding Similar Items in high-dimensional spaces: L...
Mail.ru Group
 
Дмитрий Симонов (независимый программист), «Учимся рисовать»
Дмитрий Симонов (независимый программист), «Учимся рисовать»Дмитрий Симонов (независимый программист), «Учимся рисовать»
Дмитрий Симонов (независимый программист), «Учимся рисовать»
Mail.ru Group
 
«Взломать за 60 секунд», Артем Кулаков, Redmadrobot
«Взломать за 60 секунд», Артем Кулаков, Redmadrobot«Взломать за 60 секунд», Артем Кулаков, Redmadrobot
«Взломать за 60 секунд», Артем Кулаков, Redmadrobot
Mail.ru Group
 
Илья Сафронов, Security Meetup 9 апреля, Mail.Ru Group
Илья Сафронов, Security Meetup 9 апреля, Mail.Ru GroupИлья Сафронов, Security Meetup 9 апреля, Mail.Ru Group
Илья Сафронов, Security Meetup 9 апреля, Mail.Ru Group
Mail.ru Group
 
BizTalks. Роман Кумар Виас (Qlean)
BizTalks. Роман Кумар Виас (Qlean)BizTalks. Роман Кумар Виас (Qlean)
BizTalks. Роман Кумар Виас (Qlean)
Mail.ru Group
 
Droidcon Moscow 2015. Взаимодействие между потоками в Android. Максим Ефимов ...
Droidcon Moscow 2015. Взаимодействие между потоками в Android. Максим Ефимов ...Droidcon Moscow 2015. Взаимодействие между потоками в Android. Максим Ефимов ...
Droidcon Moscow 2015. Взаимодействие между потоками в Android. Максим Ефимов ...
Mail.ru Group
 

Viewers also liked (20)

BizTalks. Алексей Сергеев. Проект «Mail.Ru для бизнеса»
BizTalks. Алексей Сергеев. Проект «Mail.Ru для бизнеса»BizTalks. Алексей Сергеев. Проект «Mail.Ru для бизнеса»
BizTalks. Алексей Сергеев. Проект «Mail.Ru для бизнеса»
 
«Buzzwords everywhere, или Борьба с ветряными мельницами», Артём Дроздов, Mai...
«Buzzwords everywhere, или Борьба с ветряными мельницами», Артём Дроздов, Mai...«Buzzwords everywhere, или Борьба с ветряными мельницами», Артём Дроздов, Mai...
«Buzzwords everywhere, или Борьба с ветряными мельницами», Артём Дроздов, Mai...
 
Денис Кулябин, Moscow Atlassian Meetup 21 апреля, Mail.Ru Group
Денис Кулябин, Moscow Atlassian Meetup 21 апреля, Mail.Ru GroupДенис Кулябин, Moscow Atlassian Meetup 21 апреля, Mail.Ru Group
Денис Кулябин, Moscow Atlassian Meetup 21 апреля, Mail.Ru Group
 
BizTalks. Максим Макашев («Братья Чебурашкины. Семейная ферма»)
BizTalks. Максим Макашев («Братья Чебурашкины. Семейная ферма»)BizTalks. Максим Макашев («Братья Чебурашкины. Семейная ферма»)
BizTalks. Максим Макашев («Братья Чебурашкины. Семейная ферма»)
 
Андрей Ларионов, Moscow Atlassian Meetup 21 апреля, Mail.Ru Group
Андрей Ларионов, Moscow Atlassian Meetup 21 апреля, Mail.Ru GroupАндрей Ларионов, Moscow Atlassian Meetup 21 апреля, Mail.Ru Group
Андрей Ларионов, Moscow Atlassian Meetup 21 апреля, Mail.Ru Group
 
Дмитрий Юницкий. «Android NDK или как я перестал бояться и полюбил нативную р...
Дмитрий Юницкий. «Android NDK или как я перестал бояться и полюбил нативную р...Дмитрий Юницкий. «Android NDK или как я перестал бояться и полюбил нативную р...
Дмитрий Юницкий. «Android NDK или как я перестал бояться и полюбил нативную р...
 
CocoaHeads Moscow. Азиз Латыпов, VIPole. «Запросы в CoreData с агрегатными фу...
CocoaHeads Moscow. Азиз Латыпов, VIPole. «Запросы в CoreData с агрегатными фу...CocoaHeads Moscow. Азиз Латыпов, VIPole. «Запросы в CoreData с агрегатными фу...
CocoaHeads Moscow. Азиз Латыпов, VIPole. «Запросы в CoreData с агрегатными фу...
 
«JMM в Android», Максим Ефимов, Redmadrobot
«JMM в Android», Максим Ефимов, Redmadrobot«JMM в Android», Максим Ефимов, Redmadrobot
«JMM в Android», Максим Ефимов, Redmadrobot
 
«Компонентная верстка с AngularJS», Андрей Яманов (CTO TeamHunt)
«Компонентная верстка с AngularJS», Андрей Яманов (CTO TeamHunt)«Компонентная верстка с AngularJS», Андрей Яманов (CTO TeamHunt)
«Компонентная верстка с AngularJS», Андрей Яманов (CTO TeamHunt)
 
Droidcon Moscow 2015. Настоящий Build должен делать 3 вещи собрать, проверить...
Droidcon Moscow 2015. Настоящий Build должен делать 3 вещи собрать, проверить...Droidcon Moscow 2015. Настоящий Build должен делать 3 вещи собрать, проверить...
Droidcon Moscow 2015. Настоящий Build должен делать 3 вещи собрать, проверить...
 
Droidcon Moscow 2015. Расширение мобильного бэкенда и интернета вещей в облак...
Droidcon Moscow 2015. Расширение мобильного бэкенда и интернета вещей в облак...Droidcon Moscow 2015. Расширение мобильного бэкенда и интернета вещей в облак...
Droidcon Moscow 2015. Расширение мобильного бэкенда и интернета вещей в облак...
 
«Управление логикой переходов между экранами приложения с помощью координатор...
«Управление логикой переходов между экранами приложения с помощью координатор...«Управление логикой переходов между экранами приложения с помощью координатор...
«Управление логикой переходов между экранами приложения с помощью координатор...
 
Droidcon Moscow 2015. Оптимизация кросс-платформенной разработки. Максим Кузн...
Droidcon Moscow 2015. Оптимизация кросс-платформенной разработки. Максим Кузн...Droidcon Moscow 2015. Оптимизация кросс-платформенной разработки. Максим Кузн...
Droidcon Moscow 2015. Оптимизация кросс-платформенной разработки. Максим Кузн...
 
«Пиринговый веб на JavaScript», Денис Глазков
«Пиринговый веб на JavaScript», Денис Глазков«Пиринговый веб на JavaScript», Денис Глазков
«Пиринговый веб на JavaScript», Денис Глазков
 
Дмитрий Селиванов, OK.RU. Finding Similar Items in high-dimensional spaces: L...
Дмитрий Селиванов, OK.RU. Finding Similar Items in high-dimensional spaces: L...Дмитрий Селиванов, OK.RU. Finding Similar Items in high-dimensional spaces: L...
Дмитрий Селиванов, OK.RU. Finding Similar Items in high-dimensional spaces: L...
 
Дмитрий Симонов (независимый программист), «Учимся рисовать»
Дмитрий Симонов (независимый программист), «Учимся рисовать»Дмитрий Симонов (независимый программист), «Учимся рисовать»
Дмитрий Симонов (независимый программист), «Учимся рисовать»
 
«Взломать за 60 секунд», Артем Кулаков, Redmadrobot
«Взломать за 60 секунд», Артем Кулаков, Redmadrobot«Взломать за 60 секунд», Артем Кулаков, Redmadrobot
«Взломать за 60 секунд», Артем Кулаков, Redmadrobot
 
Илья Сафронов, Security Meetup 9 апреля, Mail.Ru Group
Илья Сафронов, Security Meetup 9 апреля, Mail.Ru GroupИлья Сафронов, Security Meetup 9 апреля, Mail.Ru Group
Илья Сафронов, Security Meetup 9 апреля, Mail.Ru Group
 
BizTalks. Роман Кумар Виас (Qlean)
BizTalks. Роман Кумар Виас (Qlean)BizTalks. Роман Кумар Виас (Qlean)
BizTalks. Роман Кумар Виас (Qlean)
 
Droidcon Moscow 2015. Взаимодействие между потоками в Android. Максим Ефимов ...
Droidcon Moscow 2015. Взаимодействие между потоками в Android. Максим Ефимов ...Droidcon Moscow 2015. Взаимодействие между потоками в Android. Максим Ефимов ...
Droidcon Moscow 2015. Взаимодействие между потоками в Android. Максим Ефимов ...
 

Similar to CocoaHeads Moscow. Владислав Дугнист. «Dependency Injection с Blood Magic»

Практика использования Dependency Injection
Практика использования Dependency InjectionПрактика использования Dependency Injection
Практика использования Dependency Injection
Platonov Sergey
 
Школа-Студия разработки приложений для iOS. 5 лекция. Разное
Школа-Студия разработки приложений для iOS. 5 лекция. РазноеШкола-Студия разработки приложений для iOS. 5 лекция. Разное
Школа-Студия разработки приложений для iOS. 5 лекция. РазноеГлеб Тарасов
 
Школа-студия разработки приложений для iOS. 2 лекция. MVC, View, Controllers
Школа-студия разработки приложений для iOS. 2 лекция. MVC, View, ControllersШкола-студия разработки приложений для iOS. 2 лекция. MVC, View, Controllers
Школа-студия разработки приложений для iOS. 2 лекция. MVC, View, ControllersГлеб Тарасов
 
#MBLTdev: Опыт использования MVVM в реальных проектах
#MBLTdev: Опыт использования MVVM в реальных проектах#MBLTdev: Опыт использования MVVM в реальных проектах
#MBLTdev: Опыт использования MVVM в реальных проектах
e-Legion
 
RoboGuice
RoboGuiceRoboGuice
Zabbix в сервисной компании  ОНЛАНТА - Zabbix Meetup Moscow
Zabbix в сервисной компании  ОНЛАНТА -  Zabbix Meetup Moscow Zabbix в сервисной компании  ОНЛАНТА -  Zabbix Meetup Moscow
Zabbix в сервисной компании  ОНЛАНТА - Zabbix Meetup Moscow
Vadim Nesterov
 
Роман Ермолов - Отладка приложений под iOS
Роман Ермолов - Отладка приложений под iOSРоман Ермолов - Отладка приложений под iOS
Роман Ермолов - Отладка приложений под iOS
Alexander Zimin
 
Yet another architectur. Как устроены приложения SuperJob изнутри
Yet another architectur.  Как устроены приложения SuperJob изнутриYet another architectur.  Как устроены приложения SuperJob изнутри
Yet another architectur. Как устроены приложения SuperJob изнутри
Denisenko Sergei
 
Курсы по мобильной разработке. 2 лекция. Построение интерфейсов в iOS
Курсы по мобильной разработке. 2 лекция. Построение интерфейсов в iOSКурсы по мобильной разработке. 2 лекция. Построение интерфейсов в iOS
Курсы по мобильной разработке. 2 лекция. Построение интерфейсов в iOSГлеб Тарасов
 
Объять необъятное, или как использовать несколько MVVM фреймворков в одном XA...
Объять необъятное, или как использовать несколько MVVM фреймворков в одном XA...Объять необъятное, или как использовать несколько MVVM фреймворков в одном XA...
Объять необъятное, или как использовать несколько MVVM фреймворков в одном XA...
Denis Tsvettsih
 
Превышаем скоростные лимиты с Angular 2
Превышаем скоростные лимиты с Angular 2Превышаем скоростные лимиты с Angular 2
Превышаем скоростные лимиты с Angular 2
Oleksii Okhrymenko
 
Превышаем скоростные лимиты с Angular 2 / Алексей Охрименко (IPONWEB)
Превышаем скоростные лимиты с Angular 2 / Алексей Охрименко (IPONWEB)Превышаем скоростные лимиты с Angular 2 / Алексей Охрименко (IPONWEB)
Превышаем скоростные лимиты с Angular 2 / Алексей Охрименко (IPONWEB)
Ontico
 
Интуит. Разработка приложений для iOS. Лекция 5. Сложные Views
Интуит. Разработка приложений для iOS. Лекция 5. Сложные ViewsИнтуит. Разработка приложений для iOS. Лекция 5. Сложные Views
Интуит. Разработка приложений для iOS. Лекция 5. Сложные ViewsГлеб Тарасов
 
Интуит. Разработка приложений для iOS. Лекция 7. Работа с сетью
Интуит. Разработка приложений для iOS. Лекция 7. Работа с сетьюИнтуит. Разработка приложений для iOS. Лекция 7. Работа с сетью
Интуит. Разработка приложений для iOS. Лекция 7. Работа с сетьюГлеб Тарасов
 
MVVM в WinForms – DevExpress Way (теория и практика)
MVVM в WinForms – DevExpress Way (теория и практика)MVVM в WinForms – DevExpress Way (теория и практика)
MVVM в WinForms – DevExpress Way (теория и практика)
GoSharp
 
Человекопонятные отчёты
Человекопонятные отчётыЧеловекопонятные отчёты
Человекопонятные отчёты
bearoff
 
ObjectManager, или как работать с большим количеством объектов на карте, Мари...
ObjectManager, или как работать с большим количеством объектов на карте, Мари...ObjectManager, или как работать с большим количеством объектов на карте, Мари...
ObjectManager, или как работать с большим количеством объектов на карте, Мари...
Ontico
 
Fun with core graphics
Fun with core graphicsFun with core graphics
Fun with core graphics
SoftTechnics
 
iOS and Android Mobile Test Automation
iOS and Android Mobile Test AutomationiOS and Android Mobile Test Automation
iOS and Android Mobile Test Automation
Andrii Dzynia
 
Knockout.JS на примере 2ГИС-Онлайн
Knockout.JS на примере 2ГИС-ОнлайнKnockout.JS на примере 2ГИС-Онлайн
Knockout.JS на примере 2ГИС-ОнлайнDevDay
 

Similar to CocoaHeads Moscow. Владислав Дугнист. «Dependency Injection с Blood Magic» (20)

Практика использования Dependency Injection
Практика использования Dependency InjectionПрактика использования Dependency Injection
Практика использования Dependency Injection
 
Школа-Студия разработки приложений для iOS. 5 лекция. Разное
Школа-Студия разработки приложений для iOS. 5 лекция. РазноеШкола-Студия разработки приложений для iOS. 5 лекция. Разное
Школа-Студия разработки приложений для iOS. 5 лекция. Разное
 
Школа-студия разработки приложений для iOS. 2 лекция. MVC, View, Controllers
Школа-студия разработки приложений для iOS. 2 лекция. MVC, View, ControllersШкола-студия разработки приложений для iOS. 2 лекция. MVC, View, Controllers
Школа-студия разработки приложений для iOS. 2 лекция. MVC, View, Controllers
 
#MBLTdev: Опыт использования MVVM в реальных проектах
#MBLTdev: Опыт использования MVVM в реальных проектах#MBLTdev: Опыт использования MVVM в реальных проектах
#MBLTdev: Опыт использования MVVM в реальных проектах
 
RoboGuice
RoboGuiceRoboGuice
RoboGuice
 
Zabbix в сервисной компании  ОНЛАНТА - Zabbix Meetup Moscow
Zabbix в сервисной компании  ОНЛАНТА -  Zabbix Meetup Moscow Zabbix в сервисной компании  ОНЛАНТА -  Zabbix Meetup Moscow
Zabbix в сервисной компании  ОНЛАНТА - Zabbix Meetup Moscow
 
Роман Ермолов - Отладка приложений под iOS
Роман Ермолов - Отладка приложений под iOSРоман Ермолов - Отладка приложений под iOS
Роман Ермолов - Отладка приложений под iOS
 
Yet another architectur. Как устроены приложения SuperJob изнутри
Yet another architectur.  Как устроены приложения SuperJob изнутриYet another architectur.  Как устроены приложения SuperJob изнутри
Yet another architectur. Как устроены приложения SuperJob изнутри
 
Курсы по мобильной разработке. 2 лекция. Построение интерфейсов в iOS
Курсы по мобильной разработке. 2 лекция. Построение интерфейсов в iOSКурсы по мобильной разработке. 2 лекция. Построение интерфейсов в iOS
Курсы по мобильной разработке. 2 лекция. Построение интерфейсов в iOS
 
Объять необъятное, или как использовать несколько MVVM фреймворков в одном XA...
Объять необъятное, или как использовать несколько MVVM фреймворков в одном XA...Объять необъятное, или как использовать несколько MVVM фреймворков в одном XA...
Объять необъятное, или как использовать несколько MVVM фреймворков в одном XA...
 
Превышаем скоростные лимиты с Angular 2
Превышаем скоростные лимиты с Angular 2Превышаем скоростные лимиты с Angular 2
Превышаем скоростные лимиты с Angular 2
 
Превышаем скоростные лимиты с Angular 2 / Алексей Охрименко (IPONWEB)
Превышаем скоростные лимиты с Angular 2 / Алексей Охрименко (IPONWEB)Превышаем скоростные лимиты с Angular 2 / Алексей Охрименко (IPONWEB)
Превышаем скоростные лимиты с Angular 2 / Алексей Охрименко (IPONWEB)
 
Интуит. Разработка приложений для iOS. Лекция 5. Сложные Views
Интуит. Разработка приложений для iOS. Лекция 5. Сложные ViewsИнтуит. Разработка приложений для iOS. Лекция 5. Сложные Views
Интуит. Разработка приложений для iOS. Лекция 5. Сложные Views
 
Интуит. Разработка приложений для iOS. Лекция 7. Работа с сетью
Интуит. Разработка приложений для iOS. Лекция 7. Работа с сетьюИнтуит. Разработка приложений для iOS. Лекция 7. Работа с сетью
Интуит. Разработка приложений для iOS. Лекция 7. Работа с сетью
 
MVVM в WinForms – DevExpress Way (теория и практика)
MVVM в WinForms – DevExpress Way (теория и практика)MVVM в WinForms – DevExpress Way (теория и практика)
MVVM в WinForms – DevExpress Way (теория и практика)
 
Человекопонятные отчёты
Человекопонятные отчётыЧеловекопонятные отчёты
Человекопонятные отчёты
 
ObjectManager, или как работать с большим количеством объектов на карте, Мари...
ObjectManager, или как работать с большим количеством объектов на карте, Мари...ObjectManager, или как работать с большим количеством объектов на карте, Мари...
ObjectManager, или как работать с большим количеством объектов на карте, Мари...
 
Fun with core graphics
Fun with core graphicsFun with core graphics
Fun with core graphics
 
iOS and Android Mobile Test Automation
iOS and Android Mobile Test AutomationiOS and Android Mobile Test Automation
iOS and Android Mobile Test Automation
 
Knockout.JS на примере 2ГИС-Онлайн
Knockout.JS на примере 2ГИС-ОнлайнKnockout.JS на примере 2ГИС-Онлайн
Knockout.JS на примере 2ГИС-Онлайн
 

More from Mail.ru Group

Автоматизация без тест-инженеров по автоматизации, Мария Терехина и Владислав...
Автоматизация без тест-инженеров по автоматизации, Мария Терехина и Владислав...Автоматизация без тест-инженеров по автоматизации, Мария Терехина и Владислав...
Автоматизация без тест-инженеров по автоматизации, Мария Терехина и Владислав...
Mail.ru Group
 
BDD для фронтенда. Автоматизация тестирования с Cucumber, Cypress и Jenkins, ...
BDD для фронтенда. Автоматизация тестирования с Cucumber, Cypress и Jenkins, ...BDD для фронтенда. Автоматизация тестирования с Cucumber, Cypress и Jenkins, ...
BDD для фронтенда. Автоматизация тестирования с Cucumber, Cypress и Jenkins, ...
Mail.ru Group
 
Другая сторона баг-баунти-программ: как это выглядит изнутри, Владимир Дубровин
Другая сторона баг-баунти-программ: как это выглядит изнутри, Владимир ДубровинДругая сторона баг-баунти-программ: как это выглядит изнутри, Владимир Дубровин
Другая сторона баг-баунти-программ: как это выглядит изнутри, Владимир Дубровин
Mail.ru Group
 
Использование Fiddler и Charles при тестировании фронтенда проекта pulse.mail...
Использование Fiddler и Charles при тестировании фронтенда проекта pulse.mail...Использование Fiddler и Charles при тестировании фронтенда проекта pulse.mail...
Использование Fiddler и Charles при тестировании фронтенда проекта pulse.mail...
Mail.ru Group
 
Управление инцидентами в Почте Mail.ru, Антон Викторов
Управление инцидентами в Почте Mail.ru, Антон ВикторовУправление инцидентами в Почте Mail.ru, Антон Викторов
Управление инцидентами в Почте Mail.ru, Антон Викторов
Mail.ru Group
 
DAST в CI/CD, Ольга Свиридова
DAST в CI/CD, Ольга СвиридоваDAST в CI/CD, Ольга Свиридова
DAST в CI/CD, Ольга Свиридова
Mail.ru Group
 
Почему вам стоит использовать свой велосипед и почему не стоит Александр Бел...
Почему вам стоит использовать свой велосипед и почему не стоит  Александр Бел...Почему вам стоит использовать свой велосипед и почему не стоит  Александр Бел...
Почему вам стоит использовать свой велосипед и почему не стоит Александр Бел...
Mail.ru Group
 
CV в пайплайне распознавания ценников товаров: трюки и хитрости Николай Масл...
CV в пайплайне распознавания ценников товаров: трюки и хитрости  Николай Масл...CV в пайплайне распознавания ценников товаров: трюки и хитрости  Николай Масл...
CV в пайплайне распознавания ценников товаров: трюки и хитрости Николай Масл...
Mail.ru Group
 
RAPIDS: ускоряем Pandas и scikit-learn на GPU Павел Клеменков, NVidia
RAPIDS: ускоряем Pandas и scikit-learn на GPU  Павел Клеменков, NVidiaRAPIDS: ускоряем Pandas и scikit-learn на GPU  Павел Клеменков, NVidia
RAPIDS: ускоряем Pandas и scikit-learn на GPU Павел Клеменков, NVidia
Mail.ru Group
 
WebAuthn в реальной жизни, Анатолий Остапенко
WebAuthn в реальной жизни, Анатолий ОстапенкоWebAuthn в реальной жизни, Анатолий Остапенко
WebAuthn в реальной жизни, Анатолий Остапенко
Mail.ru Group
 
AMP для электронной почты, Сергей Пешков
AMP для электронной почты, Сергей ПешковAMP для электронной почты, Сергей Пешков
AMP для электронной почты, Сергей Пешков
Mail.ru Group
 
Как мы захотели TWA и сделали его без мобильных разработчиков, Данила Стрелков
Как мы захотели TWA и сделали его без мобильных разработчиков, Данила СтрелковКак мы захотели TWA и сделали его без мобильных разработчиков, Данила Стрелков
Как мы захотели TWA и сделали его без мобильных разработчиков, Данила Стрелков
Mail.ru Group
 
Кейсы использования PWA для партнерских предложений в Delivery Club, Никита Б...
Кейсы использования PWA для партнерских предложений в Delivery Club, Никита Б...Кейсы использования PWA для партнерских предложений в Delivery Club, Никита Б...
Кейсы использования PWA для партнерских предложений в Delivery Club, Никита Б...
Mail.ru Group
 
Метапрограммирование: строим конечный автомат, Сергей Федоров, Яндекс.Такси
Метапрограммирование: строим конечный автомат, Сергей Федоров, Яндекс.ТаксиМетапрограммирование: строим конечный автомат, Сергей Федоров, Яндекс.Такси
Метапрограммирование: строим конечный автомат, Сергей Федоров, Яндекс.Такси
Mail.ru Group
 
Как не сделать врагами архитектуру и оптимизацию, Кирилл Березин, Mail.ru Group
Как не сделать врагами архитектуру и оптимизацию, Кирилл Березин, Mail.ru GroupКак не сделать врагами архитектуру и оптимизацию, Кирилл Березин, Mail.ru Group
Как не сделать врагами архитектуру и оптимизацию, Кирилл Березин, Mail.ru Group
Mail.ru Group
 
Этика искусственного интеллекта, Александр Кармаев (AI Journey)
Этика искусственного интеллекта, Александр Кармаев (AI Journey)Этика искусственного интеллекта, Александр Кармаев (AI Journey)
Этика искусственного интеллекта, Александр Кармаев (AI Journey)
Mail.ru Group
 
Нейро-машинный перевод в вопросно-ответных системах, Федор Федоренко (AI Jour...
Нейро-машинный перевод в вопросно-ответных системах, Федор Федоренко (AI Jour...Нейро-машинный перевод в вопросно-ответных системах, Федор Федоренко (AI Jour...
Нейро-машинный перевод в вопросно-ответных системах, Федор Федоренко (AI Jour...
Mail.ru Group
 
Конвергенция технологий как тренд развития искусственного интеллекта, Владими...
Конвергенция технологий как тренд развития искусственного интеллекта, Владими...Конвергенция технологий как тренд развития искусственного интеллекта, Владими...
Конвергенция технологий как тренд развития искусственного интеллекта, Владими...
Mail.ru Group
 
Обзор трендов рекомендательных систем от Пульса, Андрей Мурашев (AI Journey)
Обзор трендов рекомендательных систем от Пульса, Андрей Мурашев (AI Journey)Обзор трендов рекомендательных систем от Пульса, Андрей Мурашев (AI Journey)
Обзор трендов рекомендательных систем от Пульса, Андрей Мурашев (AI Journey)
Mail.ru Group
 
Мир глазами нейросетей, Данила Байгушев, Александр Сноркин ()
Мир глазами нейросетей, Данила Байгушев, Александр Сноркин ()Мир глазами нейросетей, Данила Байгушев, Александр Сноркин ()
Мир глазами нейросетей, Данила Байгушев, Александр Сноркин ()
Mail.ru Group
 

More from Mail.ru Group (20)

Автоматизация без тест-инженеров по автоматизации, Мария Терехина и Владислав...
Автоматизация без тест-инженеров по автоматизации, Мария Терехина и Владислав...Автоматизация без тест-инженеров по автоматизации, Мария Терехина и Владислав...
Автоматизация без тест-инженеров по автоматизации, Мария Терехина и Владислав...
 
BDD для фронтенда. Автоматизация тестирования с Cucumber, Cypress и Jenkins, ...
BDD для фронтенда. Автоматизация тестирования с Cucumber, Cypress и Jenkins, ...BDD для фронтенда. Автоматизация тестирования с Cucumber, Cypress и Jenkins, ...
BDD для фронтенда. Автоматизация тестирования с Cucumber, Cypress и Jenkins, ...
 
Другая сторона баг-баунти-программ: как это выглядит изнутри, Владимир Дубровин
Другая сторона баг-баунти-программ: как это выглядит изнутри, Владимир ДубровинДругая сторона баг-баунти-программ: как это выглядит изнутри, Владимир Дубровин
Другая сторона баг-баунти-программ: как это выглядит изнутри, Владимир Дубровин
 
Использование Fiddler и Charles при тестировании фронтенда проекта pulse.mail...
Использование Fiddler и Charles при тестировании фронтенда проекта pulse.mail...Использование Fiddler и Charles при тестировании фронтенда проекта pulse.mail...
Использование Fiddler и Charles при тестировании фронтенда проекта pulse.mail...
 
Управление инцидентами в Почте Mail.ru, Антон Викторов
Управление инцидентами в Почте Mail.ru, Антон ВикторовУправление инцидентами в Почте Mail.ru, Антон Викторов
Управление инцидентами в Почте Mail.ru, Антон Викторов
 
DAST в CI/CD, Ольга Свиридова
DAST в CI/CD, Ольга СвиридоваDAST в CI/CD, Ольга Свиридова
DAST в CI/CD, Ольга Свиридова
 
Почему вам стоит использовать свой велосипед и почему не стоит Александр Бел...
Почему вам стоит использовать свой велосипед и почему не стоит  Александр Бел...Почему вам стоит использовать свой велосипед и почему не стоит  Александр Бел...
Почему вам стоит использовать свой велосипед и почему не стоит Александр Бел...
 
CV в пайплайне распознавания ценников товаров: трюки и хитрости Николай Масл...
CV в пайплайне распознавания ценников товаров: трюки и хитрости  Николай Масл...CV в пайплайне распознавания ценников товаров: трюки и хитрости  Николай Масл...
CV в пайплайне распознавания ценников товаров: трюки и хитрости Николай Масл...
 
RAPIDS: ускоряем Pandas и scikit-learn на GPU Павел Клеменков, NVidia
RAPIDS: ускоряем Pandas и scikit-learn на GPU  Павел Клеменков, NVidiaRAPIDS: ускоряем Pandas и scikit-learn на GPU  Павел Клеменков, NVidia
RAPIDS: ускоряем Pandas и scikit-learn на GPU Павел Клеменков, NVidia
 
WebAuthn в реальной жизни, Анатолий Остапенко
WebAuthn в реальной жизни, Анатолий ОстапенкоWebAuthn в реальной жизни, Анатолий Остапенко
WebAuthn в реальной жизни, Анатолий Остапенко
 
AMP для электронной почты, Сергей Пешков
AMP для электронной почты, Сергей ПешковAMP для электронной почты, Сергей Пешков
AMP для электронной почты, Сергей Пешков
 
Как мы захотели TWA и сделали его без мобильных разработчиков, Данила Стрелков
Как мы захотели TWA и сделали его без мобильных разработчиков, Данила СтрелковКак мы захотели TWA и сделали его без мобильных разработчиков, Данила Стрелков
Как мы захотели TWA и сделали его без мобильных разработчиков, Данила Стрелков
 
Кейсы использования PWA для партнерских предложений в Delivery Club, Никита Б...
Кейсы использования PWA для партнерских предложений в Delivery Club, Никита Б...Кейсы использования PWA для партнерских предложений в Delivery Club, Никита Б...
Кейсы использования PWA для партнерских предложений в Delivery Club, Никита Б...
 
Метапрограммирование: строим конечный автомат, Сергей Федоров, Яндекс.Такси
Метапрограммирование: строим конечный автомат, Сергей Федоров, Яндекс.ТаксиМетапрограммирование: строим конечный автомат, Сергей Федоров, Яндекс.Такси
Метапрограммирование: строим конечный автомат, Сергей Федоров, Яндекс.Такси
 
Как не сделать врагами архитектуру и оптимизацию, Кирилл Березин, Mail.ru Group
Как не сделать врагами архитектуру и оптимизацию, Кирилл Березин, Mail.ru GroupКак не сделать врагами архитектуру и оптимизацию, Кирилл Березин, Mail.ru Group
Как не сделать врагами архитектуру и оптимизацию, Кирилл Березин, Mail.ru Group
 
Этика искусственного интеллекта, Александр Кармаев (AI Journey)
Этика искусственного интеллекта, Александр Кармаев (AI Journey)Этика искусственного интеллекта, Александр Кармаев (AI Journey)
Этика искусственного интеллекта, Александр Кармаев (AI Journey)
 
Нейро-машинный перевод в вопросно-ответных системах, Федор Федоренко (AI Jour...
Нейро-машинный перевод в вопросно-ответных системах, Федор Федоренко (AI Jour...Нейро-машинный перевод в вопросно-ответных системах, Федор Федоренко (AI Jour...
Нейро-машинный перевод в вопросно-ответных системах, Федор Федоренко (AI Jour...
 
Конвергенция технологий как тренд развития искусственного интеллекта, Владими...
Конвергенция технологий как тренд развития искусственного интеллекта, Владими...Конвергенция технологий как тренд развития искусственного интеллекта, Владими...
Конвергенция технологий как тренд развития искусственного интеллекта, Владими...
 
Обзор трендов рекомендательных систем от Пульса, Андрей Мурашев (AI Journey)
Обзор трендов рекомендательных систем от Пульса, Андрей Мурашев (AI Journey)Обзор трендов рекомендательных систем от Пульса, Андрей Мурашев (AI Journey)
Обзор трендов рекомендательных систем от Пульса, Андрей Мурашев (AI Journey)
 
Мир глазами нейросетей, Данила Байгушев, Александр Сноркин ()
Мир глазами нейросетей, Данила Байгушев, Александр Сноркин ()Мир глазами нейросетей, Данила Байгушев, Александр Сноркин ()
Мир глазами нейросетей, Данила Байгушев, Александр Сноркин ()
 

CocoaHeads Moscow. Владислав Дугнист. «Dependency Injection с Blood Magic»