День открытых дверей по курсу «IOS-разработчик. Продвинутый уровень» 21.05.2019 в 20:00 | OTUS >
У этой рекламы есть минус
У этой рекламы есть минус
−10% на курсы со стартом в ноябре. Успейте получить выгоду, 10 числа акция закончится
−10% на курсы со стартом в ноябре. Успейте получить выгоду, 10 числа акция закончится
Выбрать курс
Проходил 21 мая 2019 года в 20:00

День открытых дверей
Всё о курсе «Middle iOS Developer»

День открытых дверей онлайн

День Открытых Дверей — отличная возможность узнать подробнее о программе курса, особенностях онлайн-формата, навыках, компетенциях и перспективах, которые ждут выпускников после обучения. Также преподаватель расскажет о своём профессиональном опыте и ответит на вопросы участников. Поэтому если есть вопрос, запишитесь на онлайн-трансляцию и задайте его в прямом эфире!
Преподаватель
Ексей Пантелеев

Запись

О курсе

IOS-разработчик. Продвинутый уровень
144 000 ₽
Начало в декабре

Перейдите на новый уровень разработки

  1. Изучите актуальный стек технологий для современного iOS-разработчика: SwiftUI, Protocol Oriented Programming, Actor и async/await, CoreML, ARKit и RealityKit и др.
  2. Создадите свой аналог Pinterest, TikTok, Room Planner, VSCO, Strava или Canva в рамках разработки индивидуальной проектной работы, которая пополнит ваше портфолио
  3. Общение напрямую с преподавателями на лекциях и в Telegram-чате, обсуждение кейсов, задач, которые …
Программа курса
Модуль 1
SwiftUI и основы Combine
Модуль 2
Современная архитектура мобильных приложений
Модуль 3
Foundation без сторонних фреймвоков и Swift 6 Standard Library
Модуль 4
Многозадачность
Модуль 5
CoreML и Vision, нейронные сети и машинное обучение
Модуль 6
Networking и хранение данных
Модуль 7
Создание приложений для Apple Watch, TV, Mac
Модуль 8
Организация разработки
Модуль 9
Проектная работа
SwiftUI и основы Combine
В этом модуле мы изучим внутренности UIKit, его архитектурные плюсы и недочеты. Научимся отображать комплексные данные. Оптимизировать рендеринг UI компонентов. Попрактикуемся в сборке интерфейсов корректно работающих на всех вариациях Size Classes и анимации.
Проектируем UI декларативно с SwiftUI. В чем отличия UIKit и SwiftUI
научиться настраивать окружение для работы с Xcode;
научиться работать в Xcode;
понять как создавать базовые интерфейсы на SwiftUI/Combine.
SwiftUI List, List с кастомным лейаутом, Hosting ViewControllers
научиться понимать, в каком состоянии приложение;
реализовывать логику на изменение состояния приложения;
освоить устройство UIKit и его иерархия классов;
научиться делать навигацию в SwiftUI разными способами.
Создание кастомных Shape, SwiftUI Drawing and Animation API
научиться работать с CALayer и понимать систему координат, используемую в CoreGraphics;
освоить программное рисование Shapes в SwiftUI;
понять как использовать анимацию в SwiftUI.
Навигация в SwiftUI: NavigationStack, NavigationSplitView, TabView, глубокие ссылки и восстановление состояния.
Перевести навигацию на актуальные механизмы SwiftUI.
Научиться проектировать навигационное состояние.
Освоить глубокие ссылки.
Отображение структурированных данных, List, пейджинг, кастомные компоненты на UIViewRepresentable, принципы HIG
реализовывать пейджинг на SwiftUI;
кодогенерировать Network слой в ДЗ;
привязывать List к реальному API с помощью кодогенерации.
Домашние задания: 1
ДЗ
Каркас современного SwiftUI-приложения .
Современная архитектура мобильных приложений
MVC, MVP, MVI, MVVM, VIPER, RIBs, MOVVER, YARCH и что дальше? Архитектуры множатся, проблемы остаются те же. Научимся целевому выбору архитектурных паттернов и попрактикуемся в проектировании.
Необычная система типов Swift, структуры данных, Generics, Связывание разных частей приложения Observing, Signals, Callbacks. PATs (Protocol with Associated Types)
создать кастомные структуры данных.
Protocol Oriented Programming (POP), SOA, модуляризация, архитектурные Rx паттерны: Flux/Redux
применять паттерн Inversion of Control;
использовать ServiceLocator;
понять пользу слоистой архитектуры.
Домашние задания: 1
ДЗ
Реализация Service Locator и Dependency Injection и изолированности слоев в приложении. 1. Создать ServiceLocator (можно использовать дженерики).
2. Перевести существующие сервисы на использование ServiceLocator.
3. Добавить инжекцию зависимостей в переменные класса, чтобы зависимости были видны сразу, без необходимости скроллинга по файлу.
4. Выделить уровень Core-сервисов (сеть, парсинг, хранение данных).
5. Вынести Core-сервисы в отдельный пакет SwiftPM.

