SlideShare una empresa de Scribd logo
1 de 53
Descargar para leer sin conexión
Зимин Александр
iOS Developer
Product Designer
• Про работу с базовыми инструментами
(UICollectionView, Swift и прочие) - 26%
• Про подходы к разработке крупных проектов (MVVM,
CI и прочие) - 37%
MVVM в Swift
План
MVVM Swift
План
Swift не Objective-C
POP
Component-based
План
MVVM Swift Демонстрация
План
MVVM Swift Демонстрация
MVC
Controller
ViewModel
MVC
Controller
Model
View
MVVM
Controller
View
ModelModel
Controller
View
View
Model
Model
MVC
struct Person {
var firstName: String
var secondName: String
}s
MVC
struct Person {
var firstName: String
var secondName: String
}s
class ViewController: UIViewController {
var person: Person!
@IBOutlet var nameLabel: UILabel!
}s
MVC
struct Person {
var firstName: String
var secondName: String
}s
class ViewController: UIViewController {
var person: Person!
@IBOutlet var nameLabel: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
nameLabel.text = "(person.firstName) (person.secondName)"
}
}s
MVVM
struct Person {
var firstName: String
var secondName: String
}s
struct PersonModel {
var person: Person
var name: String {
return "(person.firstName) (person.secondName)"
}
}
class ViewController: UIViewController {
var person: Person!
@IBOutlet var nameLabel: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
nameLabel.text = "(person.firstName) (person.secondName)"
}
}s
MVVM
struct Person {
var firstName: String
var secondName: String
}s
struct PersonModel {
var person: Person
var name: String {
return "(person.firstName) (person.secondName)"
}
}
class ViewController: UIViewController {
var personModel: PersonModel!
@IBOutlet var nameLabel: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
nameLabel.text = personModel.name
}
}s
MVVM
Схема
ViewModel Model
Уведомляет
Обновляет
MVVM
Схема
ViewModel Model
Уведомляет
Обновляет
ControllerViewView
Уведомляет
Воздействует
MVVM
Схема
ViewModel Model
Уведомляет
Обновляет
ControllerViewView
Уведомляет
Воздействует
• Обновляет:
• gameSession.attempts += 1
• Воздействует:
• gameSessionEntity.loseAction()
MVVM
Уведомляет
• KVO:
• Плохо (никаких enum или struct)
• Functional reactive programming:
• ReactiveCocoa
• RxSwift
MVVM
Уведомляет
• KVO
• Плохо (никаких enum или struct)
• Functional reactive programming:
• ReactiveCocoa
• RxSwift
http://stackoverflow.com/questions/32542846/reactivecocoa-vs-rxswift-pros-and-cons
https://www.raywenderlich.com/126522/reactivecocoa-vs-rxswift
MVVM
RxSwift
var name = Variable("Value")
MVVM
RxSwift
var name = Variable("Value")
let subscribe = name.asObservable().subscribeNext { (value) in
print(value)
}s
MVVM
RxSwift
var name = Variable("Value")
let subscribe = name.asObservable().subscribeNext { (value) in
print(value)
}s
name.value = "New Value"
subscribe.dispose()
name.value = "Another Value"
Value
New Value
MVVM
RxSwift
MVVM
Плюсы
• Более компактная логика
• Гибкость тестирования
• Правильное переиспользование
MVVM
Минусы
• Более затратно по ресурсам
• Встречаются абсурдные ситуации
MVVM
Минусы
Ash Furrow
План
MVVM Swift Демонстрация
Swift
Не Objective-C
• Вы что-то делаете не так если:
• Наследуете NSObject
• Частое используете class
• Слово protocol и Delegate всегда на одной строчке
• Последний раз видели T в C#
Swift
Не Objective-C
• Сложности:
• Другой подход
• Кажется неправильным
Swift
Не Objective-C
A
B
Swift
Не Objective-C
A
B
Swift
Не Objective-C
• В какую сторону смотреть
• POP (Protocol-Oriented Programming)
• Protocols, Value Type
• Functional reactive programming
• Generic
• State machine
• Enums
Swift
POP
https://www.youtube.com/watch?v=71AS4rMrAVk
Swift
POP в Swift
• В начале любой иерархии протокол
• Приоритетное использование Value Type (struct,
enum)
protocol ColletionItem {
var id: String { get }
var name: String { get }
}s
Swift
POP в Swift
protocol ColletionItem {
var id: String { get }
var name: String { get }
}s
struct SongItem: ColletionItem {
let id: String
private(set) var name: String
// ...
init(id: String, name: String) {
self.id = id
self.name = name
}
}
Swift
POP в Swift
protocol ColletionItem {
var id: String { get }
var name: String { get }
}s
extension ColletionItem {
var title: String {
if name.characters.count > 0 {
return name
}
return "Uncnown"
}
}
Swift
POP в Swift
Swift
Inheritance-Based Design
https://developer.apple.com/library/ios/documentation/General/Conceptual/GameplayKit_Guide/EntityComponent.html
Swift
Inheritance-Based Design
https://developer.apple.com/library/ios/documentation/General/Conceptual/GameplayKit_Guide/EntityComponent.html
Swift
Component-Based Design
https://developer.apple.com/library/ios/documentation/General/Conceptual/GameplayKit_Guide/EntityComponent.html
protocol TextFormatType {
var textFont: UIFont { get }
var textColor: UIColor { get }
}s
Swift
Component-Based Design
protocol TextFormatType {
var textFont: UIFont { get }
var textColor: UIColor { get }
}s
extension TextFormatType {
var textFont: UIFont {
return .systemFontOfSize(12)
}
var textColor: UIColor {
return .blackColor()
}
}
Swift
Component-Based Design
protocol ViewFormatType {
var backgroundColor: UIColor { get }
var cornerRadius: CGFloat { get }
}s
Swift
Component-Based Design
protocol ViewFormatType {
var backgroundColor: UIColor { get }
var cornerRadius: CGFloat { get }
}s
extension ViewFormatType {
var backgroundColor: UIColor {
return .whiteColor()
}
var cornerRadius: CGFloat {
return 0
}
}
Swift
Component-Based Design
struct TitleLabelAppearanceModel: ViewFormatType, TextFormatType {
var textFont: UIFont {
return .boldSystemFontOfSize(16)
}
}
Swift
Component-Based Design
protocol TitleLabelAppearanceType: ViewFormatType, TextFormatType { }
extension TitleLabelAppearanceType {
var textFont: UIFont {
return .boldSystemFontOfSize(16)
}
}
Swift
Component-Based Design
План
MVVM Swift Демонстрация
Демонстрация
• https://medium.com/ios-os-x-development/ios-architecture-
patterns-ecba4c38de52 - Паттерны в iOS
• http://artsy.github.io/blog/2015/09/24/mvvm-in-swift/ -
Проблемы MVVM в Swift
• https://www.captechconsulting.com/blogs/ios-9-tutorial-
series-protocol-oriented-programming-with-uikit - Хороший
пример использования POP
• https://github.com/ReactKit/SwiftState - Машина состояний
в Swift
Полезные ссылки
Зимин Александр
azimin@me.com
@ZiminAlex
Зимин Александр
azimin@me.com
@ZiminAlex
Спасибо за внимание

