Instantiator – библиотека для быстрого создания тестовых объектов
- Значительная часть unit-тестов проверяет разные виды трансформации данных из одного формата в другой, из-за чего приходится инстанциировать много объектов с семпловыми данными
- Instantiator использует рефлексию, чтобы предзаполнить дата классы тестовыми данными
- Значительная часть unit-тестов проверяет разные виды трансформации данных из одного формата в другой, из-за чего приходится инстанциировать много объектов с семпловыми данными
- Instantiator использует рефлексию, чтобы предзаполнить дата классы тестовыми данными
👍8
Оптимизация перфоманса
Набор советов по оптимизации различных характеристик перфоманса: рендеринга, потребления памяти, батареи и сети.
Набор советов по оптимизации различных характеристик перфоманса: рендеринга, потребления памяти, батареи и сети.
🥱2🐳1🤨1
Compose или XML: кто быстрее
Команда, переписывающая свое приложение с XML на Compose, решила провести A/B тесты перфоманса на продакшне для старой и новой реализации.
- При первом открытии экрана на Compose он хуже XML по количеству frozen frames и page load duration
- При открытии следующего экрана с похожими компонентами frozen frame rate улучшается на 60%, а page load duration на 35%
- Так происходит, потому что XML Layouts всегда прекомпилированы, а в Compose – компилируются на лету, а потом кешируются
Команда, переписывающая свое приложение с XML на Compose, решила провести A/B тесты перфоманса на продакшне для старой и новой реализации.
- При первом открытии экрана на Compose он хуже XML по количеству frozen frames и page load duration
- При открытии следующего экрана с похожими компонентами frozen frame rate улучшается на 60%, а page load duration на 35%
- Так происходит, потому что XML Layouts всегда прекомпилированы, а в Compose – компилируются на лету, а потом кешируются
😱6👍2👌1
Как использовать Palette API
- Библиотека Palette помогает легко вытащить палитру цветов из любого изображения
- Палитра состоит из шести оттенков: Light Vibrant, Vibrant, Dark Vibrant, Light Muted, Muted, Dark Muted
- Ее можно использовать, чтобы адаптировать интерфейс приложения под открытое сейчас изображение
- Библиотека Palette помогает легко вытащить палитру цветов из любого изображения
- Палитра состоит из шести оттенков: Light Vibrant, Vibrant, Dark Vibrant, Light Muted, Muted, Dark Muted
- Ее можно использовать, чтобы адаптировать интерфейс приложения под открытое сейчас изображение
❤12👍2
Инлайн-функция для выполнения запроса с ретраем
При работе с удаленными ресурсами разумно использовать автоматические ретраи, ведь сеть ненадежна. В статье автор поэтапно дорабатывает инлайн-функцию, которая умеет автоматически ретраить вызов.
При работе с удаленными ресурсами разумно использовать автоматические ретраи, ведь сеть ненадежна. В статье автор поэтапно дорабатывает инлайн-функцию, которая умеет автоматически ретраить вызов.
Medium
Kotlin Retry To Make Your Code More Resilient
Kotlin wrapper function to Retry any part of a code
👍4
Подробный разбор плюсов и минусов КММ в сравнении с нативной разработкой
- Чтобы оценить готовность КММ к продакшну, ребята реализовали на нем четыре тестовых проекта
- Оценивали сложность дебага, интероп, тулинг, перфоманс, влияние на размер приложения, сложность написания базовой логики и много чего еще
- Чтобы оценить готовность КММ к продакшну, ребята реализовали на нем четыре тестовых проекта
- Оценивали сложность дебага, интероп, тулинг, перфоманс, влияние на размер приложения, сложность написания базовой логики и много чего еще
🤮10👍8😁2🌚1
Plugable Features
Некоторым экранам нужно знать о большом количестве других фичей в проекте. Хороший пример – экран DeveloperSettings, на котором можно включать фичетоглы и менять глобальные настройки. Автор рассказывает, как с помощью Dagger Multibindings или ServiceLoader построить переиспользуемый экран настроек, не привязанный к одному App-модулю.
Некоторым экранам нужно знать о большом количестве других фичей в проекте. Хороший пример – экран DeveloperSettings, на котором можно включать фичетоглы и менять глобальные настройки. Автор рассказывает, как с помощью Dagger Multibindings или ServiceLoader построить переиспользуемый экран настроек, не привязанный к одному App-модулю.
Building Plugable Features on Android
Building Plugable Features on Android :: Ryan Harter
Modularization of Gradle projects can ease a team's growing pains, but can also introduce challenges when architecting features that require knowledge of the specific modules used in an app. This post looks at approaches for dynamically aggregating dependencies…
👍5👏1
Релиз Ktor 2.1.0
Вышел новый релиз Ktor, основные изменения в котором касаются его серверной части. Особенно упрощается жизнь для новичков в бэкенде:
- CLI генератор новых проектов, который, помимо создания проекта по шаблону, сразу настраивает все окружение
- Gradle Deployment Plugin, который умеет собирать проект и в docker контейнер, и в fat jar
Вышел новый релиз Ktor, основные изменения в котором касаются его серверной части. Особенно упрощается жизнь для новичков в бэкенде:
- CLI генератор новых проектов, который, помимо создания проекта по шаблону, сразу настраивает все окружение
- Gradle Deployment Plugin, который умеет собирать проект и в docker контейнер, и в fat jar
❤3👍1
Типовые архитектурные паттерны переоценены
- В реальной жизни дизайн многих систем разрабатывается не так, как в книгах. Их не разрабатывают выделенные архитекторы, не документируют сложными стандартами вроде С4, не используют UML, и не пытаются привести к словарю стандартных архитектурных паттернов банды четырех
- Задача инженера – выработать максимально простую архитектуру, которая поможет решить текущую бизнес-проблему. Соответствие стандартным подходам часто влечет за собой излишнюю сложность
- Главная роль паттернов – в повышении вашей насмотренности
- Чтобы прокачаться в system design, прорабатывайте архитектуру сложных кейсов самостоятельно, запрашивайте фидбэк у коллег, сравнивайте разные варианты дизайна друг с другом, проводите ревью у других людей
- В реальной жизни дизайн многих систем разрабатывается не так, как в книгах. Их не разрабатывают выделенные архитекторы, не документируют сложными стандартами вроде С4, не используют UML, и не пытаются привести к словарю стандартных архитектурных паттернов банды четырех
- Задача инженера – выработать максимально простую архитектуру, которая поможет решить текущую бизнес-проблему. Соответствие стандартным подходам часто влечет за собой излишнюю сложность
- Главная роль паттернов – в повышении вашей насмотренности
- Чтобы прокачаться в system design, прорабатывайте архитектуру сложных кейсов самостоятельно, запрашивайте фидбэк у коллег, сравнивайте разные варианты дизайна друг с другом, проводите ревью у других людей
The Pragmatic Engineer
Software Architecture is Overrated, Clear and Simple Design is Underrated
I had my fair share in designing and building large systems. I've taken part in
rewriting Uber's distributed payment systems
[https://blog.pragmaticengineer.com/distributed-architecture-concepts-i-have-learned-while-building-payments-systems/]
, designing…
rewriting Uber's distributed payment systems
[https://blog.pragmaticengineer.com/distributed-architecture-concepts-i-have-learned-while-building-payments-systems/]
, designing…
👍14
Event Handlers в Compose
Event Handler’ы помогают обеспечить корректное выполнение сайд эффектов: их исполнение в правильные моменты жизненного цикла, управление ресурсами и отмену. В статье разбираются различные виды event handler’ов и подходящий контекст для их использования.
Event Handler’ы помогают обеспечить корректное выполнение сайд эффектов: их исполнение в правильные моменты жизненного цикла, управление ресурсами и отмену. В статье разбираются различные виды event handler’ов и подходящий контекст для их использования.
👍1
MAD Skills: За какими метриками перфоманса надо следить
- Фазы старта приложения: cold start, warm start, hot start
- Time to initial display – время до отрисовки первого фрейма приложения
- Time to full display – время до загрузки всего контента, достаточного для работы с экраном
- Frame rates должны сменяться не реже чем раз в 11.1ms
- Фазы старта приложения: cold start, warm start, hot start
- Time to initial display – время до отрисовки первого фрейма приложения
- Time to full display – время до загрузки всего контента, достаточного для работы с экраном
- Frame rates должны сменяться не реже чем раз в 11.1ms
👎1
Релиз Qodana 2022.2
- Qodana – платформа для мониторинга качества кода от JetBrains, поддерживающая Kotlin и Java
- Ее легко интегрировать с GitHub Actions, Teamcity и другими CI серверами
- В новом релизе появилась куча дополнительных инспекций, в том числе возможность замены >=/<= на ==, проверка на reassign переменной и verbose nullability.
- Qodana – платформа для мониторинга качества кода от JetBrains, поддерживающая Kotlin и Java
- Ее легко интегрировать с GitHub Actions, Teamcity и другими CI серверами
- В новом релизе появилась куча дополнительных инспекций, в том числе возможность замены >=/<= на ==, проверка на reassign переменной и verbose nullability.
👍12🔥1
Collecting flows in a lifecycle-aware manner
- Как collectAsStateWithLifecycle работает под капотом
- Как встроить Flow collection в свою архитектуру с учетом жизненного цикла приложения
- В чем отличие от collectAsAtate
- Как collectAsStateWithLifecycle работает под капотом
- Как встроить Flow collection в свою архитектуру с учетом жизненного цикла приложения
- В чем отличие от collectAsAtate
👍8👎2
Как работает WorkManager
- WorkManager – библиотека, которая помогает организовать фоновую работу приложения
- Вторая задача WorkManager – гарантированное выполнение переданных ему задач, вне зависимости от режима работы приложения
- Детали того, как конкретно библиотека работает
- Разбор новых возможностей WorkManager на примерах
- WorkManager – библиотека, которая помогает организовать фоновую работу приложения
- Вторая задача WorkManager – гарантированное выполнение переданных ему задач, вне зависимости от режима работы приложения
- Детали того, как конкретно библиотека работает
- Разбор новых возможностей WorkManager на примерах
👍10
This media is not supported in your browser
VIEW IN TELEGRAM
Как в Tinder адоптили Compose
Как и в других приложениях с огромной кодовой базой и несколькими мобильными командами, в Tinder не были готовы сходу тащить Compose в бой. Они выбрали очень плавную стратегию внедрения.
- Создали демо-приложение, в котором реализовали несколько типичных для Tinder контролов и экранов с помощью Compose, дали команде с ним поиграться
- Оценили влияние Compose на developer experience: скорость сборки, возня с версиями зависимостей.
- Перевели на Compose наименее популярный экран – список опенсорсных лицензий
- Перевели на Compose свои внутренние инструменты
- Начали постепенно переводить на Compose компоненты своей дизайн-системы, затаскивая таким образом его на все экраны в приложении
Как и в других приложениях с огромной кодовой базой и несколькими мобильными командами, в Tinder не были готовы сходу тащить Compose в бой. Они выбрали очень плавную стратегию внедрения.
- Создали демо-приложение, в котором реализовали несколько типичных для Tinder контролов и экранов с помощью Compose, дали команде с ним поиграться
- Оценили влияние Compose на developer experience: скорость сборки, возня с версиями зависимостей.
- Перевели на Compose наименее популярный экран – список опенсорсных лицензий
- Перевели на Compose свои внутренние инструменты
- Начали постепенно переводить на Compose компоненты своей дизайн-системы, затаскивая таким образом его на все экраны в приложении
👍9❤2
Kotlin на Android стукнуло 5 лет
Ровно пять лет назад на сцене Google I/O произошло то, о чем Google просила большая часть коммьюнити – Kotlin признали поддерживаемым языком на Android. К юбилею подготовили небольшую статью с воспоминаниями и будущими планами Google на Kotlin. Там еще и мои цитаты есть, так что обязательно читайте!
Ровно пять лет назад на сцене Google I/O произошло то, о чем Google просила большая часть коммьюнити – Kotlin признали поддерживаемым языком на Android. К юбилею подготовили небольшую статью с воспоминаниями и будущими планами Google на Kotlin. Там еще и мои цитаты есть, так что обязательно читайте!
🔥10🎉2
Kevlar – библиотека с набором проверок безопасности
- Пакет antipiracy проверяет, нет ли на устройстве пользователя пиратского софта
- Пакет rooting определяет наличие root-доступа или других аномалий, связанных с системой
- Пакет integrity проверяет, не модифицировано ли как-то само приложение
- Пакет antipiracy проверяет, нет ли на устройстве пользователя пиратского софта
- Пакет rooting определяет наличие root-доступа или других аномалий, связанных с системой
- Пакет integrity проверяет, не модифицировано ли как-то само приложение
🔥8👍1😢1🤮1
This media is not supported in your browser
VIEW IN TELEGRAM
Сравнение Appyx и Compose Navigation
Недавно команда Bumble выпустила многообещающий фреймворк для навигации – Appyx. В статье его сравнивают с Compose Navigation на нескольких сценариях:
1️⃣Простой переход с главного экрана на страницу поиска
2️⃣Реализация анимированных переходов
3️⃣ViewPager-like переходы вперед и назад
По результатам сравнения у Appyx довольно много серьезных плюсов как с архитектурной стороны, так и с точки зрения доступных фичей.
Недавно команда Bumble выпустила многообещающий фреймворк для навигации – Appyx. В статье его сравнивают с Compose Navigation на нескольких сценариях:
1️⃣Простой переход с главного экрана на страницу поиска
2️⃣Реализация анимированных переходов
3️⃣ViewPager-like переходы вперед и назад
По результатам сравнения у Appyx довольно много серьезных плюсов как с архитектурной стороны, так и с точки зрения доступных фичей.
👍12👎4
Команды Почты и Облака Mail.ru ищут Android-разработчиков и запускают Weekend Offer
В команде Почты Mail.ru вам предстоит работать над умной организацией рассылок, решать задачи по сортировке писем, обеспечивать возможность отслеживать заказы из онлайн-магазинов и поддерживать платёжные системы прямо в приложении.
В команде Облака Mail.ru вы будете работать над редактором фото и документов, сервисом создания коллажей, заниматься интеграцией — например, работать над авторизацией из одного сервиса в другом в один клик, применять в работе CI/CD-практики, заниматься техническим мониторингом (Grafana) и аналитикой (MyTracker, Metida, Redash).
Успейте зарегистрироваться до 2 сентября!
В команде Почты Mail.ru вам предстоит работать над умной организацией рассылок, решать задачи по сортировке писем, обеспечивать возможность отслеживать заказы из онлайн-магазинов и поддерживать платёжные системы прямо в приложении.
В команде Облака Mail.ru вы будете работать над редактором фото и документов, сервисом создания коллажей, заниматься интеграцией — например, работать над авторизацией из одного сервиса в другом в один клик, применять в работе CI/CD-практики, заниматься техническим мониторингом (Grafana) и аналитикой (MyTracker, Metida, Redash).
Успейте зарегистрироваться до 2 сентября!
💩35👍4👎1🤡1
This media is not supported in your browser
VIEW IN TELEGRAM
Релиз Android 13 – основные изменения для разработчиков
Стабильный релиз Android 13 наконец-то вышел. Все основные фичи уже успели разобрать во время выхода Beta версий, но на всякий случай держите небольшой разбор из официального блога.
Стабильный релиз Android 13 наконец-то вышел. Все основные фичи уже успели разобрать во время выхода Beta версий, но на всякий случай держите небольшой разбор из официального блога.
👍7🔥1