MVx, VIP, анализ архитектурных паттернов. SOLID, GRASP, Coupling/Cohesion принципы, DI.
разобраться в семействе MV(x) паттернов;
понять, что такое модуляризация и как ей пользоваться;
использовать Clean Architecture подход;
разобраться в паттернах в мобильной разработке.
Домашние задания: 1
ДЗ
Создание модуляризированного приложения с SOA/MVVM/Flux/MV. 1. Выполнить рефакторинг приложения с применением SOA/Flux/MV(x). При реализации на SwiftUI использовать стандартные механизмы: Combine, Signals или EventBus.
2. Модульно организовать приложение, вынеся UI-компоненты в отдельный модуль и импортируя их в местах использования.
3. Создать:
- ServiceLocator (для SOA).
- Вложенные ViewModel (для MVVM).
- Вложенные хранилища (Store) для Flux.
- Перевести существующие сервисы на модульную архитектуру.
- Добавить инжекцию зависимостей в переменные классов для повышения их читабельности.

4. Выделить уровень Core-сервисов (сеть, парсинг, хранение данных).
5. Вынести Core и другие сервисы в отдельный SPM модуль.
Foundation без сторонних фреймвоков и Swift 6 Standard Library
Загрузим в мозг стройную модель Statements, Expressions и Declaration языка Swift, и попрактикуемся в их использовании. Научимся использовать все возможности String. Научимся управлять "сахарностью" Swift и поймем, что многие библиотеки в проекте вам просто не нужны.
Swift Runtime, компилятор LLVM, продвинутая отладка с помощью LLDB, скриптинг
использовать LLVM: AST, SIL, IR;
знать принцип работы Method Dispatch;
понимать особенности компиляции;
использовать LLDB.
Sequences и коллекции, асимптотический анализ: O(1), O(N), O(N*log(N)), O(n^2)
научиться использовать Sequence и Collection для реализации собственных структур данных;
понять как работают lazy collection, будете понимать концепцию type-erased.
String: устройство, конвертация с другими типами, регулярные выражения Swift 6
углубиться в работу строковых данных в Swift;
научиться использовать регулярные выражения для поиска строк или получения подстрок.
Поддержка многоязычности: локализация строк, новый формат XCode 15, кодогенерация и сервисы переводов. Региональные отличия: переводы дат, величин, оцифровывание текста»
научиться создавать приложения для экспорта, учитывающие местные привычки иностранных пользователей;
использовать лучшие практики получения качественного кода с использованием кодоргенерации и линтига ресурсных строк.
Домашние задания: 1
ДЗ
Локализация приложения. Реализовать локализацию проекта с помощью инструментов, изученных на лекции, использовать минимум 2 языка - русский и английский.