Más contenido relacionado

La actualidad más candente

CodeFest 2010. Высоцкий С. — Автоматизация тестирования Flex/Flash GUI
CodeFest 2010. Высоцкий С. — Автоматизация тестирования Flex/Flash GUICodeFest 2010. Высоцкий С. — Автоматизация тестирования Flex/Flash GUI
CodeFest 2010. Высоцкий С. — Автоматизация тестирования Flex/Flash GUI
CodeFest
 
JavaScript & modern scala backend
JavaScript & modern scala backendJavaScript & modern scala backend
JavaScript & modern scala backend
GeeksLab Odessa
 
Javascript in modern scala backend. [russian]
Javascript in modern scala backend.  [russian]  Javascript in modern scala backend.  [russian]
Javascript in modern scala backend. [russian]
Ruslan Shevchenko
 

La actualidad más candente (20)

Rambler.iOS #5: TDD и VIPER
Rambler.iOS #5: TDD и VIPERRambler.iOS #5: TDD и VIPER
Rambler.iOS #5: TDD и VIPER
 
TypeScript
TypeScriptTypeScript
TypeScript
 
CodeFest 2010. Высоцкий С. — Автоматизация тестирования Flex/Flash GUI
CodeFest 2010. Высоцкий С. — Автоматизация тестирования Flex/Flash GUICodeFest 2010. Высоцкий С. — Автоматизация тестирования Flex/Flash GUI
CodeFest 2010. Высоцкий С. — Автоматизация тестирования Flex/Flash GUI
 
