[Startandroid] Kotlin (Дмитрий Виноградов)

Цена:
360.8
doneМного
doneЗаканчивается
highlight_offНет в наличии
notifications_none
Уведомить

[?IMG] ?

Почему Котлин

Мое знакомство с Котлин началось на Google IO 17. Уже тогда стало понятно, что имеет смысл, как минимум, обратить на этот язык внимание. А еще лучше - изучить его. Я потратил пару недель на официальные доки и примеры, чтобы усвоить основы. А затем периодически почитывал статьи с medium, чтобы разобраться в более сложных вещах. Спустя полгода я без особых проблем влился в новый проект на Котлине. И вот уже два года я пишу только на нем.

Гугл официально признал Котлин, использует его для примеров в документации, создает курсы и codelabs по нему, встраивает его поддержку в свои библиотеки и фреймворки. Статьи на medium.com уже практически все с примерами на Котлин. Ну и в вакансиях он встречается все чаще

В общем, как мне кажется, вопрос 'Изучать ли Котлин?' уже нет смысла обсуждать.

О чем курс
Сразу скажу, что курс не для полных новичков. На официальном сайте Котлин есть хорошая документация и инструменты, чтобы изучить и попрактиковать основы. Кроме этого есть куча учебной литературы для начинающих. Поэтому я решил рассматривать только темы, понимание которых может оказаться сложным. Это такие темы, как Coroutines, DSL, Inline functions, Operator overloading, Delegated properties и прочие непростые штуки.

Соответственно, для лучшего понимания курса лучше уже иметь хотя бы небольшой опыт работы с Котлин. Так будет легче понять материал.

Первой темой курса будут корутины. Я планирую рассмотреть следующие вопросы:
- почему suspend функции не блокируют поток
- как создать suspend функцию
- что такое Continuation, Job, Scope, корутина, диспетчер
- что происходит внутри билдеров
- чем билдеры отличаются друг от друга
- как изнутри работает связь между родительской и дочерней корутиной
- как происходит обработка ошибок
- как использовать корутины в Android

По мере написания курса буду обновлять этот список.

Урок 1. Корутины. Введение.
В этом уроке начнем разбираться, что такое корутина и suspend функция.

Урок 2. Корутины. Continuation
В этом уроке разберем, что такое Continuation и как suspend функция приостанавливает код, не блокируя поток.

Урок 3. Корутины. Suspend функции
В этом уроке подробно разберем как создать suspend функции. Также рассмотрим, можно ли блокировать поток, как корутина может потеряться и зачем нужно слово suspend.

Урок 4. Корутины. Continuation, возврат значений.
В этом уроке рассмотрим более подробно, как Continuation обрабатывает ответ от suspend функций. А также, как корутина может вернуть какое-либо значение, как результат своей работы.

Урок 5. Корутины. Suspend функции изнутри.
В этом уроке разбираем, как работает suspend функция изнутри. Как она может вернуть значение сразу или после асинхронной работы.

Урок 6. Корутины. Job.
В этом уроке начинаем разбираться, что из себя представляет корутина. Из каких объектов она состоит и что происходит во время ее выполнения.

Урок 7. Корутины. Scope.
В этом уроке рассмотрим, что такое Scope и как создать его самый простой вариант.

Урок 8. Корутины. Отмена.
В этом уроке запускаем и отменяем корутины. Проверяем, как корутины влияют на основной поток.

Урок 9. Корутины. Билдеры launch и async.
В этом уроке рассмотрим билдеры launch и async. Как ведут себя вложенные корутины. Как дождаться окончания работы корутины, и как получить результат этой работы. Как создать отложенную корутину и запустить ее позже. Как распараллеливать задачи с помощью корутин.

Урок 10. Корутины. Context.
В этом уроке разбираемся с Context. Какие его элементы используются по умолчанию. Как создавать свой элемент. Как происходит передача элементов в контекст создаваемой корутины.

Урок 11. Корутины. Dispatcher.
В этом уроке рассмотрим основные виды диспетчеров. Также поговорим о том, что происходит под капотом корутин при использовании диспетчера.

Урок 12. Корутины. Связь между родительской и дочерней корутиной.
В этом уроке разбираемся, как создается дочерняя корутина. Рассмотрим, как формируется ее контекст, и как работает ее связь с родительской корутиной.

Урок 13. Корутины. Обработка исключений.
В этом уроке рассмотрим как можно обработать исключения, возникающие в корутине. Разберем, что происходит под капотом и как работает CoroutineExceptionHandler.

Урок 14. Корутины. Обработка исключений. Вложенные корутины.
В этом уроке продолжаем обсуждать обработку исключений на примере вложенных корутин.

Урок 15. Корутины. Обработка исключений. Async, suspend.
В этом уроке разбираемся к чему приводят исключения в async корутине и в suspend функциях.

Урок 16. Корутины. Отмена - это ошибка.
В этом уроке обсуждаем как работает отмена корутин под капотом.

Урок 17. Корутины. coroutineScope, supervisorScope, withContext, runBlocking.
В этом уроке обсуждаем функции coroutineScope, supervisorScope, withContext, runBlocking.

Урок 18. Корутины. Каналы.
В этом уроке разбираемся как работают каналы. Что под капотом, закрытие и отмена канала, буфер, produce, consume, broadcast.

Урок 19. Корутины. Flow.
В этом уроке разбираемся что такое Flow, как он работает под капотом и чем отличается от каналов.

Урок 20. Корутины. Flow. Билдеры и простые операторы.
В этом уроке рассмотрим способы создания Flow, простые операторы и создание своих операторов.

Урок 21. Корутины. Flow. Операторы channelFlow, flowOn, buffer, produceIn.
В этом уроке рассматриваем операторы channelFlow, flowOn, buffer, produceIn.

Урок 22. Корутины. Flow. Ошибка, отмена, повтор.
В этом уроке рассматриваем операторы catch, retry, retryWhen и возможность отмены Flow.

Урок 23. Корутины. Практика. Scope, LiveData.
В этом уроке рассматриваем билдер liveData и операторы для получения scope: viewModelScope, lifecycleScope, MainScope.

Урок 24. Корутины. Практика. Retrofit.
В этом уроке рассматриваем интеграцию корутин в Retrofit.

Урок 25. Корутины. Практика. Room
В этом уроке рассматриваем интеграцию корутин в Room.

Урок 26. Корутины. Практика. Примеры использования.
В этом уроке используем корутины в несложных примерах с репозиторием и UseCase

Урок 27. Корутины. Практика. Параллельная работа.
В этом уроке мы вызываем suspend функции параллельно, а не последовательно.

Урок 28. Корутины. Flow. SharedFlow и StateFlow.
В этом уроке подробно разбираем что такое SharedFlow и StateFlow.