День открытых дверей по курсу «iOS Разработчик. Продвинутый курс v 2.0.» 21.05.2019 в 20:00 | OTUS
Скидки на курсы июня!
Только два дня! Пишите в чат, чтобы получить максимальную скидку ➞
Написать в чат

Курсы

Программирование
Web-разработчик на Python Разработчик на Spring Framework iOS Разработчик. Продвинутый курс v 2.0. PostgreSQL C# ASP.NET Core разработчик Разработчик C# Архитектор программного обеспечения Разработчик C++ MS SQL Server разработчик Android-разработчик. Базовый курс Архитектор высоких нагрузок Backend-разработчик на PHP Алгоритмы для разработчиков Team Lead 2.0 Python-разработчик. Базовый курс VOIP инженер Базы данных Разработчик Golang Разработчик программных роботов (RPA) на базе UiPath и PIX Разработчик голосовых ассистентов и чат-ботов Agile Project Manager в IT
Специализации Курсы в разработке Подготовительные курсы
+7 499 938-92-02
Проходил 21 мая 2019 года в 20:00

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

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

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

Запись

О курсе

iOS Разработчик. Продвинутый курс v 2.0.
100 000 ₽
5 месяцев
Начало 27 мая
Для кого Программа создана специально для iOS Developers с опытом работы в сфере разработки мобильных iOS-приложений от 1 года и более. Особенности программы Обучение построено исключительно на кейсах из практики разработки приложений в production. Мы будем решать сложные и хардкорные задачи с уровнем качества топовых приложений: ✔ разработаем комплексный и анимированный UI, используя SwiftUI и знания, которые не найти в …
Программа курса
Модуль 1
SwiftUI и основы Combine
Модуль 2
Современная архитектура мобильных приложений
Модуль 3
Foundation без сторонних фреймвоков и Swift 5 Standard Library
Модуль 4
Многозадачность
Модуль 5
Networking и хранение данных
Модуль 6
Создание приложений для watchOS, tvOS, перенос приложений с помощью Mac Catalyst
Модуль 7
Мультиплатформенная разработка, кодогенерация, перенос приложения на Android
Модуль 8
Организация разработки
Модуль 9
Проектная работа
SwiftUI и основы Combine
В этом модуле мы изучим внутренности UIKit, его архитектурные плюсы и недочеты. Научимся отображать комплексные данные. Оптимизировать рендеринг UI компонентов. Попрактикуемся в сборке интерфейсов корректно работающих на всех вариациях SizeClasses и анимации.
Проектируем UI декларативно с SwiftUI. В чем отличия UIKit и SwiftUI
после занятия студент сможет:
настроить окружение для работы на курсе и выполнения домашних заданий;
использовать Xcode;
создавать базовые интерфейсы на SwiftUI/Combine.
Домашние задания: 1
ДЗ
Создание каркаса приложения на SwiftUI. Создать флоу экранов на SwiftUI
1. Добавить TabView
2. На втором табе сделать List с обернутый в NavigationView
2.1 Из листа должны быть переходы с NavigationLink
3. На третьем табе должна быть кнопка открывающая модальное окно
4. На первом табе должна быть кнопка открывающая второй таб и один из пунктов там
5. Протестировать на iPad/iPhone симуляторах, со сменой ориентации девайса
SwiftUI List, List с кастомным лейаутом, Hosting ViewControllers
после занятия студент сможет:
понимать в каком состоянии приложение;
добавлять логику на изменение состояния приложения;
будет знать как устроен UIKit и его иерархия классов;
делать навигацию в SwiftUI разными способами.
Использование NavigationView, TabView. Создание собственного стека Навигации
после занятия студент сможет:
использовать NavigationView и TabView в SwiftUI;
создавать собственный стек Навигации;
использовать Transitions.
8 июня, 20:00 — 21:30
Лектор: Ексей Пантелеев
Отображение структурированных данных, List, пейджинг, кастомные компоненты на UIViewRepresentable
после занятия студент сможет:
правильно использовать List;
реализовывать пейджинг на SwiftUI;
кодогенерить Network слой в ДЗ;
привязывать List к реальному API с помощью кодогенерации.
10 июня, 20:00 — 21:30
Лектор: Ексей Пантелеев
Создание кастомных Shape, SwiftUI Drawing and Animation API
после занятия студент сможет:
работать с CALayer и понимать систему координат используемую в CoreGraphics;
программно рисовать Shapes в SwiftUI;
использовать анимацию в SwiftUI.
15 июня, 20:00 — 21:30
Лектор: Ексей Пантелеев
Домашние задания: 1
ДЗ
Реализация пейджинга на реальном API. 1. Используйте открытое API https://github.com/public-apis/public-apis
2. Сделайте несколько рубрик по разным запросам новостей или городов по погоде (переключение через горизонтальный ScrollView либо SegmentedControl)
3. При переключении рубрик должен изменять содержимое List, пейджинг должен работать
4. Сделать глубину в 3 экрана с помощью кастомного навигейшен-стека
Современная архитектура мобильных приложений
MVC, MVP, MVI, MVVM, VIPER, RIBs, MOVVER, YARCH и что дальше? Архитектуры множатся, проблемы остаются те же. Научимся целевому выбору архитектурных паттернов и попрактикуемся в проектировании.
Dependency Injection, SOA, слоистая архитектура. Protocol Oriented Programming (POP)
после занятия вы сможете:
применять паттерн Inversion of Control;
использовать ServiceLocator;
объяснить в чем польза слоистой архитектуры.
17 июня, 20:00 — 21:30
Лектор: Алексей Киселев
MVP, MVCS, MVVM, архитектурные паттерны, модуляризация, Архитектурные Rx паттерны
после занятия вы сможете:
разобраться в семействе MV(x) паттернов;
объяснить, что такое модуляризация и как ей пользоваться;
использовать Clean Architecture подход.
22 июня, 20:00 — 21:30
Лектор: Анна Жаркова
Необычная система типов Swift, структуры данных, Generics
после занятия студент сможет:
создать кастомные структуры данных.
24 июня, 20:00 — 21:30
Лектор: Константин Савялов
Современные паттерны проектирования, принцип SOLID и его целесообразное применение. Принципы GRASP
после занятия вы сможете:
объяснить SOLID с примерами использования;
объяснить как SOLID адекватно использовать в проектах;
рассказать о паттернах в мобильной разработке
29 июня, 20:00 — 21:30
Лектор: Анна Жаркова
Связывание разных частей приложения Observing, Signals, Callbacks. PATs (Protocol with Associated Types)
после занятия вы сможете:
работать с разными подходами связи сущностей в
приложении: коллбеками , сигналами , классическим Observing.
1 июля, 20:00 — 21:30
Лектор: Ексей Пантелеев
Домашние задания: 1
ДЗ
Создания каркаса для модуляризированного приложения с Dependency Injection . 1. Модуляризировать свое приложение одним из известным способом
1.1 Вынести UI компоненты в отдельный модуль и импортить его в местах использования
2. В основной части приложения сделать рефакторинг до архитектуры MVVM
2.1 Выделить ViewModel-s там где это возможно
2.2 Как это делается описано в статье на appcoda в материалах
3. Создать ServiceLocator (можно на дженериках)
4. Перевести существующие сервисы на него
5. Добавить инжектинг в переменные инстанса класса, чтобы в каждома классе можно было видеть зависимости не скролля файл
*6. Выделить уровень Core сервисов (сеть, парсинг, хранение)
Foundation без сторонних фреймвоков и Swift 5 Standard Library
Загрузим в мозг стройную модель Statements, Expressions и Declaration языка Swift, и попрактикуемся в их использовании. Научимся использовать все возможности String. Научимся управлять "сахарностью" Swift и поймем, что многие библиотеки в проекте вам просто не нужны.
Sequences и коллекции, асимптотический анализ: O(1), O(N), O(N*log(N)), O(n^2)
после занятия вы сможете:
использовать Sequence и Collection для реализации собственных структур данных;
объяснить как работают lazy collection, будете понимать концепцию type-erased.
6 июля, 20:00 — 21:30
Лектор: Алексей Киселев
Использование всей мощи String, Literals vs. UnicodeScalar, UTF-16
после занятия студент сможет:
работать с utf8 и utf16 представлениями;
использовать подстрок и Ranges, StringProtocol.
8 июля, 20:00 — 21:30
Лектор: Анна Жаркова
Домашние задания: 1
ДЗ
Продвинутая локализация приложения на несколько языков.
Региональные форматы и локализация iOS приложения
после занятия студент сможет:
работать с единицами измерения и валютами;
13 июля, 20:00 — 21:30
Ассоциативные типы, Type Erasure, «сахарные» типы данных, диспетчеризация вызовов в Swift 5
после занятия вы сможете:
объяснить, что такое Method Dispatch и почему это важно.
создавать generic протоколы.
объяснить как Swift работает с типами.
15 июля, 20:00 — 21:30
Компилятор LLVM, AST, создание собственных операторов
после занятия вы сможете:
объяснить, как работает компилятор LLVM;
создавать собственные операторы.
20 июля, 20:00 — 21:30
Домашние задания: 1
ДЗ
Создание расширения для копирования текста в приложения и построение на основе него суффиксного массива. 1. Реализовать для приложения ShareExtension
1.1 Настроить чтобы с любого сайта можно было выделить текст и отправить в приложение
1.2 При получениии ревеста от ShareExtension в приложении показывать View
2. Перед показом View разложить все полученные слова в тексте на SuffixSequence
2.1 Как показано в уроке создать SuffixIterator
2.2 Обернуть в SuffixSequence каждое слово из полученное из шаринга
3. В этом ViewController:
2.1 Отображать Segmented Control(Picker в SwiftUI) переключения между
2.1.1 листом всех суффиксов, повторяющиеся помечать кол-вом, остортировать по алфавиту, сделать переключение сортировки ASC/DESC
2.1.2 топом 10 самых популярных 3х буквенных суффиксов, отсортированных по кол-ву нахождений
2.1.3 топом 10 самых популярных 5х буквенных суффиксов, отсортированных по кол-ву нахождений
*4. Добавить поиск на лист 2.1.1
4.1 Искать по совпадением используя debounce в 500мс из Combine
Многозадачность
Попрактикуемся в использовании последовательных (serial) и параллельных (concurrent) очередей, в создании управлении DispatchGroup. Использовании мьютексов и семафоров и других Locks. Будем знать как решать проблемы параллельной многозадачности типа Priority inversion и другие.
Проблемы многозадачности и способы их решения, GCD
после занятия студент сможет:
использовать GCD: QoS, Queues, Main Queue и Main Thread.
22 июля, 20:00 — 21:30
Внутренности GCD(libdispatch), OperationQueue
после занятия вы сможете:
рассказать о проблемах многозадачности;
избегать антипаттерны;
пользоваться средствами GCD.
27 июля, 20:00 — 21:30
RunLoop & POSIX Threads, Инструменты синхронизации, Lock, Mutex
после занятия вы сможете:
разобраться как работает RunLoop;
использовать инструменты синхронизации;
разобраться с POSIX.
29 июля, 20:00 — 21:30
Домашние задания: 1
ДЗ
Реализация асинхронного выполнения задач и оценка эффективности подхода. 1. Сделать таб историю шарингов на основе предыдущего таьа
2. Реализовать структуру данных Job Queue
3. Создать сервис Job Scheduler
4. В хедере таблицы экрана Feed сделать возможность запускать один конкретный тест по всем айтемам истории на построение суффиксного массива
5. В ячейку выводить время построение
*6. Красить в зеленый лучшее время и в красный худшее, или градацие от зеленого к красному
Networking и хранение данных
Познакомимся со свежим фреймвоком Network для iOS. Будем использовать Codable для легкой серилизации и десириализации данных. Изучим подходы к хранению данных в приложении. Потренируемся использовать Core Data и Realm, и будем понимать когда какое хранилище использовать.
Новый Network-фреймвок, URLSession, Codable
после занятия вы сможете:
попробовать разные способы формированияи работы с URL;
объяснить, как работать с чистой URLSession;
познакомиться с GraphQL и как его использовать на iOS.
10 августа, 20:00 — 21:30
Когда использовать Files, чистый SQLite, способы кеширования
после занятия вы сможете:
разобрать строение файловой системы iOS;
познакомиться с некоторыми способами кэширования;
рассмотреть такие решения для сохранения данных, как SQLite, Realm, NoSQL.
12 августа, 20:00 — 21:30
CoreData — основные стратегии использования
после занятия вы сможете:
объяснить, что за зверь такой CoreData;
работать с данными используя CoreData;
рассмотреть используемые практики.
17 августа, 20:00 — 21:30
Realm
после занятия вы сможете:
проанализировать отличия Realm от Core Data;
делать модель данных на Realm.
19 августа, 20:00 — 21:30
Домашние задания: 1
ДЗ
Реализация поддержки оффлайн режима в приложении. Создать приложение, которое будет получать данные из сети.
1 Кэширование реализовать на Realm/Files/Firebase/CoreData (лучше что еще не использовали)
2. Проверить, что модели поддерживают протокол Codable в вашем каркасе приложения
2.1 Либо реализовать кеш другим способом (UserDefaults, NoSQL(CoachDBLite, PinCache, ...), Keychain :), Files, Core Data, Realm)
3. Реализовать сохранение в файл при возвращении из экрана тестирования структуры данных
4. Чтение сделать в момент запуска приложения или перезахода в экран тестирование структуры данных
5. Должно сохранятся предыдущее состояние тестирование даже при перезапуске приложения
Создание приложений для watchOS, tvOS, перенос приложений с помощью Mac Catalyst
watchOS
после зянятия студент сможет:
создать приложение для Apple Watch.
24 августа, 20:00 — 21:30
tvOS
после занятия студент сможет:
создать приложение для Apple TV.
26 августа, 20:00 — 21:30
Кросс-платформенный код для iOS/iPadOS, watchOS, macOS, tvOS
после занятия вы сможете:
использовать NavigationView и TabView в SwiftUI;
делать компоненты с помощью @ViewBuilder;
использовать Transitions и Animation;
сСоздавать собственный стек Навигации.
31 августа, 20:00 — 21:30
Домашние задания: 1
ДЗ
Приложение работающее на всех платформах Apple. 1. Можно использовать шаблон https://github.com/shial4/SpriteKit-SwiftUI-Template или сделать свой для SwiftUI компонентов
2. Сделать меню игры с разделами
2.1 Play
2.2 Settings
2.3 Leaderboard
3. На каждом экране показывать как минимум заголовок и тестовые данные
4. Можно сделать какой-нибудь геймлей :)
*4. Добавть watchOS
Мультиплатформенная разработка, кодогенерация, перенос приложения на Android
Мультиплатформа для Rich Media: Metal и Vulkan, разработки игр, Video/Image процессинг
после занятия вы сможете:
писать кроссплатформенный GPU код;
настраивать окружение для этого.
2 сентября, 20:00 — 21:30
Jetpack Compose
после занятия вы сможете:
сравнить SwiftUI и Compose;
переносить логику разработки на SwiftUI в Compose.
7 сентября, 20:00 — 21:30
Одновременная реализация фич на iOS + Android. Необходимый tool-set
после занятия вы сможете:
настраивать окружение;
собирать KMM стек для iOS;
решать проблемы с gradle.
9 сентября, 20:00 — 21:30
Домашние задания: 1
ДЗ
Создание мультиплатформенного сетевого слоя с помощью KMM и openapi-generator. 1. Установить IDEA Community Edition https://www.jetbrains.com/idea/download
2. Создать мультиплатформенный проект как показано было на занятии
3. Пересоздать для SwiftUI iosApp как показано было на занятии
4. Обновить openapi-generator c помощью brew install openapi-generator
5. Можно взять из материалов recipepuppy_openapi.yaml (нужно в Info.plist разрешить http) или найти другое публично апи и написать спеку https://github.com/public-apis/public-apis
6. Сгенерировать сетевой слой openapi-generator generate -g kotlin -i recipepuppy_openapi.yaml --library multiplatform -o NetworkLayer (показывается на занятии)
7. Подключить в build.gradle io.ktor и kotlinx.serialization
8. Сбилдить KMM в IDEA и затем app фреймвок в Xcode
9. Вывести рецепты в SwiftUI лист по нескольким ингридиентам или поиском (частично показано в конце занятия)
Организация разработки
Немного познакомимся с теорией тестирования, напишем XCTest и UITest, узнаем как правильно проектировать тестируемый код. Изучим как настраивать Continuous Integration (CI) и причем здесь git и git-flow. Также научимся писать работающие резюме и то, что не говорят на собеседованиях, но используют.
Тестирование кода XCTest, UITest, fastlane и CI
после занятия студент сможет:
собрать CI (Continuous Integration) на fastlane;
использовать XCTest.
21 сентября, 20:00 — 21:30
Git-flow, TBD, автоматизизация workflow
после занятия студент сможет:
использовать комманд git-flow.
23 сентября, 20:00 — 21:30
Как правильно написать резюме и развивать hard-skills
после занятия вы сможете:
корректно писать резюме;
выбирать работодателя, чтобы развивать свой hard-skills.
28 сентября, 20:00 — 21:30
Домашние задания: 1
ДЗ
Написание работающего резюме.
Проектная работа
На основе умений и знаний полученных в курсе студент выбирает какой проект будет реализовывать. С нашей стороны будет помощь и наставничество в реализации проекта. Также нами будет предложен экспертный список «Чего не хватает в AppStore» из небольших и средних программ, где вы бы могли себя проявить.

Проект может помочь в трудоустройстве.
Написание приложения с нуля
выбрать и обсудить тему проектной работы;
спланировать работу над проектом;
ознакомиться с регламентом работы над проектом;
генерировать идеи для простых приложений на основе известных «­болей» пользователей;
использовать iOS платформу для генерации идей для приложений.
30 сентября, 20:00 — 21:30
Домашние задания: 1
ДЗ
Написание приложения с нуля.
Консультация по проектам и домашним заданиям
получить ответы на вопросы по проекту, ДЗ и по курсу.
5 октября, 20:00 — 21:30
Защита проектных работ
защитить проект и получить рекомендации экспертов.
7 октября, 20:00 — 21:30
Домашние задания: 1
ДЗ
Сдать ссылку на репозиторий курсового проекта. В репозитории обязательно должен быть заполнен файл Readme.md с описание проекта..

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

Ексей Пантелеев
Head Of Mobile (Новые облачные технологии)
Работает программистом с 2002 года, суммарный опыт программирования — 17 лет. Имеет большой опыт разработки на С/С++, C#, Java, JS, Swift.

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

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

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

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

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