Introduction to React
Introduction to ReactIntroduction to React
Introduction to React
 
Сергей Мелашич "Настройка SEO для одностраничных web-приложений на Angular"
Сергей Мелашич "Настройка SEO для одностраничных web-приложений на Angular"Сергей Мелашич "Настройка SEO для одностраничных web-приложений на Angular"
Сергей Мелашич "Настройка SEO для одностраничных web-приложений на Angular"
 
Rambler.iOS #1: Nimbus Kit Models
Rambler.iOS #1: Nimbus Kit ModelsRambler.iOS #1: Nimbus Kit Models
Rambler.iOS #1: Nimbus Kit Models
 
Браузерные помощники тестировщика (QA Fest 2016)
Браузерные помощники тестировщика (QA Fest 2016)Браузерные помощники тестировщика (QA Fest 2016)
Браузерные помощники тестировщика (QA Fest 2016)
 
Как мы приручили демона или процесс тестирования демонов в Badoo
Как мы приручили демона или процесс тестирования демонов в BadooКак мы приручили демона или процесс тестирования демонов в Badoo
Как мы приручили демона или процесс тестирования демонов в Badoo
 
JavaScript & modern scala backend
JavaScript & modern scala backendJavaScript & modern scala backend
JavaScript & modern scala backend
 
"Prom.ua shopping cart workflow as a microfrontend", Danylo Kazymyrov
"Prom.ua shopping cart workflow as a microfrontend", Danylo Kazymyrov"Prom.ua shopping cart workflow as a microfrontend", Danylo Kazymyrov
"Prom.ua shopping cart workflow as a microfrontend", Danylo Kazymyrov
 
Quartz
QuartzQuartz
Quartz
 
QA Fes 2016. Александр Неделяев. Система мониторинга производительности своим...
QA Fes 2016. Александр Неделяев. Система мониторинга производительности своим...QA Fes 2016. Александр Неделяев. Система мониторинга производительности своим...
QA Fes 2016. Александр Неделяев. Система мониторинга производительности своим...
 
Анджей Гужовский "Riot.JS, или как приготовить современные Web Components"
Анджей Гужовский "Riot.JS, или как приготовить современные Web Components"Анджей Гужовский "Riot.JS, или как приготовить современные Web Components"
Анджей Гужовский "Riot.JS, или как приготовить современные Web Components"
 
"Redux: the best for isomorphic apps", Денис Измайлов, MoscowJS 25
"Redux: the best for isomorphic apps", Денис Измайлов, MoscowJS 25"Redux: the best for isomorphic apps", Денис Измайлов, MoscowJS 25
"Redux: the best for isomorphic apps", Денис Измайлов, MoscowJS 25
 
Javascript in modern scala backend. [russian]
Javascript in modern scala backend.  [russian]  Javascript in modern scala backend.  [russian]
Javascript in modern scala backend. [russian]
 