- Использовать один из интсрументов автоматизации Swiftgen/R.Swift
Управление памятью и профилирование: ARC, retain cycle, Memory Graph и Instruments.
систематизировать работу ARC;
научиться находить утечки памяти;
освоить базовый профиль производительности приложения.
Домашние задания: 1
ДЗ
Поиск утечки памяти и узкого места производительности.
Многозадачность
Попрактикуемся в использовании последовательных (serial) и параллельных (concurrent) очередей, в создании управлении DispatchGroup, использовании мьютексов и семафоров и других Locks. Будем знать, как решать проблемы параллельной многозадачности типа Priority inversion и другие.
Проблемы многозадачности и способы их решения, GCD
использовать GCD: QoS, Queues, Main Queue и Main Thread.
Проблемы многозадачности, GCD(libdispatch), OperationQueue
узнать про антипаттерны и проблемы: Priority Inversion, Race condition, Deadlock, Resource contention, Starvation, Non-deterministic and Fairness;
понять как избегать антипаттерны;
научится использовать средства и GCD.
Async/Await, Tasks, Groups
ориентироваться в структурированной многопоточности;
научится работать с тасками и группами;
использовать инструменты для параллельного запуска задач.
Actor, @MainActor, Sendable и изоляция данных в Swift 6.
Освоить actor isolation.
Понять Sendable и строгую проверку конкурентного кода.
Научиться безопасно обновлять UI.
Домашние задания: 1
ДЗ
Реализация асинхронного выполнения задач. Создать приложение на SwiftUI, которое моделирует процесс обработки заказов в ресторане. Использовать Actors для управления очередью заказов, приготовления блюд и доставки.
1. Очередь заказов – заказы поступают в очередь и обрабатываются по очереди.
2. Повар (Actor) – готовит заказ в течение 3-7 секунд.
3. Курьер (Actor) – доставляет заказ в течение 2-5 секунд.
Визуализация в SwiftUI:
• Список заказов с обновляемым статусом (В очереди → Готовится → Доставляется → Доставлено).
• Кнопка для добавления нового заказа в очередь
Круглый стол
получить ответы на вопросы по: архитектуре, Swift Standard Libraty, Многозадочности в Swift и на любые другие вопросы по курсу.
CoreML и Vision, нейронные сети и машинное обучение
Научимся внедрять в приложение обученные модели на нейронных сетях. Также разберемся как самому получить модель с помощью AutoML Vision.
CoreML, CreateML, использование обученных моделей нейронных сетей
разобраться как устроен CoreML 3+;
использовать готовые обученные модели.
Домашние задания: 1
ДЗ
Обучение Классификатора или обжект идентификатора. 1. Выбрать датасет изображений.
2. Обучить классификатор или детектор с помощью CreateML.
3. Встроить функционал распознавания в приложение: использовать камеру или загрузку изображений.

