Разбор того, как работает kotlin-parcelize, и как можно вмешаться в этот процесс, чтобы уменьшить объем сгенерированного кода.
le0nidas
Use Parceler to put your parcels on a diet
kotlin-parcelize is a great tool. Its simple to use and it helps in avoiding writing a lot of boilerplate code. There are times though that we need to take control of writing and reading to/from th…
Короткое видео с советами от команды Kotlin про то, как сделать работу с циклами более идиоматичной.
YouTube
How to Improve Loops in Kotlin | Kotlin Tips 2024
Welcome to Kotlin Tips, the video series on how to use Kotlin more efficiently.
Loops are a basic and powerful concept in programming. They allow you to repeat the execution of statements until a certain condition is met. In this video, Sebastian (https…
Loops are a basic and powerful concept in programming. They allow you to repeat the execution of statements until a certain condition is met. In this video, Sebastian (https…
Хороший структурированный обзор того, как реализовывать OAuth в Android и iOS приложениях с общими принципами работы и потенциальными проблемами.
Хабр
OAuth в мобильных приложениях
Привет! Меня зовут Мялкин Максим, я занимаюсь мобильной разработкой в KTS . Ни один сервис не обходится без логина. Часто в мобильных приложениях требуется интегрировать вход через сторонние соцсети —...
Вышел Kotlin 1.6.20! Из ключевых фич:
📌Прототип контекстных ресиверов
📌Definitely non-nullable types
📌Возможность параллельной компиляции в рамках одного JVM модуля
📌Инкрементальная компиляция в новом JS IR бэкенде
📌26% ускорение компиляции Native бинарников
📌Прототип контекстных ресиверов
📌Definitely non-nullable types
📌Возможность параллельной компиляции в рамках одного JVM модуля
📌Инкрементальная компиляция в новом JS IR бэкенде
📌26% ускорение компиляции Native бинарников
The JetBrains Blog
Kotlin 1.6.20 Released | The Kotlin Blog
Kotlin 1.6.20 offers previews of future language features and brings performance improvements for the JVM, JS, and Native platforms.
Хороший разбор того, как фронтенд компилятора Kotlin парсит код и строит из него PSI дерево. А тем временем напоминаю, что работы над новым фронтендом сейчас в самом разгаре!
Medium
Crash course on the Kotlin compiler | 1. Frontend: Parsing phase
Lexers, parsers, PSI, AST v. CST, and other fundamental concepts to help understand writing IDE/compiler plugins
Команда Dropbox выпустила Focus – Gradle-плагин, который генерирует settings.gradle файл под каждый конкретный модуль, что позволяет не загружать лишние зависимости и ускоряет время синка проекта. Авторы рассказывают, что для их команды в части кейсов время синка срезалось с 2 минут до 20 секунд.
dropbox.tech
Introducing Focus, a new open source Gradle plugin
Семафоры – многопоточные примитивы, которые позволяют определять число потоков, которое может получить доступ к определенному блоку кода. В статье рассказывается, как использование семафора может помочь при работе с корутинами.
Shreyas Patil's Blog
Leveraging the Semaphore concept in Coroutines to limit the parallelism 🔀
In this blog, we'll learn to use the concept of Semaphore with Kotlin coroutines to limit parallelism
Твиттер-тред про то, как к Gradle плагину можно подключить библиотеку, написанную на Swift и работающую с Foundation. Из интересного – работа с библиотекой ведется через JNA, более простую альтернативу JNI.
Twitter
Zac Sweers
Did a neat little Friday project today. I needed to use an API that only exists in Apple's Foundation framework. So I needed to write Swift code that I could use from a Gradle plugin. Here we go 🧵
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 апреля и вечером отправят лучшим кандидатам офферы.
Узнайте подробнее в видеоприглашении о продукте и задачах, которые вас ждут, и не упускайте свой шанс!