Увеличиваем мощь фреймворка Kdt & code`s generator
Увеличиваем мощь фреймворка   Kdt & code`s generatorУвеличиваем мощь фреймворка   Kdt & code`s generator
Увеличиваем мощь фреймворка Kdt & code`s generator
 
131 - Spring. Переход между страницами
131 -  Spring. Переход между страницами 131 -  Spring. Переход между страницами
131 - Spring. Переход между страницами
 
Системы автоматизированной сборки (Lecture 05 – gradle)
Системы автоматизированной сборки (Lecture 05 – gradle)Системы автоматизированной сборки (Lecture 05 – gradle)
Системы автоматизированной сборки (Lecture 05 – gradle)
 
Docker + Selenium Webdriver в рамках Continuous Integration
Docker + Selenium Webdriver в рамках Continuous IntegrationDocker + Selenium Webdriver в рамках Continuous Integration
Docker + Selenium Webdriver в рамках Continuous Integration
 
Rambler.iOS #5: VIPER a la Rambler
Rambler.iOS #5: VIPER a la RamblerRambler.iOS #5: VIPER a la Rambler
Rambler.iOS #5: VIPER a la Rambler
 

Destacado

Destacado (13)

«Как общаться и договариваться с заказчиками о проектной работе», Валентин Ша...
«Как общаться и договариваться с заказчиками о проектной работе», Валентин Ша...«Как общаться и договариваться с заказчиками о проектной работе», Валентин Ша...
«Как общаться и договариваться с заказчиками о проектной работе», Валентин Ша...
 
MVVM & RxSwift
MVVM & RxSwiftMVVM & RxSwift
MVVM & RxSwift
 
«Управление логикой переходов между экранами приложения с помощью координатор...
«Управление логикой переходов между экранами приложения с помощью координатор...«Управление логикой переходов между экранами приложения с помощью координатор...
«Управление логикой переходов между экранами приложения с помощью координатор...
 
MVVM on iOS
MVVM on iOSMVVM on iOS
MVVM on iOS
 
MV(C, mvvm) in iOS and ReactiveCocoa
MV(C, mvvm) in iOS and ReactiveCocoaMV(C, mvvm) in iOS and ReactiveCocoa
MV(C, mvvm) in iOS and ReactiveCocoa
 
Введение в паттерн Schedulable object, Павел Осипов, руководитель разработки ...
Введение в паттерн Schedulable object, Павел Осипов, руководитель разработки ...Введение в паттерн Schedulable object, Павел Осипов, руководитель разработки ...
Введение в паттерн Schedulable object, Павел Осипов, руководитель разработки ...
 
Определение качества сетевого соединения в iOS-почте, Даниил Румянцев, разраб...
Определение качества сетевого соединения в iOS-почте, Даниил Румянцев, разраб...Определение качества сетевого соединения в iOS-почте, Даниил Румянцев, разраб...
Определение качества сетевого соединения в iOS-почте, Даниил Румянцев, разраб...
 
iMessage Apps: от стикеров до банковских приложений за 30 минут, Вадим Дробин...
iMessage Apps: от стикеров до банковских приложений за 30 минут, Вадим Дробин...iMessage Apps: от стикеров до банковских приложений за 30 минут, Вадим Дробин...
iMessage Apps: от стикеров до банковских приложений за 30 минут, Вадим Дробин...
 
Альтернативная монетизация — краудфандинг, Каменев Игорь, основатель проекта ...
Альтернативная монетизация — краудфандинг, Каменев Игорь, основатель проекта ...Альтернативная монетизация — краудфандинг, Каменев Игорь, основатель проекта ...
Альтернативная монетизация — краудфандинг, Каменев Игорь, основатель проекта ...
 
Кортунов Никита. Как ускорить разработку приложений или есть ли жизнь после P...
Кортунов Никита. Как ускорить разработку приложений или есть ли жизнь после P...Кортунов Никита. Как ускорить разработку приложений или есть ли жизнь после P...
Кортунов Никита. Как ускорить разработку приложений или есть ли жизнь после P...
 
