Kotlin
2.17K subscribers
270 photos
123 videos
18 files
393 links
Подборки полезного материала по Kotlin. По всем вопросам @evgenycarter
Download Telegram
Media is too big
VIEW IN TELEGRAM
Klibs.io — the dream of creating a Kotlin Package Index
Ignat Beresnev

So you want to build a Kotlin package index.. What is a package anyway, is it the same as an artifact? What makes a project a library then? And why is it an index and not a repository?

источник

✍️ @kotlin_lib
👍3
Media is too big
VIEW IN TELEGRAM
Подводные камни Kotlin Coroutines

Корутины не так уж сложно понять, когда вы разобрались с основами, но есть несколько подводных камней, которые могут сбить с толку. В сегодняшнем видео я поделюсь распространёнными ошибками, которые могут застать врасплох, если не быть внимательным.

✍️ @kotlin_lib
👎5👍1🤡1
KotlinJS в GitHub Actions

GitHub Actions (GHA) — отличный инструмент для настройки CI/CD, а в GitHub Marketplace можно найти тысячи готовых GHA под любые задачи. Но всегда же найдётся процесс, который захочется настроить под себя. Тогда нам придётся написать кастомный GHA.

Привет! Это Макс Качинкин, Android Tech Lead в Додо. В этой статье я покажу, как создать свой GHA на Kotlin/JS, используя плагин Kotlin Multiplatform, и поделюсь готовым шаблоном в GitHub, с помощью которого вы сможете быстро написать собственный экшен на Kotlin/JS. Погнали!

https://habr.com/ru/companies/dododev/articles/898704/

✍️ @kotlin_lib
👍51
Вышел Kotlin Kotlin 2.2.20-Beta1

Released: July 10, 2025

https://kotlinlang.org/docs/whatsnew-eap.html

✍️ @kotlin_lib
👍2
⌨️ Хотите перейти на новый уровень 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