Актуальное повышение квалификации с курсом «Kotlin Backend Developer. Professional» от OTUS — это ваш шанс освоить современные практики и инструменты для масштабируемых серверных приложений. На курсе вы:
🗣 Преподаватели — практикующие эксперты, которые покажут реализацию проекта маркетплейса от идеи до продакшена. Программа постоянно обновляется в соответствии с требованиями рынка, а диплом OTUS ценится в крупных компаниях.
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM
Ныряем в холодные потоки Kotlin Flow
Лето — лучшее время для сплава. Поэтому, если вы пока не в отпуске, давайте устроим короткий сплав по асинхронным потокам данных.
Переход из привычной императивной парадигмы иногда бывает сложным, поэтому сначала поговорим о терминах.
https://habr.com/ru/articles/922962/
✍️ @kotlin_lib
Лето — лучшее время для сплава. Поэтому, если вы пока не в отпуске, давайте устроим короткий сплав по асинхронным потокам данных.
Переход из привычной императивной парадигмы иногда бывает сложным, поэтому сначала поговорим о терминах.
https://habr.com/ru/articles/922962/
✍️ @kotlin_lib
👍3
Media is too big
VIEW IN TELEGRAM
Эти фичи Kotlin меняют правила игры
0:00 Почему мы любим Kotlin
1:43 Новый долгожданный оператор
2:46 Розыгрыш книги с автографом Елизарова
4:09 Курс по OKT от АвитоТех
5:03 Обязательное использование возвращаемого результата (Must use return)
9:50 Прокачали работу с ошибками (не про исклоючения)
14:00 Куда скатился Kotlin... Много обещаний и...
источник
✍️ @kotlin_lib
0:00 Почему мы любим Kotlin
1:43 Новый долгожданный оператор
2:46 Розыгрыш книги с автографом Елизарова
4:09 Курс по OKT от АвитоТех
5:03 Обязательное использование возвращаемого результата (Must use return)
9:50 Прокачали работу с ошибками (не про исклоючения)
14:00 Куда скатился Kotlin... Много обещаний и...
источник
✍️ @kotlin_lib
👍3💩1
📲 Как сделать так, чтобы пользователи всегда возвращались туда, где они остановились в приложении?
⏺️ Присоединяйся к открытому вебинару «Flutter Deep Linking & State Restoration» 22 июля в 20:00 МСК. На вебинаре разберем:
— Типы диплинков во Flutter и как они работают с мобильными и веб-приложениями.
— Как выбрать правильную навигацию: Navigator 1.0 или Router API для сложных сценариев.
— State Restoration во Flutter: как сохранять и восстанавливать состояние после перезапуска.
— Использование Restorable Routes для автоматического возвращения на нужный экран.
❗️Этот вебинар — отличная тренировка перед стартом курса «Flutter Mobile Developer» от OTUS.
👉 Записаться на вебинар → https://vk.cc/cNLk8U
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
⏺️ Присоединяйся к открытому вебинару «Flutter Deep Linking & State Restoration» 22 июля в 20:00 МСК. На вебинаре разберем:
— Типы диплинков во Flutter и как они работают с мобильными и веб-приложениями.
— Как выбрать правильную навигацию: Navigator 1.0 или Router API для сложных сценариев.
— State Restoration во Flutter: как сохранять и восстанавливать состояние после перезапуска.
— Использование Restorable Routes для автоматического возвращения на нужный экран.
❗️Этот вебинар — отличная тренировка перед стартом курса «Flutter Mobile Developer» от OTUS.
👉 Записаться на вебинар → https://vk.cc/cNLk8U
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Избегайте использования lambda в конструкторе data-класса в Kotlin
В своих предыдущих статьях я показывал, почему использование
Эти проблемы в основном связаны с тем, как работают методы
https://proandroiddev.com/avoid-using-lambda-in-the-data-class-constructor-in-kotlin-a7d952de25c9
✍️ @kotlin_lib
В своих предыдущих статьях я показывал, почему использование
var
или Array
в конструкторе data-класса Kotlin приводит к неожиданному поведению и трудноуловимым багам.Эти проблемы в основном связаны с тем, как работают методы
equals()
, hashCode()
и copy()
— особенно при использовании в коллекциях вроде HashMap
, HashSet
, или в UI-фреймворках, таких как Jetpack Compose.https://proandroiddev.com/avoid-using-lambda-in-the-data-class-constructor-in-kotlin-a7d952de25c9
✍️ @kotlin_lib
👍2
Media is too big
VIEW IN TELEGRAM
Kotlin Coroutines — Обзор инструментов отладки
Корутины создают новые сложности при отладке — обычные трассировки стека мало помогают, когда асинхронная работа была запущена кодом, выполнявшимся в другом потоке. Это видео — короткий обзор нескольких инструментов для отладки корутин, которые вы могли упустить в IntelliJ IDEA и Android Studio.
источник
✍️ @kotlin_lib
Корутины создают новые сложности при отладке — обычные трассировки стека мало помогают, когда асинхронная работа была запущена кодом, выполнявшимся в другом потоке. Это видео — короткий обзор нескольких инструментов для отладки корутин, которые вы могли упустить в IntelliJ IDEA и Android Studio.
источник
✍️ @kotlin_lib
👍1
Приглашаем на открытый урок «Jetpack Compose: пишем красивые и производительные анимации».
🗓 21 июля в 20:00 МСК
🆓 Бесплатно. Урок в рамках старта курса «Android Developer. Professional».
На открытом уроке мы расскажем, как с помощью Jetpack Compose создавать красивые и производительные анимации, которые работают без задержек и не перегружают приложение.
🎯 Мы подробно разберем ключевые инструменты анимации и расскажем, как избежать лишних рекомпозиций и профилировать анимации для повышения производительности.
🔗 Ссылка на регистрацию: https://vk.cc/cNMWI6
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥 “val” — не панацея: когда immutable переменные создают проблемы
Kotlin приучает нас к
На практике это может привести к багам, особенно при работе с
💥 Пример проблемы:
Вроде бы
- передаёте
- работаете с кэшем или shared state;
- делаете
🧠 Хуже в многопоточке:
Если доступ к
✅ Как писать безопаснее:
- Используйте
- Если нужно менять данные — лучше явно использовать
- Для shared state — применяйте
🧵 Ещё пример — data class:
Снаружи кажется, что
⚠️ Вывод
✍️ @kotlin_lib
Kotlin приучает нас к
val
: "если переменная не меняется — сделай её immutable". Это правильно, но есть нюанс: val
не гарантирует неизменяемость объекта, а только то, что ссылка не переназначится.На практике это может привести к багам, особенно при работе с
MutableList
, var
- свойствами в data-классах, или в многопоточном коде.💥 Пример проблемы:
val items = mutableListOf("A", "B")
items.add("C") // OK, но items всё ещё val
Вроде бы
val
, значит безопасно? Нет — items
мутируются. Это особенно критично, если вы:- передаёте
val
в другие слои архитектуры;- работаете с кэшем или shared state;
- делаете
val
глобальными или синглтонами.🧠 Хуже в многопоточке:
class Cache {
val data = mutableMapOf<String, Any>()
}
Если доступ к
data
не синхронизирован — ловите гонки. А val
создаёт ложное ощущение защищённости.✅ Как писать безопаснее:
- Используйте
List
, Map
(immutable интерфейсы), а не MutableList
, MutableMap
, если нет необходимости в мутации.
val items: List<String> = listOf("A", "B")
- Если нужно менять данные — лучше явно использовать
var
, чтобы было видно, что объект изменчив.
var state = State()
- Для shared state — применяйте
StateFlow
, Mutex
, atomic
-типы и пр. инструменты контроля доступа.🧵 Ещё пример — data class:
data class User(var name: String)
val user = User("Alice")
user.name = "Bob" // mutable, хотя user — val
Снаружи кажется, что
user
не меняется. Но его внутренности - легко. В больших командах это ведёт к багам.⚠️ Вывод
val
— это про неизменность ссылки, не объекта. Не полагайтесь на val
как на гарантию иммутабельности. Будьте явными в намерениях: или делайте объект действительно immutable, или давайте понять, что он может меняться.✍️ @kotlin_lib
👍6❤1👎1
Мастерство отмены корутин в Kotlin: лучшие практики, частые ошибки и безопасная работа с повторяющимися задачами
При использовании корутин в Kotlin для повторяющихся задач — таких как опрос API, периодическое обновление данных или выполнение по расписанию — крайне важно чётко понимать, как работает отмена корутин. Неправильная обработка отмены может привести к скрытым ошибкам, бесконечным циклам или «зомби-корутинам».
Эта статья подробно объясняет механизм отмены корутин, типичные ошибки и лучшие практики для их правильного управления.
https://proandroiddev.com/age-mastering-coroutine-cancellation-in-kotlin-best-practices-common-pitfalls-and-safe-handling-41f702503977
✍️ @kotlin_lib
При использовании корутин в Kotlin для повторяющихся задач — таких как опрос API, периодическое обновление данных или выполнение по расписанию — крайне важно чётко понимать, как работает отмена корутин. Неправильная обработка отмены может привести к скрытым ошибкам, бесконечным циклам или «зомби-корутинам».
Эта статья подробно объясняет механизм отмены корутин, типичные ошибки и лучшие практики для их правильного управления.
https://proandroiddev.com/age-mastering-coroutine-cancellation-in-kotlin-best-practices-common-pitfalls-and-safe-handling-41f702503977
✍️ @kotlin_lib
❤3
Приглашаем на открытый урок «Стиль разработки 2020-х и среда окружения современного бэкенд-приложения».
🗓 30 июля в 19:00 МСК
🆓 Бесплатно. Урок в рамках старта курса «Kotlin Backend Developer. Professional».
На открытом уроке вы узнаете, как поменялся стиль разработки в 2020-х и какие компоненты уже не нужно писать самому. Поговорим о том, как в современном бэкенде выполнять только ключевую бизнес-логику.
🔗 Ссылка на регистрацию: https://vk.cc/cNTF4N
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM
Вышел Coil 3.3.0 - загрузчик картинок с поддержкой KMP
https://github.com/coil-kt/coil/blob/main/CHANGELOG.md#330---july-22-2025
✍️ @kotlin_lib
https://github.com/coil-kt/coil/blob/main/CHANGELOG.md#330---july-22-2025
✍️ @kotlin_lib
GitHub
coil/CHANGELOG.md at main · coil-kt/coil
Image loading for Android and Compose Multiplatform. - coil-kt/coil
❤4👍1
Animate.compose — мощная библиотека анимаций Kotlin Multiplatform для Jetpack Compose с более чем 90 готовыми к использованию анимациями.
Фичи: более 90 готовых анимаций, простой API, на основе ключевых кадров — плавная, естественная анимация с плавными переходами, поддержка Android, iOS, Desktop, и Web, быстродействующая, настраиваемая, с интерактивной игровой площадкой для тестирования.
https://github.com/nomanr/animate-compose
✍️ @kotlin_lib
Фичи: более 90 готовых анимаций, простой API, на основе ключевых кадров — плавная, естественная анимация с плавными переходами, поддержка Android, iOS, Desktop, и Web, быстродействующая, настраиваемая, с интерактивной игровой площадкой для тестирования.
https://github.com/nomanr/animate-compose
✍️ @kotlin_lib
👍8
🤖 Пройди тест для Android-разработчиков и проверь свои знания, готов ли ты к обучению на курсе.
Ответишь — пройдешь на продвинутый курс "Android Developer. Professional " от OTUS.
За 5 месяцев обучения ты освоишь:
— Проектирование архитектуры: Clean Architecture, MV*, многомодульные приложения и профессиональное использование DI.
— Современный стек: Kotlin, Jetpack Compose, Coroutines/Flow, Dagger 2/Hilt, Gradle.
— Разработку кросс-платформенных приложений с использованием Kotlin Multiplatform.
— Глубокое понимание Android SDK: оптимизация, безопасность и производительность приложений.
— Организацию инфраструктуры: CI/CD, Docker, линтеры, автоматизация сборки и мониторинг.
— Написание надежных тестов: интеграционные, UI-тесты и работа с фреймворками.
👉 ПРОЙТИ ТЕСТ: https://vk.cc/cNXvF1
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Ответишь — пройдешь на продвинутый курс "Android Developer. Professional " от OTUS.
За 5 месяцев обучения ты освоишь:
— Проектирование архитектуры: Clean Architecture, MV*, многомодульные приложения и профессиональное использование DI.
— Современный стек: Kotlin, Jetpack Compose, Coroutines/Flow, Dagger 2/Hilt, Gradle.
— Разработку кросс-платформенных приложений с использованием Kotlin Multiplatform.
— Глубокое понимание Android SDK: оптимизация, безопасность и производительность приложений.
— Организацию инфраструктуры: CI/CD, Docker, линтеры, автоматизация сборки и мониторинг.
— Написание надежных тестов: интеграционные, UI-тесты и работа с фреймворками.
👉 ПРОЙТИ ТЕСТ: https://vk.cc/cNXvF1
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
👍1
Media is too big
VIEW IN TELEGRAM
Однопоточные корутины в Kotlin
Причина, по которой многим разработчикам сложно разобраться с корутинами в Kotlin, заключается не в том, что они сами по себе трудны для понимания. Проблема в том, что корутины часто подаются слишком перегруженно — сразу с погружением в асинхронный код. Но по своей сути корутины — это не про асинхронность. Это про конкурентное (параллельное) выполнение кода. И вот это как раз гораздо проще понять.
источник
✍️ @kotlin_lib
Причина, по которой многим разработчикам сложно разобраться с корутинами в Kotlin, заключается не в том, что они сами по себе трудны для понимания. Проблема в том, что корутины часто подаются слишком перегруженно — сразу с погружением в асинхронный код. Но по своей сути корутины — это не про асинхронность. Это про конкурентное (параллельное) выполнение кода. И вот это как раз гораздо проще понять.
источник
✍️ @kotlin_lib
👍5👎1
Media is too big
VIEW IN TELEGRAM
Алина Гребёнкина — как сделать так, чтобы разработчики использовали Kotlin
Тайм-коды:
00:00 — Избранные моменты выпуска
00:37 — Начало выпуска
00:50 — Расскажи подробнее, что ты делаешь на работе?
01:30 — Что такое Kotlin?
03:34 — Кем ты хотела стать, когда вырастешь?
05:10 — Про школу и интересы в школьное время
08:03 — Про ЕГЭ и обучение в СУНЦ НГУ
14:34 — Как ты выбирала универ и как тебе там было после СУНЦа?
16:45 — Как появилась твоя первая работа и что ты делала?
19:29 — Как происходил твой рост в работе за эти два года?
21:05 — Почему ты решила уйти и как искала новую работу?
23:00 — Про собеседования в Москве
24:21 — Работа в СММ-агентстве и переход к разработке брендинговых стратегий
26:33 — «Поняла, что хочется перейти на сторону продукта»
29:03 — Что ты делала в Bookmate?
31:22 — Почему ты ушла?
33:32 — Как ты попала в JetBrains?
37:55 — Что ты посоветуешь человеку, который хочет в IT?
40:45 — Ты работаешь в IT, но ты не пишешь код. Тебе с этим ок?
42:03 — Подкаст выходит при поддержке школы karpov.courses
42:27 — Cпасибо Haos Community Space за предоставленное место для съемки
источник
✍️ @kotlin_lib
Тайм-коды:
00:00 — Избранные моменты выпуска
00:37 — Начало выпуска
00:50 — Расскажи подробнее, что ты делаешь на работе?
01:30 — Что такое Kotlin?
03:34 — Кем ты хотела стать, когда вырастешь?
05:10 — Про школу и интересы в школьное время
08:03 — Про ЕГЭ и обучение в СУНЦ НГУ
14:34 — Как ты выбирала универ и как тебе там было после СУНЦа?
16:45 — Как появилась твоя первая работа и что ты делала?
19:29 — Как происходил твой рост в работе за эти два года?
21:05 — Почему ты решила уйти и как искала новую работу?
23:00 — Про собеседования в Москве
24:21 — Работа в СММ-агентстве и переход к разработке брендинговых стратегий
26:33 — «Поняла, что хочется перейти на сторону продукта»
29:03 — Что ты делала в Bookmate?
31:22 — Почему ты ушла?
33:32 — Как ты попала в JetBrains?
37:55 — Что ты посоветуешь человеку, который хочет в IT?
40:45 — Ты работаешь в IT, но ты не пишешь код. Тебе с этим ок?
42:03 — Подкаст выходит при поддержке школы karpov.courses
42:27 — Cпасибо Haos Community Space за предоставленное место для съемки
источник
✍️ @kotlin_lib
👍3❤1🤡1
🏆 Пройди тест из 10 вопросов, проверь свой уровень знаний и приходи учиться на онлайн-курс «Kotlin Backend Developer. Professional» от OTUS!
На курсе:
🎫 Курс можно приобрести в рассрочку
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM
😁1💊1
Паттерн Декоратор в Kotlin — следуя принципу «Открытости/Закрытости»
В предыдущей статье мы рассмотрели принцип открытости/закрытости (Open/Closed Principle, OCP) — краеугольный камень SOLID, который гласит, что программные сущности должны быть открыты для расширения, но закрыты для модификации. Мы взяли жёсткую систему валидации одноразовых паролей (OTP) и переработали её с использованием паттерна «Стратегия», получив чистый и легко сопровождаемый код, где каждый набор правил валидации стал отдельным классом.
Это был огромный шаг вперёд. Но путь к действительно гибкой архитектуре редко заканчивается на первом решении. По мере усложнения требований ограничения одного паттерна часто подталкивают к применению другого.
https://itnext.io/decorator-pattern-in-kotlin-embracing-open-closed-principle-b469adc2ab7b
✍️ @kotlin_lib
В предыдущей статье мы рассмотрели принцип открытости/закрытости (Open/Closed Principle, OCP) — краеугольный камень SOLID, который гласит, что программные сущности должны быть открыты для расширения, но закрыты для модификации. Мы взяли жёсткую систему валидации одноразовых паролей (OTP) и переработали её с использованием паттерна «Стратегия», получив чистый и легко сопровождаемый код, где каждый набор правил валидации стал отдельным классом.
Это был огромный шаг вперёд. Но путь к действительно гибкой архитектуре редко заканчивается на первом решении. По мере усложнения требований ограничения одного паттерна часто подталкивают к применению другого.
https://itnext.io/decorator-pattern-in-kotlin-embracing-open-closed-principle-b469adc2ab7b
✍️ @kotlin_lib
👍3🤔1
Media is too big
VIEW IN TELEGRAM
Опыт внедрения Kotlin и Compose Multiplatform в продакшн-решение
Леонид Емельянов (SberAutoTech)
Поделюсь опытом перехода на Kotlin и Compose Multimplatform. Расскажу, почему мы выбрали именно эти решения, как переходили на новый технологический стек, являясь частью более крупного Android-приложения, и что из всего этого вышло.
источник
✍️ @kotlin_lib
Леонид Емельянов (SberAutoTech)
Поделюсь опытом перехода на Kotlin и Compose Multimplatform. Расскажу, почему мы выбрали именно эти решения, как переходили на новый технологический стек, являясь частью более крупного Android-приложения, и что из всего этого вышло.
источник
✍️ @kotlin_lib
👍1
🤖 Тест по Flutter проверь свои знания, готов ли ты к обучению на курсе.
Ответишь — пройдешь на курс "Flutter Mobile Developer" от OTUS по специальной цене + получишь доступ к записям открытых уроков курса
За 6 месяцев вы освоите Dart, Flutter и ключевые инструменты разработки, создадите несколько приложений, получите поддержку преподавателей и выполните проект для портфолио.
➡️ ПРОЙТИ ТЕСТ И ОЗНАКОМИТСЯ С ПРОГРАММОЙ: https://vk.cc/cO9FnG
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Ответишь — пройдешь на курс "Flutter Mobile Developer" от OTUS по специальной цене + получишь доступ к записям открытых уроков курса
За 6 месяцев вы освоите Dart, Flutter и ключевые инструменты разработки, создадите несколько приложений, получите поддержку преподавателей и выполните проект для портфолио.
➡️ ПРОЙТИ ТЕСТ И ОЗНАКОМИТСЯ С ПРОГРАММОЙ: https://vk.cc/cO9FnG
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Media is too big
VIEW IN TELEGRAM
Организация кода в проекте | В какой пакет положить Kotlin класс
0:00 Введение
1:16 Куда можно класть Kotlin файлы
2:42 Интеграция
3:39 Как разделить код по Gradle модулям
6:23 Несколько папок с исходным кодом
7:42 Пакеты с кодом
14:03 Выделение кода в AAR/JAR библиотеки
15:37 Заключение
источник
✍️ @kotlin_lib
0:00 Введение
1:16 Куда можно класть Kotlin файлы
2:42 Интеграция
3:39 Как разделить код по Gradle модулям
6:23 Несколько папок с исходным кодом
7:42 Пакеты с кодом
14:03 Выделение кода в AAR/JAR библиотеки
15:37 Заключение
источник
✍️ @kotlin_lib
👍1
Приглашаем на открытый урок, создадим приложение «Фото дня»
🗓 05 августа в 20:00 МСК
🆓 Бесплатно. Урок в рамках старта курса «Android Developer. Professional».
На вебинаре:
- Разберемся с API сервера для скачивания фотографии и описания к ней
- Сверстаем простой экран для отображения данных
- Пропишем выход в интернет для скачивания данных
- Пропишем бизнес-логику для отображения данных на экране приложения
🔗 Ссылка на регистрацию: https://vk.cc/cO9GpJ
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3👎1