Вадим Дробинин. Защищаем себя и пользователей: руководство по безопасности
Вадим Дробинин. Защищаем себя и пользователей: руководство по безопасностиВадим Дробинин. Защищаем себя и пользователей: руководство по безопасности
Вадим Дробинин. Защищаем себя и пользователей: руководство по безопасности
 
Андрей Юткин. Media Picker — to infinity and beyond
Андрей Юткин. Media Picker — to infinity and beyondАндрей Юткин. Media Picker — to infinity and beyond
Андрей Юткин. Media Picker — to infinity and beyond
 
Protocol-Oriented MVVM (extended edition)
Protocol-Oriented MVVM (extended edition)Protocol-Oriented MVVM (extended edition)
Protocol-Oriented MVVM (extended edition)
 

Similar a «MVVM в Swift», Александр Зимин, независимый iOS-разработчик

Школа-студия разработки приложений для iOS. 2 лекция. MVC, View, Controllers
Школа-студия разработки приложений для iOS. 2 лекция. MVC, View, ControllersШкола-студия разработки приложений для iOS. 2 лекция. MVC, View, Controllers
Школа-студия разработки приложений для iOS. 2 лекция. MVC, View, Controllers
Глеб Тарасов
 
Опыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NET
Опыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NETОпыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NET
Опыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NET
GoSharp
 
CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению
CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлениюCodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению
CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению
CodeFest
 
"Invokedynamic: роскошь или необходимость?"@ JavaOne Moscow 2013
"Invokedynamic: роскошь или необходимость?"@ JavaOne Moscow 2013"Invokedynamic: роскошь или необходимость?"@ JavaOne Moscow 2013
"Invokedynamic: роскошь или необходимость?"@ JavaOne Moscow 2013
Vladimir Ivanov
 
Эволюционный дизайн. Joker Students Day 2016
Эволюционный дизайн. Joker Students Day 2016Эволюционный дизайн. Joker Students Day 2016
Эволюционный дизайн. Joker Students Day 2016
Кирилл Толкачёв
 
Статический анализ кода в DDD
Статический анализ кода в DDDСтатический анализ кода в DDD
Статический анализ кода в DDD
Aleksei Alekseev
 
Remote (dev)tools своими руками
Remote (dev)tools своими рукамиRemote (dev)tools своими руками
Remote (dev)tools своими руками
Roman Dvornov
 

Similar a «MVVM в Swift», Александр Зимин, независимый iOS-разработчик (20)

Быстрее света. UA Mobile 2016.
Быстрее света. UA Mobile 2016.Быстрее света. UA Mobile 2016.
Быстрее света. UA Mobile 2016.
 
2014.12.06 01 Александр Чернышев — Нафига Козе Баян или нужен ли вам swift, и...
2014.12.06 01 Александр Чернышев — Нафига Козе Баян или нужен ли вам swift, и...2014.12.06 01 Александр Чернышев — Нафига Козе Баян или нужен ли вам swift, и...
2014.12.06 01 Александр Чернышев — Нафига Козе Баян или нужен ли вам swift, и...
 
2017-03-26 02 Егор Непомнящих. Что такое web front end, и с чем его едят
2017-03-26 02 Егор Непомнящих. Что такое web front end, и с чем его едят2017-03-26 02 Егор Непомнящих. Что такое web front end, и с чем его едят
2017-03-26 02 Егор Непомнящих. Что такое web front end, и с чем его едят
 
Простой и кросс-платформенный WEB-сервер на .NET
Простой и кросс-платформенный WEB-сервер на .NETПростой и кросс-платформенный WEB-сервер на .NET
Простой и кросс-платформенный WEB-сервер на .NET
 
