Qiwi рассказывают про свой опыт работы с KMM, на котором они реализовали сетевой слой и view models. Если вы еще только присматриваетесь к КММ, то кейс ребят может вас вдохновить.
Хабр
Как мы в QIWI внедряли Kotlin Multiplatform Mobile (KMM)
Привет, Хабр! Меня зовут Кирилл Васильев, и я хотел бы рассказать, как мы в QIWI внедряли Kotlin Multiplatform Mobile (KMM). КММ — это технология кроссплатформенной разработки, позволяющая...
Представьте себе прямую, описываемую функцией
Джейк Уортон написал статью, в которой прикладывает эту модель к библиотекам Picasso, Retrofit и Dagger, и рассуждает, как ее использовать при создании новой библиотеки.
y=mx+b.
Параметр b показывает, насколько далеко от 0 находится место пересечения оси Y, а m – угол наклона. Это – удобная ментальная модель, чтобы оценивать сложность использования различных библиотек, где b – сложность первого старта, m – сложность, возникающая при усложнении кейсов использования.Джейк Уортон написал статью, в которой прикладывает эту модель к библиотекам Picasso, Retrofit и Dagger, и рассуждает, как ее использовать при создании новой библиотеки.
Jake Wharton
Slope-intercept library design – Jake Wharton
Системная статья про то, как в Compose работают сайд эффекты, каких антипаттернов стоит остерегаться, и как в них работать со сторонними зависимостями.
👨💻 Jorge Castillo
Jetpack Compose Effect Handlers
Learn how to run your side effects 🌀 bound to the @Composable lifecycle.
This post has been moved to the Effective Android newsletter.
This post has been moved to the Effective Android newsletter.
Недавно команда Square увидела, что на эмуляторах с API 23 резко вырос объем памяти, потребляемой на CI библиотекой LeakCanary. Прочитайте статью с расследованием причин проблемы и разбором нюансов работы сборщика мусора.
P-Y's blog
Of sharks and heaps of sticky marshmallows
A deep dive into GC roots in Android M heap dumps
Kotlin Multiplatform отлично подходит для разработки DSL. Держите пример того, как с его помощью решили задачу генерации SVG на бэкенде и фронтенде.
avwie.github.io
avwie's programming blog
This is my programming blog where I write articles about experiments that I've done. Some are successful, some are not, but we learn from all.
Продолжение цикла статей про structured concurrency. В этой части разбирается обработка ошибок:
📌Обработка исключений внутри coroutine scope
📌Обработка не фатальных ошибок с помощью
📌Обработка исключений внутри coroutine scope
📌Обработка не фатальных ошибок с помощью
supervisorScope
📌
Отмена корутинThedevtavern
Structured concurrency explained - Part 2: Exceptions and Cancellations
Error handling is an important part to understand in the workflow of structured concurrency. In this post, we will dive deep into this and uncover some of the most surprising and misleading parts of Kotlin coroutines!
Туториал по созданию переиспользуемого Compose компонента с анимацией на канвасе.
Mobile Dev Notes
Getting started with Canvas in Compose — Mobile Dev Notes
Explore DrawScope and create your first custom component using Canvas in Jetpack Compose
Теория разбитых окон гласит – чем больше мелких правонарушений происходит, тем больше вероятность того, что начнут происходить и крупные. Держите небольшое эссе, в котором разбирается, как эта теория может быть применена к разработке софта.
Детальный рассказ про то, как в приложении ВК реализовали панель реакций – обзор архитектуры, взаимодействия компонентов реакций, их попапов, и работы с Lottie-анимациями.
Хабр
Реализация реакций в приложении ВКонтакте на Android
Привет! Меня зовут Денис Загуменнов, я из команды ленты и рекомендаций ВКонтакте. Мы занимаемся новостной лентой, стеной, рекомендациями, комментариями, VK Donut, социальным графом и навигацией. В...
Если вам нужно подключить к проекту сразу несколько модулей одной библиотеки, попробуйте использовать BOM файлы – источники правды о том, какие конкретно версии модулей должны использоваться в проекте, с учетом транзитивных зависимостей.
Cash App Code Blog
Synchronize Dependencies with BOM
Keeping multiple dependencies of the same group in sync can be tricky. BOM makes it safe.
Пример того, как Kotlin Sequences могут помочь при реализации пагинации в приложении.
Kessir
Using Kotlin Sequences to abstract pagination
Let's assume you need to process millions of records from some third party data source. This data source will usually provide a pagination mechanism...
Успейте подать заявку на Weekend Offer в мессенджер VK Teams для мобильных разработчиков и получите оффер всего за два дня, а бонусом доп. зарплату на старте.
Зарегистрироваться
📌Первая встреча состоится до 22 апреля: с вами свяжутся после получения заявки.
📌23 апреля вас ждет знакомство с командой и технические собеседования.
📌Финальные собеседования проведут 24 апреля и вечером отправят лучшим кандидатам офферы.
Узнайте подробнее в видеоприглашении о продукте и задачах, которые вас ждут, и не упускайте свой шанс!
Зарегистрироваться
📌Первая встреча состоится до 22 апреля: с вами свяжутся после получения заявки.
📌23 апреля вас ждет знакомство с командой и технические собеседования.
📌Финальные собеседования проведут 24 апреля и вечером отправят лучшим кандидатам офферы.
Узнайте подробнее в видеоприглашении о продукте и задачах, которые вас ждут, и не упускайте свой шанс!
Статья про то, как тестировать анимации в Compose с помощью фреймворка «Compose UI Test», на выходе которых вы получаете скриншоты результата.
Mobile development with Alex
Jetpack Compose: Testing animations
Designers and developers pay more attention to animations. This article will explore how to test animation created with Jetpack Compose.
Выпуск подкаста Happy Path Programming с Романом Елизаровым про то, как принимаются решения по языковому дизайну в Kotlin.
Spotify for Podcasters
#60 Kotlin Language Design with Roman Elizarov by Happy Path Programming
Kotlin Language designer Roman Elizarov, joins us to talk about finding the right balances when designing Kotlin.
Discuss this episode: https://discord.gg/nPa76qF
Discuss this episode: https://discord.gg/nPa76qF
Все еще не разобрались, зачем нужны Context Receivers? Это видео поможет разобраться.
YouTube
Context Receivers Are Coming to Kotlin!
Kotlin 1.6.20 comes with a new toy: Context Receivers. You can use them to elegantly constrain functions (and more!) to a specific context from which they can be called. Sebastian (https://twitter.com/sebi_io) helps you figure out what exactly that means:…
В Jetpack Compose 1.2.0 добавили возможность репортить различные перфоманс метрики во время сборки. Держите лучший пост прошлой недели про то, как Compose работает под капотом и какие решения могут ухудшить или улучшить эти метрики.
Keep rules – это фича ProGuard, которая позволяет сохранять оригинальные имена классов или функций после оптимизации кода. Это нужно, например, для того, чтобы не ломалась логика, основанная на рефлексии. С Java все работает просто, а вот использование keep rules с Kotlin не так очевидно.
Guardsquare
Keep Rules in the Age of Kotlin | Guardsquare
Learn why you need to think in terms of Java when writing keep rules for Kotlin code and how to maintain security in the Age of Kotlin Programming Language.
Текст про историю создания и развития протокола JSON. Пара фактов для затравочки:
📌Ключи в JSON помещаются в кавычки по историческим причинам – чтобы при скармливании его интерпретатору JavaScript не возникало коллизий по зарезервированным словам.
📌Великолепная цитата автора JSON в ответ на набросы про то, что он переизобрел XML: «The good thing about reinventing the wheel is that you can get a round one».
📌Ключи в JSON помещаются в кавычки по историческим причинам – чтобы при скармливании его интерпретатору JavaScript не возникало коллизий по зарезервированным словам.
📌Великолепная цитата автора JSON в ответ на набросы про то, что он переизобрел XML: «The good thing about reinventing the wheel is that you can get a round one».
twobithistory.org
The Rise and Rise of JSON
Команда Slack выложила в открытый доступ свой внутренний Gradle плагин. Посмотрите, чтобы вдохновиться:
📌Базовая конфигурация для Kotlin и Android
📌Специальный DSL для включения и выключения частых зависимостей
📌Метрики модульности
📌И много разных тасок, которые вы сможете попробовать забрать и в свой проект
📌Базовая конфигурация для Kotlin и Android
📌Специальный DSL для включения и выключения частых зависимостей
📌Метрики модульности
📌И много разных тасок, которые вы сможете попробовать забрать и в свой проект
GitHub
GitHub - slackhq/slack-gradle-plugin: Gradle and IntelliJ build tooling used in Slack's Android repo
Gradle and IntelliJ build tooling used in Slack's Android repo - slackhq/slack-gradle-plugin
Гайд из четырех частей по тому, как использовать KSP:
1️⃣Введение
2️⃣Настройка проекта и написание первого процессора
3️⃣Кодогенерация
4️⃣Использование сгенеренных классов в приложении
1️⃣Введение
2️⃣Настройка проекта и написание первого процессора
3️⃣Кодогенерация
4️⃣Использование сгенеренных классов в приложении
DEV Community
Android KSP guide for dummies by a Dummy: Part 1
KSP, Kotlin Symbol Processing is answer to annotation processing for Kotlin by google. It replaces...