👨💻 Корутины Kotlin в продакшене: уроки и подводные камни
Запустив в прод корутины, можно столкнуться с многочисленными проблемами, которые не сразу очевидны из документации. Несмотря на то, что в теории корутины элегантны, их практическая реализация сопряжена с несколькими нюансами, которые могут привести к серьезным проблемам.
В этой статье автор рассматривает основные проблемы, с которыми можно столкнуться при работе с корутинами, а также нюансы, способные привести к серьезным ошибкам.
👉 Читать статью
#новость #android #kotlin
Запустив в прод корутины, можно столкнуться с многочисленными проблемами, которые не сразу очевидны из документации. Несмотря на то, что в теории корутины элегантны, их практическая реализация сопряжена с несколькими нюансами, которые могут привести к серьезным проблемам.
В этой статье автор рассматривает основные проблемы, с которыми можно столкнуться при работе с корутинами, а также нюансы, способные привести к серьезным ошибкам.
👉 Читать статью
#новость #android #kotlin
😢5❤3👏1🎉1
📁 Как создать плагин для IntelliJ IDEA
Автор статьи столкнулся с бойлерплейтом композиции фич в своих проектах, поэтому решил написать универсальный плагин для создания файловой структуры фич в проекте.
В статье рассказывается и показывается, как сделать базовый плагин для создания файловых структур и собрать его для локального использования или публикации.
👉 Читать статью
#новость #kotlin #flutter
Автор статьи столкнулся с бойлерплейтом композиции фич в своих проектах, поэтому решил написать универсальный плагин для создания файловой структуры фич в проекте.
В статье рассказывается и показывается, как сделать базовый плагин для создания файловых структур и собрать его для локального использования или публикации.
👉 Читать статью
#новость #kotlin #flutter
❤1
👾 Создание плагинов с помощью Kotlin Multiplatform
Хоть Flutter и предоставляет полноценный фреймворк для создания кроссплатформенных приложений, интеграция нативного функционала иногда может быть весьма обременительной. Именно здесь на помощь приходит Kotlin Multiplatform (KMP).
KMP — это не просто инструмент, который конкурирует с Flutter, скорее, он предлагает мощный способ рационализировать разработку плагинов, позволяя разработчикам экономить время, беречь силы и писать эффективный, легко сопровождаемый код.
В этой статье автор делится опытом использования KMP для создания библиотеки общих настроек (Shared Preferences) для Flutter под названием SharedPrefsKMP. Эта библиотека упрощает управление общими настройками в Android и iOS, демонстрируя, как KMP может улучшить процесс разработки на Flutter.
👉 Читать статью
#новость #kotlin
Хоть Flutter и предоставляет полноценный фреймворк для создания кроссплатформенных приложений, интеграция нативного функционала иногда может быть весьма обременительной. Именно здесь на помощь приходит Kotlin Multiplatform (KMP).
KMP — это не просто инструмент, который конкурирует с Flutter, скорее, он предлагает мощный способ рационализировать разработку плагинов, позволяя разработчикам экономить время, беречь силы и писать эффективный, легко сопровождаемый код.
В этой статье автор делится опытом использования KMP для создания библиотеки общих настроек (Shared Preferences) для Flutter под названием SharedPrefsKMP. Эта библиотека упрощает управление общими настройками в Android и iOS, демонстрируя, как KMP может улучшить процесс разработки на Flutter.
👉 Читать статью
#новость #kotlin
😁5❤1
👾 Как работает модификатор crossinline?
crossinline — ключевое слово, которое используется для указания, что лямбда-выражение не может содержать нелокальных
Когда мы передаем лямбда-выражение в функцию в качестве параметра, мы можем использовать оператор
#kotlin
crossinline — ключевое слово, которое используется для указания, что лямбда-выражение не может содержать нелокальных
return, даже если оно передано в inline-функцию.Когда мы передаем лямбда-выражение в функцию в качестве параметра, мы можем использовать оператор
return внутри лямбды, чтобы выйти из цикла или функции, в которой вызывается лямбда. Однако, если мы передаем лямбда-выражение в inline-функцию, код лямбда-выражения может быть вставлен прямо в место вызова функции. В этом случае, если в лямбде используется оператор return, это может привести к выходу из внешней функции, что не всегда желательно.#kotlin
❤3
🔄 Безопасное обновление состояния в ViewModel
Это краткая заметка о подходе, который автор выработал для себя, чтобы обновлять состояние экрана при использовании MVI-like паттерна в ViewModel.
Следует отметить, что классический «полноценный» MVI подразумевает использование редьюсеров, которые решают часть проблем, описанных в этой заметке. Тем не менее этот подход может приводить к написанию значительного количества бойлерплейтного кода.
👉 Читать статью
#новость #android #kotlin
Это краткая заметка о подходе, который автор выработал для себя, чтобы обновлять состояние экрана при использовании MVI-like паттерна в ViewModel.
Следует отметить, что классический «полноценный» MVI подразумевает использование редьюсеров, которые решают часть проблем, описанных в этой заметке. Тем не менее этот подход может приводить к написанию значительного количества бойлерплейтного кода.
👉 Читать статью
#новость #android #kotlin
🤩3
📲 Transtation — перевод с Kotlin Multiplatform
Transtation — это сочетание «Translate» и «Station», простое в использовании и мощное приложение для перевода для Android/Desktop(JVM), основанное на Kotlin Multiplatform + Compose Multiplatform.
Реализует одновременный перевод с использованием нескольких движков (Bing, Google, Baidu, Tencent), может использовать для перевода несколько передовых больших языковых моделей (LLM), таких как ChatGPT, GPT-4, ChatGLM, Qwen (в том числе в режиме общения), поддерживает плагины, загрузки, перевод изображений, перевод экрана и многое другое.
Внутри Kotlin Multiplatform + Compose Multiplatform + MVVM + Kotlin Coroutine + Flow + SqlDelight, многомодульный дизайн.
⚙️ Transtation на GitHub
#новость #android #kotlin
Transtation — это сочетание «Translate» и «Station», простое в использовании и мощное приложение для перевода для Android/Desktop(JVM), основанное на Kotlin Multiplatform + Compose Multiplatform.
Реализует одновременный перевод с использованием нескольких движков (Bing, Google, Baidu, Tencent), может использовать для перевода несколько передовых больших языковых моделей (LLM), таких как ChatGPT, GPT-4, ChatGLM, Qwen (в том числе в режиме общения), поддерживает плагины, загрузки, перевод изображений, перевод экрана и многое другое.
Внутри Kotlin Multiplatform + Compose Multiplatform + MVVM + Kotlin Coroutine + Flow + SqlDelight, многомодульный дизайн.
⚙️ Transtation на GitHub
#новость #android #kotlin
❤4
👾 Функции высшего порядка
Функции высшего порядка в Kotlin — это функции, которые принимают другие функции в качестве аргументов и/или возвращают функции в качестве результата. Эти принимаемые и возвращаемые функции обычно являются лямбда-выражениями.
Функции высшего порядка являются основой концепции функционального программирования.
👉 Читать подробнее
#kotlin
Функции высшего порядка в Kotlin — это функции, которые принимают другие функции в качестве аргументов и/или возвращают функции в качестве результата. Эти принимаемые и возвращаемые функции обычно являются лямбда-выражениями.
Функции высшего порядка являются основой концепции функционального программирования.
👉 Читать подробнее
#kotlin
❤4👍1
🚙 Kotlin Coroutines под капотом
Structured Concurrency — это одна из главных фишек Kotlin Coroutines, позволяющая оперировать иерархиями корутин через единый интерфейс. Благодаря такой организации можно легко отменить сразу все корутины, имея ссылку только на самый высокоуровневый объект.
В этой статье автор разбирает две базовые концепции, на основе которых строится Structured Concurrency — CoroutineContext и CoroutineScope.
👉 Читать статью
#новость #android #kotlin
Structured Concurrency — это одна из главных фишек Kotlin Coroutines, позволяющая оперировать иерархиями корутин через единый интерфейс. Благодаря такой организации можно легко отменить сразу все корутины, имея ссылку только на самый высокоуровневый объект.
В этой статье автор разбирает две базовые концепции, на основе которых строится Structured Concurrency — CoroutineContext и CoroutineScope.
👉 Читать статью
#новость #android #kotlin
❤2
👾 Почему reified возможно использовать только с inline-функциями
Ключевое слово
inline-функции в Kotlin позволяют копировать тело функции непосредственно в вызывающий код. Это позволяет избежать накладных расходов на создание объектов и вызовы функций при каждом вызове.
Именно
Также стоит отметить, что ключевое слово
#kotlin
Ключевое слово
reified используется только с inline-функциями, т.к. оно позволяет получить доступ к информации о типе-параметре на этапе выполнения программы, что невозможно для обычных (non-inline) функций.inline-функции в Kotlin позволяют копировать тело функции непосредственно в вызывающий код. Это позволяет избежать накладных расходов на создание объектов и вызовы функций при каждом вызове.
Именно
reified в комбинации с inline позволяет сохранить информацию о типе-параметре и передать ее внутрь функции в рантайме, что было бы невозможно без inline.Также стоит отметить, что ключевое слово
reified можно применять только с обобщенными типами (дженериками).#kotlin
❤5
👾 Конструкторы в Kotlin
Свойств у класса может быть столько, сколько ему нужно. Но все они должны быть инициализированы при создании экземпляра этого класса. Поэтому для удобства был придуман конструктор — специальный блок кода, который вызывается при создании экземпляра класса. Ему передаются необходимые значения, которые потом используются для инициализации свойств.
Класс в Kotlin может иметь основной конструктор (primary) и один или более вторичных конструкторов (secondary). У класса может и не быть конструктора, но Kotlin всё равно автоматически сгенерирует основной конструктор по умолчанию (без параметров).
👉 Подробнее в статье
#kotlin
Свойств у класса может быть столько, сколько ему нужно. Но все они должны быть инициализированы при создании экземпляра этого класса. Поэтому для удобства был придуман конструктор — специальный блок кода, который вызывается при создании экземпляра класса. Ему передаются необходимые значения, которые потом используются для инициализации свойств.
Класс в Kotlin может иметь основной конструктор (primary) и один или более вторичных конструкторов (secondary). У класса может и не быть конструктора, но Kotlin всё равно автоматически сгенерирует основной конструктор по умолчанию (без параметров).
👉 Подробнее в статье
#kotlin
🥰4