A Glimpse at Constants in Kotlin
Когда мне нужно определить константы, избежать "магических чисел" и смоделировать данные в Kotlin и других языках, я обычно по умолчанию использую классы enum.
Мне говорили, что это хорошая практика, когда я только начинал кодить, и это казалось разумным, но всегда есть альтернативные варианты решения каждой проблемы.
Сегодня я хочу рассказать о том, какие варианты существуют в Kotlin, когда нам нужно подобное поведение в нашем коде.
https://molidevwrites.com/a-glimpse-at-constants-in-kotlin/
✍️ @kotlin_lib
Когда мне нужно определить константы, избежать "магических чисел" и смоделировать данные в Kotlin и других языках, я обычно по умолчанию использую классы enum.
Мне говорили, что это хорошая практика, когда я только начинал кодить, и это казалось разумным, но всегда есть альтернативные варианты решения каждой проблемы.
Сегодня я хочу рассказать о том, какие варианты существуют в Kotlin, когда нам нужно подобное поведение в нашем коде.
https://molidevwrites.com/a-glimpse-at-constants-in-kotlin/
✍️ @kotlin_lib
👍2
Ликбез по корутинам Kotlin
Корутины — это паттерн проектирования, предназначенный для написания асинхронных программ, способных выполнять нескольких задач одновременно.
В асинхронных программах несколько задач выполняются параллельно в отдельных потоках, не дожидаясь завершения друг-друга. Потоки — ресурс дорогостоящий, и слишком большое их количество выливается в ощутимые накладные расходы в виде высокого потребления памяти и нагрузки на процессор.
Корутины — это альтернативный способ написания асинхронных программ, но в сравнении с потоками гораздо более легковесный. Они представляют собой вычисления, которые работают поверх потоков.
Мы можем приостановить выполнение корутины, чтобы позволить другим корутинам отработать в том же потоке. В дальнейшем выполнение этой корутины может быть возобновлено в том же или даже в другом потоке.
В момент приостановки работы корутины связанные с ней вычисления останавливаются, сохраняются в памяти и удаляются из потока, позволяя ему свободно заниматься другими задачами. Таким образом, мы можем одновременно запускать множество корутин, имея в нашем распоряжении небольшой пул потоков, что позволяет в значительной степени ограничить использование системных ресурсов.
В этой статье мы с вами разберемся, как использовать корутины в Kotlin.
https://reflectoring.io/understanding-kotlin-coroutines-tutorial/
✍️ @kotlin_lib
Корутины — это паттерн проектирования, предназначенный для написания асинхронных программ, способных выполнять нескольких задач одновременно.
В асинхронных программах несколько задач выполняются параллельно в отдельных потоках, не дожидаясь завершения друг-друга. Потоки — ресурс дорогостоящий, и слишком большое их количество выливается в ощутимые накладные расходы в виде высокого потребления памяти и нагрузки на процессор.
Корутины — это альтернативный способ написания асинхронных программ, но в сравнении с потоками гораздо более легковесный. Они представляют собой вычисления, которые работают поверх потоков.
Мы можем приостановить выполнение корутины, чтобы позволить другим корутинам отработать в том же потоке. В дальнейшем выполнение этой корутины может быть возобновлено в том же или даже в другом потоке.
В момент приостановки работы корутины связанные с ней вычисления останавливаются, сохраняются в памяти и удаляются из потока, позволяя ему свободно заниматься другими задачами. Таким образом, мы можем одновременно запускать множество корутин, имея в нашем распоряжении небольшой пул потоков, что позволяет в значительной степени ограничить использование системных ресурсов.
В этой статье мы с вами разберемся, как использовать корутины в Kotlin.
https://reflectoring.io/understanding-kotlin-coroutines-tutorial/
✍️ @kotlin_lib
reflectoring.io
Understanding Kotlin Coroutines
Coroutines are a design pattern for writing asynchronous programs for running multiple tasks concurrently.
In asynchronous programs, multiple tasks execute in parallel on separate threads without waiting for the other tasks to complete.
In asynchronous programs, multiple tasks execute in parallel on separate threads without waiting for the other tasks to complete.
👍9👎1
Real_World_Android_by_Tutorials_1st_Edition_2021_Ricardo_Costeira.pdf
25.4 MB
Real-World Android by Tutorials
By Ricardo Costeira, Kolin Stürt and Subhrajyoti Sen (2021)
Лучшая книга, которая научит вас создавать профессиональные и безопасные приложения для реального мира на базе Android с использованием наиболее важных архитектур и библиотек. Вы получите все основы разработки под Android, необходимые для принятия оптимальных решений в собственной кодовой базе, а также решите такие важные проблемы, как выбор правильной архитектуры, обеспечение отзывчивости и привлекательности пользовательского интерфейса, реализация эффективной анимации.
✍️ @kotlin_lib
By Ricardo Costeira, Kolin Stürt and Subhrajyoti Sen (2021)
Лучшая книга, которая научит вас создавать профессиональные и безопасные приложения для реального мира на базе Android с использованием наиболее важных архитектур и библиотек. Вы получите все основы разработки под Android, необходимые для принятия оптимальных решений в собственной кодовой базе, а также решите такие важные проблемы, как выбор правильной архитектуры, обеспечение отзывчивости и привлекательности пользовательского интерфейса, реализация эффективной анимации.
✍️ @kotlin_lib
👍6
Специальные типы Kotlin: Any, Unit и Nothing
Kotlin предоставляет несколько специальных типов, которые служат для определенных целей, включая такие типы, как Any, Unit и Nothing. Понимание этих типов и их характеристик очень важно для написания чистого и лаконичного кода на языке Kotlin. В этой статье мы рассмотрим особенности и случаи использования каждого типа, а также соответствующие примеры.
https://medium.com/@amoljp19/kotlins-special-types-any-unit-and-nothing-d4fe837c2891
✍️ @kotlin_lib
Kotlin предоставляет несколько специальных типов, которые служат для определенных целей, включая такие типы, как Any, Unit и Nothing. Понимание этих типов и их характеристик очень важно для написания чистого и лаконичного кода на языке Kotlin. В этой статье мы рассмотрим особенности и случаи использования каждого типа, а также соответствующие примеры.
https://medium.com/@amoljp19/kotlins-special-types-any-unit-and-nothing-d4fe837c2891
✍️ @kotlin_lib
👍5
Kotlin Lateinit vs by Lazy
Сегодня я расскажу о различиях между lateinit и By Lazy на Kotlin. Прежде всего, я пройдусь по объяснениям и примерам этих двух основных тем. Далее я остановлюсь на том, в каких случаях нам следует использовать тот или иной из них. Если вы готовы, давайте начнем!
https://medium.com/huawei-developers/kotlin-lateinit-vs-by-lazy-initialization-example-tutorial-c19d84216480
✍️ @kotlin_lib
Сегодня я расскажу о различиях между lateinit и By Lazy на Kotlin. Прежде всего, я пройдусь по объяснениям и примерам этих двух основных тем. Далее я остановлюсь на том, в каких случаях нам следует использовать тот или иной из них. Если вы готовы, давайте начнем!
https://medium.com/huawei-developers/kotlin-lateinit-vs-by-lazy-initialization-example-tutorial-c19d84216480
✍️ @kotlin_lib
👍5👎1
Kotlin Cacheable
Основанная на аннотациях библиотека кэширования для Kotlin Multiplatform.
При вызове функции с аннотацией Cacheable она будет возвращать кэшированное значение, если функция будет вызвана с теми же аргументами.
https://github.com/mori-atsushi/kotlin-cacheable
✍️ @kotlin_lib
Основанная на аннотациях библиотека кэширования для Kotlin Multiplatform.
При вызове функции с аннотацией Cacheable она будет возвращать кэшированное значение, если функция будет вызвана с теми же аргументами.
https://github.com/mori-atsushi/kotlin-cacheable
✍️ @kotlin_lib
👍6
Amper – Improving the Build Tooling User Experience
https://blog.jetbrains.com/blog/2023/11/09/amper-improving-the-build-tooling-user-experience/
✍️ @kotlin_lib
https://blog.jetbrains.com/blog/2023/11/09/amper-improving-the-build-tooling-user-experience/
✍️ @kotlin_lib
👍4
Пару слов о полях и свойствах в Kotlin
Терминология свойств и полей в Kotlin может немного сбивать с толку, потому что технически в Kotlin нет полей. Вы не можете объявить поле. Все — свойства!
Однако, во избежании путаницы, я предпочитаю разделять определения полей и свойств на следующей основе:
Полями являются приватные переменные-члены класса. Это то, для чего выделена память.
Свойствами являются публичные или защищенные (protected) функциями геттеры и сеттеры, которые позволяют вам получить доступ к приватным полям.
Я считаю хорошей идеей разграничивать эти понятия таким образом, потому что это способствует моему пониманию, а также упрощает объяснение связанных с этим вещей.
https://vtsen.medium.com/understand-fields-and-properties-in-kotlin-2a78e1132bde
✍️ @kotlin_lib
Терминология свойств и полей в Kotlin может немного сбивать с толку, потому что технически в Kotlin нет полей. Вы не можете объявить поле. Все — свойства!
Однако, во избежании путаницы, я предпочитаю разделять определения полей и свойств на следующей основе:
Полями являются приватные переменные-члены класса. Это то, для чего выделена память.
Свойствами являются публичные или защищенные (protected) функциями геттеры и сеттеры, которые позволяют вам получить доступ к приватным полям.
Я считаю хорошей идеей разграничивать эти понятия таким образом, потому что это способствует моему пониманию, а также упрощает объяснение связанных с этим вещей.
https://vtsen.medium.com/understand-fields-and-properties-in-kotlin-2a78e1132bde
✍️ @kotlin_lib
👍6
Crash Course on the Kotlin Compiler | K1 + K2 Frontends, Backends
Небольшой экскурс о том, почему существует так много версий и как это влияет на преобразования данных в компиляторе
https://medium.com/google-developer-experts/crash-course-on-the-kotlin-compiler-k1-k2-frontends-backends-fe2238790bd8
✍️ @kotlin_lib
Небольшой экскурс о том, почему существует так много версий и как это влияет на преобразования данных в компиляторе
https://medium.com/google-developer-experts/crash-course-on-the-kotlin-compiler-k1-k2-frontends-backends-fe2238790bd8
✍️ @kotlin_lib
👍6
Собеседование на Junior Android Dev у Анны Жарковой
Собеседование проходило в формате вопрос-ответ, при необходимости писали пример ответов на вопрос.
Интервьюер: Анна Жаркова, руководитель группы разработки в Usetech.
https://www.youtube.com/watch?v=ka30zdgOAYg
✍️ @kotlin_lib
Собеседование проходило в формате вопрос-ответ, при необходимости писали пример ответов на вопрос.
Интервьюер: Анна Жаркова, руководитель группы разработки в Usetech.
https://www.youtube.com/watch?v=ka30zdgOAYg
✍️ @kotlin_lib
YouTube
Собеседование на Junior Android Dev у Анны Жарковой
Собеседование проходило в формате вопрос-ответ, при необходимости писали пример ответом на вопрос.
Интервьюер: Анна Жаркова, руководитель группы разработки в Usetech
🔗 Ген партнер Android Broadcast - AvitoTech https://cutt.ly/Dwq5wiTY
🔗 Каналы "Android…
Интервьюер: Анна Жаркова, руководитель группы разработки в Usetech
🔗 Ген партнер Android Broadcast - AvitoTech https://cutt.ly/Dwq5wiTY
🔗 Каналы "Android…
👍6
10 полезных Kotlin Extension Functions для Android-разработчиков
https://medium.com/@akshay.kalola28/10-useful-kotlin-extension-functions-for-android-developers-2-c063d0b1464e
✍️ @kotlin_lib
https://medium.com/@akshay.kalola28/10-useful-kotlin-extension-functions-for-android-developers-2-c063d0b1464e
✍️ @kotlin_lib
👍1👎1
Kotlin под капотом: inline функции
Я провожу довольно много технических интервью и вижу, что многие разработчики не до конца понимают суть inline функций. Не понимают в чем профит от использования inline функций. Зачем нужен crossinline и как работает reified. Отчасти, источник популярных заблуждений про inline функции в том, что раньше на сайте kotlinlang.org было дано не совсем верное описание. Мне захотелось это исправить и наглядно показать как работают inline функции и какой профит мы получаем от их использования.
https://habr.com/ru/articles/775120/
✍️ @kotlin_lib
Я провожу довольно много технических интервью и вижу, что многие разработчики не до конца понимают суть inline функций. Не понимают в чем профит от использования inline функций. Зачем нужен crossinline и как работает reified. Отчасти, источник популярных заблуждений про inline функции в том, что раньше на сайте kotlinlang.org было дано не совсем верное описание. Мне захотелось это исправить и наглядно показать как работают inline функции и какой профит мы получаем от их использования.
https://habr.com/ru/articles/775120/
✍️ @kotlin_lib
👍8
The State of Kotlin Multiplatform
JetBrains Kotlin Multiplatform (KMP) - это технология с открытым исходным кодом, предназначенная для гибкой кроссплатформенной разработки. Она позволяет разрабатывать приложения для Android, iOS, настольных компьютеров, веб-приложений и серверной части и эффективно использовать код для разных платформ, сохраняя при этом преимущества нативного программирования. После 8 лет разработки KMP была доработана до уровня технологии, готовой к продакшену, и перешла в статус Stable, а это значит, что сейчас самое время начать использовать ее в своем проекте.
На этом вебинаре мы обсудим, как работает KMP, как применить ее гибкость в ваших разнообразных проектах и как получить максимальную отдачу от нее. Мы расскажем об инструментах и экосистеме KMP и о том, как их можно использовать для оптимизации работы разработчиков. Наконец, мы представим дорожную карту KMP и расскажем о стремлении JetBrains постоянно совершенствовать KMP, включая обновления для Compose Multiplatform и инструментария KMP.
Докладчик: Светлана Исакова, Мартон Браун
https://www.youtube.com/watch?v=bz4cQeaXmsI
✍️ @kotlin_lib
JetBrains Kotlin Multiplatform (KMP) - это технология с открытым исходным кодом, предназначенная для гибкой кроссплатформенной разработки. Она позволяет разрабатывать приложения для Android, iOS, настольных компьютеров, веб-приложений и серверной части и эффективно использовать код для разных платформ, сохраняя при этом преимущества нативного программирования. После 8 лет разработки KMP была доработана до уровня технологии, готовой к продакшену, и перешла в статус Stable, а это значит, что сейчас самое время начать использовать ее в своем проекте.
На этом вебинаре мы обсудим, как работает KMP, как применить ее гибкость в ваших разнообразных проектах и как получить максимальную отдачу от нее. Мы расскажем об инструментах и экосистеме KMP и о том, как их можно использовать для оптимизации работы разработчиков. Наконец, мы представим дорожную карту KMP и расскажем о стремлении JetBrains постоянно совершенствовать KMP, включая обновления для Compose Multiplatform и инструментария KMP.
Докладчик: Светлана Исакова, Мартон Браун
https://www.youtube.com/watch?v=bz4cQeaXmsI
✍️ @kotlin_lib
YouTube
The State of Kotlin Multiplatform
JetBrains Kotlin Multiplatform (KMP) is an open-source technology designed for flexible cross-platform development. It allows you to develop apps for Android, iOS, desktop, web, and server-side and efficiently reuse code across them, all while retaining the…
👍3
Kotlin Flow: простая, но мощная реализация
С тех пор как Flow был впервые представлен в Kotlin версии 1.3.0, он стал важной и обсуждаемой темой в сообществе Kotlin. Но почему?
Flow - это простая, но мощная реализация асинхронного программирования в Kotlin.
Flow - это не что иное, как корутин, который возвращает несколько результатов. Она позволяет разработчикам писать структурно параллельный, асинхронный и неблокирующий код в последовательном стиле. Но что означают все эти технические термины, начинающим разработчикам сложно понять сразу. Мне потребовалось некоторое время, чтобы понять это.
https://proandroiddev.com/kotlin-flow-simple-yet-powerful-implementation-c585f337161a
✍️ @kotlin_lib
С тех пор как Flow был впервые представлен в Kotlin версии 1.3.0, он стал важной и обсуждаемой темой в сообществе Kotlin. Но почему?
Flow - это простая, но мощная реализация асинхронного программирования в Kotlin.
Flow - это не что иное, как корутин, который возвращает несколько результатов. Она позволяет разработчикам писать структурно параллельный, асинхронный и неблокирующий код в последовательном стиле. Но что означают все эти технические термины, начинающим разработчикам сложно понять сразу. Мне потребовалось некоторое время, чтобы понять это.
https://proandroiddev.com/kotlin-flow-simple-yet-powerful-implementation-c585f337161a
✍️ @kotlin_lib
👍3❤1
Kotlin-Swift interopedia
Kotlin/Native обеспечивает двунаправленное взаимодействие с Objective-C. На момент написания статьи Kotlin не взаимодействует со Swift напрямую, а скорее опосредованно, через мост Objective-C. Экспорт Swift - это то, что команда Kotlin/Native намерена решить в будущем. Тем не менее, выбор в пользу Objective-C вполне обоснован: старые проекты, содержащие код Objective-C, могут вызывать общий код Kotlin, а также проекты, содержащие код Swift.
https://github.com/kotlin-hands-on/kotlin-swift-interopedia
✍️ @kotlin_lib
Kotlin/Native обеспечивает двунаправленное взаимодействие с Objective-C. На момент написания статьи Kotlin не взаимодействует со Swift напрямую, а скорее опосредованно, через мост Objective-C. Экспорт Swift - это то, что команда Kotlin/Native намерена решить в будущем. Тем не менее, выбор в пользу Objective-C вполне обоснован: старые проекты, содержащие код Objective-C, могут вызывать общий код Kotlin, а также проекты, содержащие код Swift.
https://github.com/kotlin-hands-on/kotlin-swift-interopedia
✍️ @kotlin_lib
GitHub
GitHub - kotlin-hands-on/kotlin-swift-interopedia: Kotlin Swift Interopedia
Kotlin Swift Interopedia. Contribute to kotlin-hands-on/kotlin-swift-interopedia development by creating an account on GitHub.
👍2
Создание паттернов креативного дизайна в Kotlin
Этот блог предназначен для тех, кто только начинает изучать паттерны проектирования в Kotlin. Здесь я попытался создать креативные паттерны проектирования с нуля, а не просто предоставить их синтаксис и теорию.
https://proandroiddev.com/creating-the-creational-design-patterns-in-kotlin-319d08fdf9b6
✍️ @kotlin_lib
Этот блог предназначен для тех, кто только начинает изучать паттерны проектирования в Kotlin. Здесь я попытался создать креативные паттерны проектирования с нуля, а не просто предоставить их синтаксис и теорию.
https://proandroiddev.com/creating-the-creational-design-patterns-in-kotlin-319d08fdf9b6
✍️ @kotlin_lib
👍4
Совет
Пример
1- Обычный способ
2- С помощью ifEmpty
3- Максимальное
✍️ @kotlin_lib
ifEmpty
позволяет нам выполнить второе действие, если содержимое нашего значения пусто. Это отличный способ избавиться от if-else
с isEmpty
.Пример
1- Обычный способ
2- С помощью ifEmpty
3- Максимальное
✍️ @kotlin_lib
👍17
Работаем с enum в kotlin/jvm правильно
А вы знали, что HashMap для enum уступает по эффективности EnumMap? Или что EnumSet под капотом это обычный long? Под катом несколько рецептов удобного применения этих структур.
https://habr.com/ru/articles/781730/
✍️ @kotlin_lib
А вы знали, что HashMap для enum уступает по эффективности EnumMap? Или что EnumSet под капотом это обычный long? Под катом несколько рецептов удобного применения этих структур.
https://habr.com/ru/articles/781730/
✍️ @kotlin_lib
Хабр
Работаем с enum в kotlin/jvm правильно
А вы знали, что HashMap для enum уступает по эффективности EnumMap? Или что EnumSet под капотом это обычный long? Под катом несколько рецептов удобного применения этих структур. Классы над которыми...
👍5
Тюнинг производительности Kotlin: 20 советов
Производительность — это критический показатель, который может привести к успеху или сломать ваше приложение. Хотя Kotlin предлагает множество функций, облегчающих разработку, знание того, как использовать их для повышения производительности, может стать решающим фактором. В этой статье приведены 20 советов, которые помогут вам писать высокопроизводительный код на Kotlin.
https://medium.com/@android-world/kotlin-performance-tuning-20-best-practices-you-should-know-354011076664
✍️ @kotlin_lib
Производительность — это критический показатель, который может привести к успеху или сломать ваше приложение. Хотя Kotlin предлагает множество функций, облегчающих разработку, знание того, как использовать их для повышения производительности, может стать решающим фактором. В этой статье приведены 20 советов, которые помогут вам писать высокопроизводительный код на Kotlin.
https://medium.com/@android-world/kotlin-performance-tuning-20-best-practices-you-should-know-354011076664
✍️ @kotlin_lib
👍5👎1
Media is too big
VIEW IN TELEGRAM
Андрей Данилов — Gradle Kotlin DSL: о чем умолчали в документации
Gradle.kts уже давно не новая технология, но далеко не все на нее перешли. Причины разные: кто-то слышал о плохом перформансе, кто-то пытался мигрировать, но с ходу не вышло. Даже спустя 5 лет после релиза скуповатая на детали документация не проясняет многие кейсы. Андрей постарается исправить эту ситуацию в своем докладе.
Вы узнаете, есть ли вообще причины переходить на kts в 2023 году и насколько все плохо (или хорошо) с перформансом, учитывая что во многих release notes сообщают об ускорениях. Спикер также разберет все проблемы, возникающие как при миграции крупного проекта, так и при интеропе Kotlin/Groovy.
источник
✍️ @kotlin_lib
Gradle.kts уже давно не новая технология, но далеко не все на нее перешли. Причины разные: кто-то слышал о плохом перформансе, кто-то пытался мигрировать, но с ходу не вышло. Даже спустя 5 лет после релиза скуповатая на детали документация не проясняет многие кейсы. Андрей постарается исправить эту ситуацию в своем докладе.
Вы узнаете, есть ли вообще причины переходить на kts в 2023 году и насколько все плохо (или хорошо) с перформансом, учитывая что во многих release notes сообщают об ускорениях. Спикер также разберет все проблемы, возникающие как при миграции крупного проекта, так и при интеропе Kotlin/Groovy.
источник
✍️ @kotlin_lib
👍4
Media is too big
VIEW IN TELEGRAM
IntelliJ IDEA Tips and Tricks
Антон Архипов - специалист по работе с разработчиками в команде Kotlin в компании JetBrains. В сферу его профессиональных интересов входят языки программирования и инструментарий для разработчиков. С 2014 года он является чемпионом по Java.
источник
✍️ @kotlin_lib
Антон Архипов - специалист по работе с разработчиками в команде Kotlin в компании JetBrains. В сферу его профессиональных интересов входят языки программирования и инструментарий для разработчиков. С 2014 года он является чемпионом по Java.
источник
✍️ @kotlin_lib
👍3