Понимание ключевого слова suspend в корутинах Kotlin и его значение для разработки Android
Если вы разрабатываете Android-приложения на Kotlin, то, вероятно, сталкивались с термином
В этом посте я расскажу, что такое ключевое слово suspend, зачем оно нужно и как оно упрощает процесс разработки Android-приложений.
https://medium.com/@rajputmukesh748/understanding-the-suspend-keyword-in-kotlin-coroutines-and-why-it-matters-for-android-development-39853532a523
✍️ @kotlin_lib
Если вы разрабатываете Android-приложения на Kotlin, то, вероятно, сталкивались с термином
suspend
, изучая корутины. На первый взгляд, это может показаться просто очередным ключевым словом в Kotlin, но на самом деле оно очень полезно при работе с задачами, которые занимают время, например при загрузке данных из интернета.В этом посте я расскажу, что такое ключевое слово suspend, зачем оно нужно и как оно упрощает процесс разработки Android-приложений.
https://medium.com/@rajputmukesh748/understanding-the-suspend-keyword-in-kotlin-coroutines-and-why-it-matters-for-android-development-39853532a523
✍️ @kotlin_lib
👍2
Отладка Kotlin Coroutines: Как сделать «optimised out» переменные видимыми
Когда вы отлаживаете Kotlin Coroutines, вы, возможно, сталкивались с ситуацией, когда переменные помечены как "optimised out". Это может создать проблемы при анализе кода, особенно если вам нужно увидеть значения переменных в suspend-функциях. В этой статье рассмотрим несколько методов, которые помогут сделать эти переменные видимыми в отладчике.
🔹 Использование "Debug mode" в IntelliJ IDEA
Можно включить режим отладки в настройках "Debug mode for coroutines", что позволит IDE лучше отслеживать выполнение корутин.
🔹 Добавление отладочных принтов
Хотя это менее элегантное решение, добавление
🔹 Использование -Xdebug и других JVM флагов
Определённые флаги компилятора могут помочь избежать агрессивной оптимизации переменных.
🔹 Настройка -Xno-inline для отключения инлайнинга
Если переменная становится "optimised out" из-за инлайнинга, можно временно отключить эту оптимизацию.
https://tomsabel.com/debugging-kotlin-coroutines-making-optimised-out-variables-visible-de1cecc0d59e
✍️ @kotlin_lib
Когда вы отлаживаете Kotlin Coroutines, вы, возможно, сталкивались с ситуацией, когда переменные помечены как "optimised out". Это может создать проблемы при анализе кода, особенно если вам нужно увидеть значения переменных в suspend-функциях. В этой статье рассмотрим несколько методов, которые помогут сделать эти переменные видимыми в отладчике.
🔹 Использование "Debug mode" в IntelliJ IDEA
Можно включить режим отладки в настройках "Debug mode for coroutines", что позволит IDE лучше отслеживать выполнение корутин.
🔹 Добавление отладочных принтов
Хотя это менее элегантное решение, добавление
println()
в нужных местах может помочь отследить значения переменных перед их оптимизацией.🔹 Использование -Xdebug и других JVM флагов
Определённые флаги компилятора могут помочь избежать агрессивной оптимизации переменных.
🔹 Настройка -Xno-inline для отключения инлайнинга
Если переменная становится "optimised out" из-за инлайнинга, можно временно отключить эту оптимизацию.
// Kotlin Multiplatform
kotlin {
compilerOptions {
if (System.getProperty("idea.active") == "true") {
println("Enable coroutine debugging")
freeCompilerArgs = listOf("-Xdebug")
}
}
}
// Kotlin Jvm
kotlin {
compilerOptions {
if (System.getProperty("idea.active") == "true") {
println("Enable coroutine debugging")
freeCompilerArgs.add("-Xdebug")
}
}
}
https://tomsabel.com/debugging-kotlin-coroutines-making-optimised-out-variables-visible-de1cecc0d59e
✍️ @kotlin_lib
👍2
👩💻 Пройди тест на знание Kotlin и проверь свои знания, готов ли ты к обучению на курсе.
Ответишь — пройдешь на продвинутый курс "Kotlin Backend Developer. Professional " от OTUS по специальной цене + получишь доступ к записям открытых уроков курса курса
За 5 месяцев обучения ты освоишь:
— Работу с Kotlin Multiplatform для JS, JVM, Android, iOS.
— Spring, Ktor, RabbitMQ, Kafka, Postgres.
— Создание архитектуры: монолиты, микросервисы и бессерверные решения.
— Реальные кейсы: разработка стартапа с нуля.
👉 ПРОЙТИ ТЕСТ: https://vk.cc/cHYIhx
Ответишь — пройдешь на продвинутый курс "Kotlin Backend Developer. Professional " от OTUS по специальной цене + получишь доступ к записям открытых уроков курса курса
За 5 месяцев обучения ты освоишь:
— Работу с Kotlin Multiplatform для JS, JVM, Android, iOS.
— Spring, Ktor, RabbitMQ, Kafka, Postgres.
— Создание архитектуры: монолиты, микросервисы и бессерверные решения.
— Реальные кейсы: разработка стартапа с нуля.
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1👎1
Kotlin под капотом: Нюансы использования аннотаций в Kotlin
Kotlin - очень лаконичный язык, но когда его код компилируется в байткод Java, элегантные конструкции Kotlin распадаются на чудовищные конструкции Java. В то же время использование аннотаций может сыграть с вами злую шутку.
https://proandroiddev.com/kotlin-under-the-hood-the-nuances-of-using-annotations-in-kotlin-a58f0b2b60ac?gi=6ff112513d51
✍️ @kotlin_lib
Kotlin - очень лаконичный язык, но когда его код компилируется в байткод Java, элегантные конструкции Kotlin распадаются на чудовищные конструкции Java. В то же время использование аннотаций может сыграть с вами злую шутку.
https://proandroiddev.com/kotlin-under-the-hood-the-nuances-of-using-annotations-in-kotlin-a58f0b2b60ac?gi=6ff112513d51
✍️ @kotlin_lib
❤1👍1
Основы Jetpack Compose: как обеспечить стабильность вашего кода
Уберегаем от ошибок и делимся статьёй про стабильность в Compose от Веры, Android‑разработчика в Яндекс Диске. Рекомпозиция и пропускаемость, стабильность и способы её отслеживания, неочевидные моменты и лайфхаки Compose — всё это с конкретными примерами (и мемами).
Читайте статью на Хабре здесь
Больше материалов о технологиях в Яндекс 360: https://ya.cc/t/OZ4inE495pU96D
Уберегаем от ошибок и делимся статьёй про стабильность в Compose от Веры, Android‑разработчика в Яндекс Диске. Рекомпозиция и пропускаемость, стабильность и способы её отслеживания, неочевидные моменты и лайфхаки Compose — всё это с конкретными примерами (и мемами).
Читайте статью на Хабре здесь
Больше материалов о технологиях в Яндекс 360: https://ya.cc/t/OZ4inE495pU96D
❤1
This media is not supported in your browser
VIEW IN TELEGRAM
Texty — это библиотека Compose Multiplatform, разработанная Арджуном Джадежей, предназначенная для отображения текста с различными стилями, эффектами и анимациями. Она построена на основе Jetpack Compose Foundation's Basic Text и предоставляет высококонфигурируемый API для создания динамичных и визуально привлекательных текстовых элементов в приложениях для Android, iOS, настольных и веб-платформ.
Основные возможности Texty:
- Разнообразие стилей: Поддержка таких стилей, как скольжение, прокрутка, мигание, затухание, постепенное раскрытие, печать по буквам и базовый стиль.
- Стили для списков: Анимация текста или кадров последовательно, создание плавного потока, а также стили, такие как Motion, OneByOne, Sliding List и Scrolling List.
- Утилиты: Функции загрузки и отображения времени с возможностью настройки формата и интервала обновления.
Установка:
Для использования Texty в вашем проекте добавьте следующую зависимость в файл
Убедитесь, что
Пример использования:
https://github.com/ArjunJadeja/Texty
✍️ @kotlin_lib
Основные возможности Texty:
- Разнообразие стилей: Поддержка таких стилей, как скольжение, прокрутка, мигание, затухание, постепенное раскрытие, печать по буквам и базовый стиль.
- Стили для списков: Анимация текста или кадров последовательно, создание плавного потока, а также стили, такие как Motion, OneByOne, Sliding List и Scrolling List.
- Утилиты: Функции загрузки и отображения времени с возможностью настройки формата и интервала обновления.
Установка:
Для использования Texty в вашем проекте добавьте следующую зависимость в файл
build.gradle.kts
вашего модуля:
dependencies {
implementation("com.arjunjadeja:texty-android:1.0.0-alpha")
}
Убедитесь, что
mavenCentral()
включен в список репозиториев.Пример использования:
import com.arjunjadeja.texty.Texty
import com.arjunjadeja.texty.DisplayStyle
@Composable
fun TextyExample() {
Texty(
text = "Привет, Texty!",
displayStyle = DisplayStyle.Typing()
)
}
https://github.com/ArjunJadeja/Texty
✍️ @kotlin_lib
👍4
Media is too big
VIEW IN TELEGRAM
UUID в Kotlin Multiplatform
0:00 Intro
0:24 What's UUID
0:53 Creating UUIDs
1:52 Parsing
2:21 Working with individual bits
3:30 Long to UUID
3:55 Java interop
4:10 Conclusion
источник
✍️ @kotlin_lib
0:00 Intro
0:24 What's UUID
0:53 Creating UUIDs
1:52 Parsing
2:21 Working with individual bits
3:30 Long to UUID
3:55 Java interop
4:10 Conclusion
источник
✍️ @kotlin_lib
👍5
На открытом вебинаре мы научим вас создавать доменно-специфические языки на Kotlin. Разберём, как сделать код компактным, выразительным и удобным для решения узкопрофильных задач.
Это не просто теория. Мы покажем реальные примеры и расскажем, как применять DSL для автоматизации, работы с конфигурациями и других задач.
Спикер Сергей Прощаев — ведущий инженер-Java-разработчик в компании ПАО «Сургутнефтегаз».
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM
📕 KMP for Mobile Native Developers: The Book
by Santiago Mattiauda.
https://santimattius.github.io/kmp-for-mobile-native-developers-book/
✍️ @kotlin_lib
by Santiago Mattiauda.
https://santimattius.github.io/kmp-for-mobile-native-developers-book/
✍️ @kotlin_lib
👍9
1Sec Temporary Mail App (Создано с Compose Multiplatform)
1Sec Temporary Mail — это кроссплатформенное приложение на Kotlin, которое предоставляет пользователям временные адреса электронной почты, действительные всего одну секунду. С его помощью можно быстро генерировать одноразовые email-адреса и использовать их для различных целей, таких как регистрация на сайтах, получение проверочных писем или защита основного почтового ящика от спама.
https://github.com/KapilYadav-dev/1SecMail
✍️ @kotlin_lib
1Sec Temporary Mail — это кроссплатформенное приложение на Kotlin, которое предоставляет пользователям временные адреса электронной почты, действительные всего одну секунду. С его помощью можно быстро генерировать одноразовые email-адреса и использовать их для различных целей, таких как регистрация на сайтах, получение проверочных писем или защита основного почтового ящика от спама.
https://github.com/KapilYadav-dev/1SecMail
✍️ @kotlin_lib
👍3
🗓 18 февраля в 19:00 МСК
🆓 Бесплатно. Урок в рамках старта курса «Kotlin Backend Developer. Professional» от Otus.
На вебинаре рассмотрим:
🔗 Ссылка на регистрацию: https://vk.cc/cIwobu
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4👍1
Продвинутая обработка исключений в Kotlin Coroutines: руководство для Android-разработчиков
Обработка исключений в Kotlin Coroutines — это важная тема, особенно когда дело касается асинхронного программирования в Android. В статье рассматриваются следующие ключевые аспекты:
- Общая стратегия обработки исключений
Различие между
- Глобальная обработка исключений
Использование
- Обработка исключений в структурированных корутинах
Применение
- Отлов исключений в
Важно помнить, что
- Ошибка распространения исключений в
Запущенные через
https://proandroiddev.com/advanced-exception-handling-in-kotlin-coroutines-a-guide-for-android-developers-e1aede099252
✍️ @kotlin_lib
Обработка исключений в Kotlin Coroutines — это важная тема, особенно когда дело касается асинхронного программирования в Android. В статье рассматриваются следующие ключевые аспекты:
- Общая стратегия обработки исключений
Различие между
try-catch
, CoroutineExceptionHandler
и supervisorScope
. - Глобальная обработка исключений
Использование
CoroutineExceptionHandler
и его ограничение — он работает только с незахваченными исключениями. - Обработка исключений в структурированных корутинах
Применение
supervisorScope
для предотвращения отмены всей иерархии корутин. - Отлов исключений в
async
Важно помнить, что
async
возвращает Deferred
, а исключения в нем не всплывают автоматически. Их нужно ловить через await()
. - Ошибка распространения исключений в
launch
Запущенные через
launch
корутины выбрасывают исключения вверх по иерархии, что может привести к неожиданному завершению приложения. https://proandroiddev.com/advanced-exception-handling-in-kotlin-coroutines-a-guide-for-android-developers-e1aede099252
✍️ @kotlin_lib
👍3
👩💻 А ты справишься с тестом по Kotlin?
🏆 Пройди тест из 10 вопросов, проверь свой уровень знаний и получи скидку на онлайн-курс «Kotlin Backend Developer. Professional» от OTUS!
Если успешно пройдешь тест, сможешь забронировать место в группе по выгодной цене! И еще дарим промокодKotlin5
🎫 Курс можно приобрести в рассрочку
➡️ Пройти тест и забрать скидку: https://vk.cc/cIK1jj
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
🏆 Пройди тест из 10 вопросов, проверь свой уровень знаний и получи скидку на онлайн-курс «Kotlin Backend Developer. Professional» от OTUS!
Если успешно пройдешь тест, сможешь забронировать место в группе по выгодной цене! И еще дарим промокод
🎫 Курс можно приобрести в рассрочку
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Принцип единственной ответственности (SRP) в Kotlin: глубокий разбор
Принцип единственной ответственности (Single Responsibility Principle, SRP) из SOLID гласит, что класс должен иметь только одну причину для изменения. В статье рассматриваются следующие важные аспекты:
- Почему SRP важен?
Код становится более читаемым, тестируемым и удобным для сопровождения.
- Признаки нарушения SRP
- Класс выполняет несколько несвязанных задач.
- Частые изменения одной части кода затрагивают другие части.
- Усложняется тестирование, так как приходится проверять несколько функциональностей сразу.
- Как применять SRP в Kotlin?
- Разделение ответственности: деление класса на несколько более мелких, каждый из которых отвечает только за свою функцию.
- Использование делегирования: передача отдельных задач вспомогательным классам.
- Функциональный подход: использование функций высшего порядка и композиции вместо огромных классов.
- Пример рефакторинга
В статье показан код, который нарушает SRP, и варианты его исправления с помощью грамотного разделения логики.
Применение SRP в Kotlin позволяет писать более чистый, поддерживаемый и расширяемый код, который легче тестировать и модифицировать.
https://itnext.io/the-single-responsibility-principle-srp-in-kotlin-deep-dive-34f478064848
✍️ @kotlin_lib
Принцип единственной ответственности (Single Responsibility Principle, SRP) из SOLID гласит, что класс должен иметь только одну причину для изменения. В статье рассматриваются следующие важные аспекты:
- Почему SRP важен?
Код становится более читаемым, тестируемым и удобным для сопровождения.
- Признаки нарушения SRP
- Класс выполняет несколько несвязанных задач.
- Частые изменения одной части кода затрагивают другие части.
- Усложняется тестирование, так как приходится проверять несколько функциональностей сразу.
- Как применять SRP в Kotlin?
- Разделение ответственности: деление класса на несколько более мелких, каждый из которых отвечает только за свою функцию.
- Использование делегирования: передача отдельных задач вспомогательным классам.
- Функциональный подход: использование функций высшего порядка и композиции вместо огромных классов.
- Пример рефакторинга
В статье показан код, который нарушает SRP, и варианты его исправления с помощью грамотного разделения логики.
Применение SRP в Kotlin позволяет писать более чистый, поддерживаемый и расширяемый код, который легче тестировать и модифицировать.
https://itnext.io/the-single-responsibility-principle-srp-in-kotlin-deep-dive-34f478064848
✍️ @kotlin_lib
👍2
Вот отсортированная база с тонной материала (постепенно пополняется):
БАЗА (4687 видео/книг):
(363 видео, 87 книги) — Python
(415 видео, 68 книги) — Frontend
(143 видео, 33 книги) — ИБ/Хакинг
(352 видео, 89 книги) — С/С++
(343 видео, 87 книги) — Java
(176 видео, 32 книги) — Git
(293 видео, 63 книги) — C#
(174 видео, 91 книги) — DevOps
(167 видео, 53 книги) — PHP
(227 видео, 83 книги) — SQL/БД
(163 видео, 29 книги) — Linux
(114 видео, 77 книги) — Сисадмин
(107 видео, 43 книги) — BA/SA
(181 видео, 32 книги) — Go
(167 видео, 43 книги) — Kotlin/Swift
(112 видео, 24 книги) — Flutter
(137 видео, 93 книги) — DS/ML
(113 видео, 82 книги) — GameDev
(183 видео, 37 книги) — Дизайн
(129 видео, 73 книги) — QA
(213 видео, 63 книги) — Rust
(121 видео, 24 книги) — 1С
(136 видео, 33 книги) — PM/HR
Скачивать ничего не нужно — все выложили в Telegram
Please open Telegram to view this post
VIEW IN TELEGRAM
💩8🔥1
Пошаговое руководство по выполнению анализа данных с помощью Kotlin DataFrame
Это первая из серии обучающих статей о том, как легко манипулировать и визуализировать данные с помощью библиотек Kotlin DataFrame и Kandy. Эти уроки предназначены для обычных разработчиков на Kotlin, поэтому предыдущий опыт в области анализа данных или работы с аналогичными фреймворками (например, pandas или Apache Spark) не требуется. Однако, вы должны быть знакомы с языком Kotlin и ранее создавать проекты на Kotlin в IntelliJ IDEA.
https://blog.jetbrains.com/kotlin/2024/04/a-step-by-step-guide-to-performing-data-analysis-with-kotlin-dataframe/
✍️ @kotlin_lib
Это первая из серии обучающих статей о том, как легко манипулировать и визуализировать данные с помощью библиотек Kotlin DataFrame и Kandy. Эти уроки предназначены для обычных разработчиков на Kotlin, поэтому предыдущий опыт в области анализа данных или работы с аналогичными фреймворками (например, pandas или Apache Spark) не требуется. Однако, вы должны быть знакомы с языком Kotlin и ранее создавать проекты на Kotlin в IntelliJ IDEA.
https://blog.jetbrains.com/kotlin/2024/04/a-step-by-step-guide-to-performing-data-analysis-with-kotlin-dataframe/
✍️ @kotlin_lib
👍5
😴 Ваши Android-приложения «умирают» в фоне, а как пользоваться сервисами непонятно?
✨ Разбираем фоновые процессы на открытом вебинаре!
– Узнаем, какие ограничения Google накладывает на работу приложений в фоновом режиме и как с этим бороться.
– Разберём все актуальные методы.
🚀 Освойте лучшие практики фоновой работы, чтобы создавать эффективные и отзывчивые Android-приложения. А ещё получите 🎁скидку на обучение «Android Developer. Professional»!
📅 Встречаемся 26 февраля в 20:00 мск!
👉 Регистрация открыта: https://vk.cc/cISnPc
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
✨ Разбираем фоновые процессы на открытом вебинаре!
– Узнаем, какие ограничения Google накладывает на работу приложений в фоновом режиме и как с этим бороться.
– Разберём все актуальные методы.
🚀 Освойте лучшие практики фоновой работы, чтобы создавать эффективные и отзывчивые Android-приложения. А ещё получите 🎁скидку на обучение «Android Developer. Professional»!
📅 Встречаемся 26 февраля в 20:00 мск!
👉 Регистрация открыта: https://vk.cc/cISnPc
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
👍2❤1
Media is too big
VIEW IN TELEGRAM
Непростые вопросы про Kotlin Coroutines
Александр Гирев
Однажды пятничным вечером Александр и его коллега задумались над вопросом: где живут корутины, когда запустивший их coroutineScope героически погибает в жерновах GC? Субботнее утро было проведено за чтением статей и исходников.
Вот так и родилась идея доклада. В нем — ответы на вопросы об устройстве и работе корутин для самых любознательных.
Материал доклада рассчитан на участников, которые знакомы как минимум с теоретическими основами Kotlin Coroutines.
источник
✍️ @kotlin_lib
Александр Гирев
Однажды пятничным вечером Александр и его коллега задумались над вопросом: где живут корутины, когда запустивший их coroutineScope героически погибает в жерновах GC? Субботнее утро было проведено за чтением статей и исходников.
Вот так и родилась идея доклада. В нем — ответы на вопросы об устройстве и работе корутин для самых любознательных.
Материал доклада рассчитан на участников, которые знакомы как минимум с теоретическими основами Kotlin Coroutines.
источник
✍️ @kotlin_lib
👍3
Koin Annotations 2.0: что нового?
Команда Koin выпустила Koin Annotations 2.0, значительно улучшив поддержку аннотаций для DI в Kotlin. Этот релиз нацелен на упрощение работы с Koin и упрощение интеграции аннотаций с компиляторным плагином KSP.
🔥 Основные изменения:
- Оптимизированный KSP-обработчик – компиляция теперь быстрее и стабильнее.
- Обновленный DSL – улучшенная поддержка модулей и более гибкие аннотации.
- Упрощенные Scopes & Qualifiers – декларативный стиль позволяет писать меньше кода.
- Новый механизм Inject – еще более удобный способ внедрения зависимостей.
Этот релиз делает DI с Koin еще проще, позволяя писать меньше кода и получать максимум производительности. Если используешь Koin – обязательно обновись!
https://blog.insert-koin.io/koin-annotations-2-0-release-is-out-445c27a569b9
✍️ @kotlin_lib
Команда Koin выпустила Koin Annotations 2.0, значительно улучшив поддержку аннотаций для DI в Kotlin. Этот релиз нацелен на упрощение работы с Koin и упрощение интеграции аннотаций с компиляторным плагином KSP.
🔥 Основные изменения:
- Оптимизированный KSP-обработчик – компиляция теперь быстрее и стабильнее.
- Обновленный DSL – улучшенная поддержка модулей и более гибкие аннотации.
- Упрощенные Scopes & Qualifiers – декларативный стиль позволяет писать меньше кода.
- Новый механизм Inject – еще более удобный способ внедрения зависимостей.
Этот релиз делает DI с Koin еще проще, позволяя писать меньше кода и получать максимум производительности. Если используешь Koin – обязательно обновись!
https://blog.insert-koin.io/koin-annotations-2-0-release-is-out-445c27a569b9
✍️ @kotlin_lib
👍5