Школа-студия разработки приложений для iOS. 2 лекция. MVC, View, Controllers
Школа-студия разработки приложений для iOS. 2 лекция. MVC, View, ControllersШкола-студия разработки приложений для iOS. 2 лекция. MVC, View, Controllers
Школа-студия разработки приложений для iOS. 2 лекция. MVC, View, Controllers
 
Избавляемся от старья и переходим на SwiftUI / Руслан Кавецкий (Agora)
Избавляемся от старья и переходим на SwiftUI / Руслан Кавецкий  (Agora)Избавляемся от старья и переходим на SwiftUI / Руслан Кавецкий  (Agora)
Избавляемся от старья и переходим на SwiftUI / Руслан Кавецкий (Agora)
 
Опыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NET
Опыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NETОпыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NET
Опыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NET
 
Основы "мобильной" разработки на примере платформы iOs (iPhone)
Основы "мобильной" разработки на примере платформы iOs (iPhone)Основы "мобильной" разработки на примере платформы iOs (iPhone)
Основы "мобильной" разработки на примере платформы iOs (iPhone)
 
CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению
CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлениюCodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению
CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению
 
Java 8 Support at the JVM Level
Java 8 Support at the JVM LevelJava 8 Support at the JVM Level
Java 8 Support at the JVM Level
 
"Invokedynamic: роскошь или необходимость?"@ JavaOne Moscow 2013
"Invokedynamic: роскошь или необходимость?"@ JavaOne Moscow 2013"Invokedynamic: роскошь или необходимость?"@ JavaOne Moscow 2013
"Invokedynamic: роскошь или необходимость?"@ JavaOne Moscow 2013
 
SWIFT нужен ли он вам?
SWIFT нужен ли он вам?SWIFT нужен ли он вам?
SWIFT нужен ли он вам?
 
C# Web. Занятие 11.
C# Web. Занятие 11.C# Web. Занятие 11.
C# Web. Занятие 11.
 
Архитектура кода нового 2ГИС Web API или куда мы дели MVC
Архитектура кода нового 2ГИС Web API или куда мы дели MVCАрхитектура кода нового 2ГИС Web API или куда мы дели MVC
Архитектура кода нового 2ГИС Web API или куда мы дели MVC
 
Программируемость ACI. Примеры применения.
Программируемость ACI. Примеры применения.Программируемость ACI. Примеры применения.
Программируемость ACI. Примеры применения.
 
Антон Валюх - Использование паттерна Mvvm в android
Антон Валюх - Использование паттерна Mvvm в androidАнтон Валюх - Использование паттерна Mvvm в android
Антон Валюх - Использование паттерна Mvvm в android
 
Java 2 - Java Intro
Java 2 - Java IntroJava 2 - Java Intro
Java 2 - Java Intro
 
Эволюционный дизайн. Joker Students Day 2016
Эволюционный дизайн. Joker Students Day 2016Эволюционный дизайн. Joker Students Day 2016
Эволюционный дизайн. Joker Students Day 2016
 
Статический анализ кода в DDD
Статический анализ кода в DDDСтатический анализ кода в DDD
Статический анализ кода в DDD
 
Remote (dev)tools своими руками
Remote (dev)tools своими рукамиRemote (dev)tools своими руками
Remote (dev)tools своими руками
 

Más de Mail.ru Group

AMP для электронной почты, Сергей Пешков
AMP для электронной почты, Сергей ПешковAMP для электронной почты, Сергей Пешков
AMP для электронной почты, Сергей Пешков
Mail.ru Group
 

Más de 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)
 
Мир глазами нейросетей, Данила Байгушев, Александр Сноркин ()
Мир глазами нейросетей, Данила Байгушев, Александр Сноркин ()Мир глазами нейросетей, Данила Байгушев, Александр Сноркин ()
Мир глазами нейросетей, Данила Байгушев, Александр Сноркин ()
 

«MVVM в Swift», Александр Зимин, независимый iOS-разработчик