*4. Реализовать распознавание в ARViewContainer.
Обработка видеопотока с помощью CoreML в режиме реального времени c AVFoundation, CoreImage и Metal
понять как создавать сегментацию в реальном времени.
ИИ как инструмент iOS-разработчика: код, рефакторинг, отладка, тесты и ревью.
научиться использовать ИИ как инженерный инструмент.
освоить постановку задач и проверку результата.
понять границы доверия, приватность и риски.
Домашние задания: 1
ДЗ
Реализация функции с помощью ИИ .
Networking и хранение данных
Познакомимся со свежим фреймвоком Network для iOS. Будем использовать Codable для легкой серилизации и десириализации данных. Изучим подходы к хранению данных в приложении. Потренируемся использовать Core Data и Realm, и будем понимать когда какое хранилище использовать.
Передача данных, Transferable протокол, Bluetooth
научиться работать с UTType и Transferable;
научиться работать с CoreBluetooth;
понять как использовать Multipeer Connectivity.
HTTP и REST в iOS: URLSession, Codable, async/await, ошибки, авторизация и отмена запросов.HTTP и REST в iOS: URLSession, Codable, async/await, ошибки, авторизация и отмена запросов.
Закрыть базовый сетевой навык middle iOS.
Научиться строить сетевой слой без сторонних библиотек.
Освоить обработку ошибок и отмену запросов.
Домашние задания: 1
ДЗ
Сетевой слой на URLSession.
Socket.io, WebSocket и другие сокеты для чатов и мгновенных обновлений, APNs
разобраться в socket.io, WebSocket и других сокетах для чатов и мгновенных обновлений.
Домашние задания: 1
ДЗ
Использование локальной(mesh) сети для создания приложений. 1. Использовать библиотеку от Apple – Multipeer Connectivity.
2. Реализовать передачу текста между устройствами.
3. Проверить работу на симуляторе, выступающем как одно из устройств.
SwiftData
познакомиться с SwiftData и миграцией на нее
Безопасность: AppSecurity, Keychain и обфускация API ключей, SSL Pinning
изучить AppSecurity;
научиться сохранять важные данные в Keychain;
научиться скрывать данные от декомпиляции ipa файла;
научиться защищать приложение от Man-In-The-Middle аттаки.
Домашние задания: 1
ДЗ
Реализация поддержки оффлайн режима в приложении. Создать приложение, которое получает данные из сети:

1. Реализовать кэширование данных с использованием одной из технологий: Realm, Files, Firebase, CoreData (предпочтительно использовать новую для вас технологию).
2. Убедиться, что модели данных поддерживают протокол Codable.
- Либо реализовать кэширование другим способом: UserDefaults, NoSQL (CouchDBLite, PinCache), Keychain, SwiftData.
3. Реализовать сохранение данных в файл при выходе с экрана тестирования структуры данных.
4. Загружать сохраненные данные при запуске приложения или повторном входе в экран тестирования.
Должно сохраняться состояние предыдущего тестирования даже после перезапуска приложения.
Создание приложений для Apple Watch, TV, Mac
Потренируемся собирать мультиплтаформу средствами Apple. Разберемся в особенность разработки под watchOS, tvOS, macOS и iPadOS. Будем использовать преимущества SwiftUI для мультиплатформы.
Виджеты
научиться создавать свои виджеты;
научиться создавать изменяемые виджеты с своим дизайном;
понять как добавлять виджеты к уже существующему приложению.
watchOS
научиться создавать приложение для Apple Watch.
Shortcuts и Siri интеграция с приложением
научиться использовать App Intents, Siri.
visionOS
разобраться как работает стек разработки под visionOS;
научиться использовать RealityKit для visionOS;
научиться использовать Reality Compose;
узнать как собирать базовый UI под visionOS.
Домашние задания: 1
ДЗ
Приложение для visionOS. 1. Создать приложение для visionOS.
2. Добавить два WindowGroup.
3. Реализовать Drag and Drop с использованием .dropDestination.
4. Добавить кнопку для добавления объектов usda/usdz.
Организация разработки
Немного познакомимся с теорией тестирования, напишем XCTest и UITest, узнаем как правильно проектировать тестируемый код. Изучим как настраивать Continuous Integration (CI) и причем здесь git и git-flow. Также научимся писать работающие резюме и то, что не говорят на собеседованиях, но используют.
Тестирование кода: Swift Testing, XCTest, UI-тесты, fastlane и CI
актуализировать стек тестирования;
гаучиться проектировать тестируемый код;
связать тесты с автоматической проверкой сборки.
Подпись, TestFlight, App Store Connect и диагностика после релиза.
понять полный путь сборки до пользователя;
освоить базовые сущности подписи и публикации;
научиться собирать информацию о проблемах после релиза.
Домашние задания: 1
ДЗ
Тесты, автоматическая проверка и подготовка релиза.
Как правильно написать резюме и развивать hard-skills
узнать особенности написания резюме;
понять как выбирать работодателя, чтобы развивать свои hard-skills.
Домашние задания: 1
ДЗ
Написание работающего резюме. 1. Просмотреть запись занятия с разбором резюме.
2. Доработать собственное резюме.
3. Прислать ссылку или файл для проверки.
Проектная работа
На основе умений и знаний полученных в курсе студент выбирает какой проект будет реализовывать. С нашей стороны будет помощь и наставничество в реализации проекта. Также нами будет предложен экспертный список «Чего не хватает в AppStore» из небольших и средних программ, где вы бы могли себя проявить.

