Kotlin
2.17K subscribers
270 photos
123 videos
18 files
393 links
Подборки полезного материала по Kotlin. По всем вопросам @evgenycarter
Download Telegram
⌨️ Хотите перейти на новый уровень backend-разработки?

Актуальное повышение квалификации с курсом «Kotlin Backend Developer. Professional» от OTUS — это ваш шанс освоить современные практики и инструменты для масштабируемых серверных приложений. На курсе вы:

✔️ Разработаете monolith, микросервисы и serverless с помощью Kotlin и фреймворков Spring, Ktor и бессерверных библиотек.
✔️ Освоите корутины для асинхронных и многопоточных задач, а также WebSocket, RabbitMQ, Kafka для транспорта.
✔️ Научитесь строить хранилища на Postgres, Cassandra, ArcadeDb и интегрировать OpenAPI с любым фронтендом.

🗣 Преподаватели — практикующие эксперты, которые покажут реализацию проекта маркетплейса от идеи до продакшена. Программа постоянно обновляется в соответствии с требованиями рынка, а диплом OTUS ценится в крупных компаниях.

👉 Пройдите вступительное тестирование и присоединяйтесь к группе: https://vk.cc/cNJ6W8

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM
Ныряем в холодные потоки Kotlin Flow

Лето — лучшее время для сплава. Поэтому, если вы пока не в отпуске, давайте устроим короткий сплав по асинхронным потокам данных.

Переход из привычной императивной парадигмы иногда бывает сложным, поэтому сначала поговорим о терминах.


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
👍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
Избегайте использования lambda в конструкторе data-класса в Kotlin

В своих предыдущих статьях я показывал, почему использование 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
👍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 приучает нас к 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
👍61👎1
Мастерство отмены корутин в Kotlin: лучшие практики, частые ошибки и безопасная работа с повторяющимися задачами

При использовании корутин в 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-х и какие компоненты уже не нужно писать самому. Поговорим о том, как в современном бэкенде выполнять только ключевую бизнес-логику.

🔥Вы получите готовые инфраструктурные файлы, которые упростят создание приложений на Kotlin и любых других языках.

🔗 Ссылка на регистрацию: https://vk.cc/cNTF4N

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM
Animate.compose — мощная библиотека анимаций Kotlin Multiplatform для Jetpack Compose с более чем 90 готовыми к использованию анимациями.

Фичи: более 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
👍1
Media is too big
VIEW IN TELEGRAM
Однопоточные корутины в Kotlin

Причина, по которой многим разработчикам сложно разобраться с корутинами в 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
👍31🤡1
⌨️ 🤖 Хочешь прокачаться в backend-разработке? Но справишься ли ты с тестом по Kotlin?

🏆 Пройди тест из 10 вопросов, проверь свой уровень знаний и приходи учиться на онлайн-курс «Kotlin Backend Developer. Professional» от OTUS!

На курсе:

✔️ Разработаете monolith, микросервисы и serverless с помощью Kotlin и фреймворков Spring, Ktor и бессерверных библиотек.
✔️ Освоите корутины для асинхронных и многопоточных задач, а также WebSocket, RabbitMQ, Kafka для транспорта.
✔️ Научитесь строить хранилища на Postgres, Cassandra, ArcadeDb и интегрировать OpenAPI с любым фронтендом.

🎫
Курс можно приобрести в рассрочку

➡️ Пройди тест и присоединяйся к группе: https://vk.cc/cO5IMF

Реклама. ООО «Отус онлайн-образование», ОГРН 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
👍3🤔1
Media is too big
VIEW IN TELEGRAM
Опыт внедрения Kotlin и Compose Multiplatform в продакшн-решение
Леонид Емельянов (SberAutoTech)

Поделюсь опытом перехода на Kotlin и Compose Multimplatform. Расскажу, почему мы выбрали именно эти решения, как переходили на новый технологический стек, являясь частью более крупного Android-приложения, и что из всего этого вышло.

источник

✍️ @kotlin_lib
👍1
🤖 Тест по Flutter проверь свои знания, готов ли ты к обучению на курсе.

Ответишь — пройдешь на курс "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
👍1
👩‍💻 Хотите научиться создавать полноценные Android-приложения с интеграцией API?

Приглашаем на открытый урок, создадим приложение «Фото дня»

🗓 05 августа в 20:00 МСК
🆓 Бесплатно. Урок в рамках старта курса «Android Developer. Professional».

На вебинаре:
- Разберемся с API сервера для скачивания фотографии и описания к ней
- Сверстаем простой экран для отображения данных
- Пропишем выход в интернет для скачивания данных
- Пропишем бизнес-логику для отображения данных на экране приложения

🔗 Ссылка на регистрацию: https://vk.cc/cO9GpJ

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM
3👎1