Проект может помочь в трудоустройстве.
Написание приложения с нуля
выбрать и обсудить тему проектной работы;
спланировать работу над проектом;
ознакомиться с регламентом работы над проектом;
генерировать идеи для простых приложений на основе известных «­болей» пользователей;
использовать iOS платформу для генерации идей для приложений.
Домашние задания: 1
ДЗ
Проектная работа. 1. Предложить одобренную ранее тему проекта через строку в окне сдачи данного домашнего задания.
2. Сдать ссылку на репозиторий курсового проекта.

В репозитории обязательно должен быть заполнен файл `Readme.md` с описанием проекта.

Варианты размещения приложения:
- Выложить на Github
- TestFlight External Testing (10k users)
- Опубликовать App Store
- Продемонстрировать на симуляторе или устройстве.
Консультация по проектам и домашним заданиям
получить ответы на вопросы по проекту, ДЗ и по курсу.
Защита проектных работ
защитить проект и получить рекомендации экспертов.

Преподаватель

Ексей Пантелеев
iOS Team Lead, Утконос
Работает программистом с 2002 года, суммарный опыт программирования — 17 лет. Имеет большой опыт разработки на С/С++, C#, Java, JS, Swift.

Принял участие более чем в десяти крупных и сложных проектах в ведущих IT-компаниях страны (игры, мессенджеры, финтех и офисные приложения), таких как "Тинькофф Банк", Мail.ru, "Новые Облачные Технологии".

Преподает iOS/Swift 4 года. Выступает на iOS-митапах. Знает, что программирование развивает мозг, поэтому планирует заниматься разработкой всю жизнь.

Свободное время посвящает geek-арт-фотографии и майнингу криптовалют.

F.A.Q.: Наиболее часто задаваемые вопросы:

Нужно ли оплачивать обучение до Дня открытых дверей, если я хочу гарантированно попасть в группу?
Да, мы рекомендуем заранее оплатить обучение, чтобы гарантированно попасть в группу. В период проведения Дня открытых дверей резко возрастает количество желающих обучаться, поэтому может случиться так, что к окончанию Дня открытых дверей мест в группе не останется
Кто будет проводить День открытых дверей?
Проводить День открытых дверей будет преподаватель курса.
Как принять участие в Дне открытых дверей?
Для того, чтобы принять участие в Дне открытых дверей, оставьте свой e-mail в поле регистрации на мероприятие. Перед началом Дня открытых дверей мы пришлем вам ссылку, пройдя по которой, вы сможете присоединиться к вебинару.
Какие вопросы будем обсуждать на Дне открытых дверей?
На дне открытых дверей мы поговорим о проекте OTUS (о программе курса, почему мы не принимаем в группы новичков, почему учиться у нас интересно, но сложно), карьерных перспективах выпускников (почему вероятность карьерного роста у лучших студентов стремится к 100%), учебном процессе (оплатах, оценке знаний, сертификатах и прочих аспектах). Также ведущий мероприятия с радостью ответит на все ваши вопросы.
Снизили цены на 10 дней
Снизили цены на 10 дней
−10% на все курсы со стартом в ноябре, акция действует до 10 числа. Выбирайте направление — начинайте обучение
−10% на все курсы со стартом в ноябре, акция действует до 10 числа. Выбирайте направление — начинайте обучение