The Kotlin Flow Operator Cheat Sheet
В догонку ещё один материал про Kotlin Flow – свежая шпаргалка по операторам, с примерами кода.
🟢
🟢
🟢
🟢
🟢
🟢
🟢
🟢
Читать (En)
В догонку ещё один материал про Kotlin Flow – свежая шпаргалка по операторам, с примерами кода.
map, filter, take(n)reduce, fold, runningReduce/scan, transformFlatMapConcat, FlatMapMerge, FlatMapLatestflowOn, buffer, conflate, collectLatestzip, combine, mergecatch, onCompletion, retryWhenonEach, debounce(timeoutMillis), distinctUntilChangedЧитать (En)
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤3🔥3
Flow Marbles: Interactive diagram of Kotlin Flow
И ещё дополнение к постам выше 😎
В соседнем чате поделились крутым ресурсом – Flow Marbles: интерактивные диаграммы Kotlin Flow.
Читать (En)
И ещё дополнение к постам выше 😎
В соседнем чате поделились крутым ресурсом – Flow Marbles: интерактивные диаграммы Kotlin Flow.
Читать (En)
🔥9👍3❤2👨💻1
Хочешь стать техлидом? Возможно, что не стоит
А вот полезная статья от Абакара, в которой он рассказывает о специфике позиции техлида, ключевых сложностях и подводных камнях.
👉 Точно ли тебе это нужно ?
👉 Техническая подкованность
👉 Отстаивание своей позиции
👉 Стратегическое мышление
👉 Фокусировка внимания
👉 Конфликты
👉 Борьба за ресурсы
👉 Стрессы
👉 Увольнения
👉 Ты — пример
Если целитесь на такую позицию – обязательно почитайте.
Читать (Ru)
А вот полезная статья от Абакара, в которой он рассказывает о специфике позиции техлида, ключевых сложностях и подводных камнях.
👉 Точно ли тебе это нужно ?
👉 Техническая подкованность
👉 Отстаивание своей позиции
👉 Стратегическое мышление
👉 Фокусировка внимания
👉 Конфликты
👉 Борьба за ресурсы
👉 Стрессы
👉 Увольнения
👉 Ты — пример
Если целитесь на такую позицию – обязательно почитайте.
Читать (Ru)
👍9🔥4❤3
Создание кастомного тултипа Jetpack Compose
Пошаговый гайд по созданию гибкой и удобной системы тултипов в Jetpack Compose, с помощью модифайеров и специального оборачивающего блока.
Читать (Ru)
Пошаговый гайд по созданию гибкой и удобной системы тултипов в Jetpack Compose, с помощью модифайеров и специального оборачивающего блока.
Читать (Ru)
👍11🔥7❤4
Развеиваем мифы о Stability в Compose: оптимизации Strong Skipping
Ещё про Compose. Интересная статья, в которой автор рассказывает, как лямбды и strong skipping режим влияют на работу компилятора и на рекомпозицию.
Выводы и рекомендации от автора
🟢 Compose стал более агрессивно оптимизировать пропуск Composable функций, когда параметры не изменились.
🟢 Акцент в отдладке Compose сдвигается от метрик и отчетов к отладке на основе LayoutInspector и других инструментов, потому что метрики и отчеты говорят слишком мало о реальной производительности компонентов.
🟢 Чтобы обновить UI, используя нестабильные аргументы, нужно создать новый инстанс такого аргумента в памяти, и метод copy дата-классов для этого отлично подходит.
🟢 При работе с коллекциями для оптимизации рекомпозиций больше не нужно использовать Immutable Collections, однако придется обновлять их с созданием нового инстанса. Альтернатива использовать - SnapshotStateList.
🟢 При работе с лямбдами для максимальной производительности нужно захватывать только те объекты, которые действительно нужны: если нужно только одно поле класса, лучше прочитать поле в отдельную переменную и сослаться на нее.
Код экспериментов из статьи → ComposeStability
Читать (Ru)
Ещё про Compose. Интересная статья, в которой автор рассказывает, как лямбды и strong skipping режим влияют на работу компилятора и на рекомпозицию.
Выводы и рекомендации от автора
Код экспериментов из статьи → ComposeStability
Читать (Ru)
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥13❤5👍3👌1
Типобезопасная передача результатов между экранами в Compose с Jetpack Navigation
Разработчик core-команды Wildberries рассказывает как они в проекте решили обеспечить типобезопасность при передаче результатов между экранами с применением библиотеки Compose Navigation.
В статье рассматривается механизм, который помогает избежать типичных ошибок и делает код более поддерживаемым.
Читать (Ru)
Разработчик core-команды Wildberries рассказывает как они в проекте решили обеспечить типобезопасность при передаче результатов между экранами с применением библиотеки Compose Navigation.
В статье рассматривается механизм, который помогает избежать типичных ошибок и делает код более поддерживаемым.
Читать (Ru)
👍4👎3❤2🔥1
Видим невидимое: контроль качества Android-библиотек через объектив AppTracer Lite SDK
Разработчик AppTracer Lite SDK(аналог Firebase Crashlytics) рассказывает про возможности инструмента и подводные камни, с которыми столкнулся при разработке.
Подход в статье универсален, может быть применим к любой библиотеке.
👉 Что такое AppTracer SDK
👉 Как трекать качество библиотеки
👉 Собираем краши
👉 Логируем аналитику
👉 Собираем метрики производительности
👉 Обфускация
👉 Crash-free интеграция Tracer
👉 Поддержка отключения Tracer в библиотеке
👉 Заключение
На данный момент AppTracer Lite SDK доступен только для внутреннего использования, но если вы хотите интегрировать его к себе – пишите в чат @tracer_feedback
Читать (Ru)
Разработчик AppTracer Lite SDK(аналог Firebase Crashlytics) рассказывает про возможности инструмента и подводные камни, с которыми столкнулся при разработке.
Подход в статье универсален, может быть применим к любой библиотеке.
👉 Что такое AppTracer SDK
👉 Как трекать качество библиотеки
👉 Собираем краши
👉 Логируем аналитику
👉 Собираем метрики производительности
👉 Обфускация
👉 Crash-free интеграция Tracer
👉 Поддержка отключения Tracer в библиотеке
👉 Заключение
На данный момент AppTracer Lite SDK доступен только для внутреннего использования, но если вы хотите интегрировать его к себе – пишите в чат @tracer_feedback
Читать (Ru)
🔥6❤4👍3
This media is not supported in your browser
VIEW IN TELEGRAM
Creating an Engaging Progress Button in Jetpack Compose
Гайд по реализации вот такой кнопки с прогрессом на Jetpack Compose.
Исходный код → ProgressButton
Читать (En)
Гайд по реализации вот такой кнопки с прогрессом на Jetpack Compose.
Исходный код → ProgressButton
Читать (En)
👍12🔥5❤2
Под капотом Android: как создаются, управляются и восстанавливаются процессы приложений в системе
Большая и полезная статья с разбором ключевых системных компонентов (Zygote, SystemServer, AMS, Binder) и процесса восстановления состояния через Bundle.
Читать (Ru)
Большая и полезная статья с разбором ключевых системных компонентов (Zygote, SystemServer, AMS, Binder) и процесса восстановления состояния через Bundle.
Читать (Ru)
6❤13👍5👎2🔥2
Погружение в разработку плагинов для Android Studio
Вторая часть про разработку плагинов для Android Studio. В этой статье рассматривается пошаговая реализациия более продвинутого плагина – Запускатель UI-тестов.
Предыдущая часть тут.
Читать (Ru)
Вторая часть про разработку плагинов для Android Studio. В этой статье рассматривается пошаговая реализациия более продвинутого плагина – Запускатель UI-тестов.
Предыдущая часть тут.
Читать (Ru)
🔥6👍4❤2
Exploring PausableComposition internals in Jetpack Compose
В Compose версии 1.9.X представили новый внутренний API – PausableComposition, который, как утверждается, решает проблемы с производительностью.
В статье подробный разбор: что это такое, как устроено под капотом и для чего может пригодиться.
Читать (En)
В Compose версии 1.9.X представили новый внутренний API – PausableComposition, который, как утверждается, решает проблемы с производительностью.
В статье подробный разбор: что это такое, как устроено под капотом и для чего может пригодиться.
Читать (En)
👍6❤2🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
Swipe to Pay, или Как мы переписали слайдер оплаты на Compose
Полезная статья, в которой разработчик из Dodo Engineering подробно разбирает процесс создания достаточно сложного и прикольного компонента на Compose.
Читать (Ru)
Полезная статья, в которой разработчик из Dodo Engineering подробно разбирает процесс создания достаточно сложного и прикольного компонента на Compose.
Читать (Ru)
🔥11❤4👍4
The dark corners of inline, crossinline, and reified in Kotlin
Статья про возможные проблемы при неправильном использовании
👉 The promise and peril of inline
👉 Why crossinline matters in suspending contexts
👉 Reified: type-safe builders and beyond
👉 Debugging and testing inline code
👉 Checklist for safe use
Читать (En)
Статья про возможные проблемы при неправильном использовании
inline, crossinline и reified в Kotlin.👉 The promise and peril of inline
👉 Why crossinline matters in suspending contexts
👉 Reified: type-safe builders and beyond
👉 Debugging and testing inline code
👉 Checklist for safe use
Читать (En)
🔥5👍4❤3
LayoutNode: What Actually Happens When You Write
Полезная статья, в которой разбирается LayoutNode: что это такое, как строится дерево из LayoutNode, как это влияет на производительность и отрисовку.
👉 What is the LayoutNode?
👉 How Compose Actually Creates Nodes
👉 LayoutNode vs Modifier.Node
👉 Rendering Pipeline
👉 Custom Layouts
👉 The bottom line
Читать (En)
@ComposableПолезная статья, в которой разбирается LayoutNode: что это такое, как строится дерево из LayoutNode, как это влияет на производительность и отрисовку.
👉 What is the LayoutNode?
👉 How Compose Actually Creates Nodes
👉 LayoutNode vs Modifier.Node
👉 Rendering Pipeline
👉 Custom Layouts
👉 The bottom line
Читать (En)
🔥8👍5❤3
Мобильное тестирование: разбираемся с эмуляторами и тестовыми фермами
Обзорная статья с разбором доступных решений для тестирования мобильных приложений, с плюсами и минусами.
Эмуляторы и симуляторы. Удобны для тестирования базовой функциональности и отладки, но они не способны воспроизвести реальные условия работы устройства.
Мобильные фермы. Подходят для регрессионных и UI-тестов, нагрузочного и исследовательского тестирования. Один из плюсов – разнообразное количество девайсов для воспроизведения платформенно-специфичных багов. Наиболее популярные решения на рынке: опенсорс-платформы Smartphone Test Farm и DeviceHub, мобильная ферма от Selectel.
Читать (Ru)
Обзорная статья с разбором доступных решений для тестирования мобильных приложений, с плюсами и минусами.
Эмуляторы и симуляторы. Удобны для тестирования базовой функциональности и отладки, но они не способны воспроизвести реальные условия работы устройства.
Мобильные фермы. Подходят для регрессионных и UI-тестов, нагрузочного и исследовательского тестирования. Один из плюсов – разнообразное количество девайсов для воспроизведения платформенно-специфичных багов. Наиболее популярные решения на рынке: опенсорс-платформы Smartphone Test Farm и DeviceHub, мобильная ферма от Selectel.
Читать (Ru)
👍5🔥4🤔3❤1
Integration Testing on Android: A Practical Guide with Hilt, Compose & Room
Практическое руководство по написанию интеграционных тестов в Android.
👉 Introduction
👉 Project setup
👉 Writing the test
👉 Swapping Real Dependencies with Fake Ones
👉 Testing Failure Scenarios
👉 Robotic Pattern for compose test
👉 Why Integration Testing Matters
Читать (En)
Практическое руководство по написанию интеграционных тестов в Android.
👉 Introduction
👉 Project setup
👉 Writing the test
👉 Swapping Real Dependencies with Fake Ones
👉 Testing Failure Scenarios
👉 Robotic Pattern for compose test
👉 Why Integration Testing Matters
Читать (En)
🔥3❤2👍1
TAO Bubbles: элегантные и настраиваемые подсказки для ваших Jetpack Compose приложений
Статья с примером реализации компонента для отображения подсказок на Jetpack Compose.
Читать (Ru)
Статья с примером реализации компонента для отображения подсказок на Jetpack Compose.
Читать (Ru)
🔥12❤4👍4
The Magic Behind Retrofit: How a Simple Interface Becomes Your API Gateway
Если вдруг кто-то не знал как под капотом устроен и работает Retrofit, вот свежая статья с детальным разбором: Dynamic Proxy, аннотации, парсинг, формирование запросов и т.д.
Читать (En)
Если вдруг кто-то не знал как под капотом устроен и работает Retrofit, вот свежая статья с детальным разбором: Dynamic Proxy, аннотации, парсинг, формирование запросов и т.д.
Читать (En)
❤7🔥6👍4👨💻1
Настолько приложение Max хайпит за время своего существования, что какие-то несчастные статьи на Хабре, про то, какие например использует разрешения Max собирают десятки и сотни тысяч просмотров – раз (191K), дваз (139K), триз (46К).
И все эти статьи у меня вызывают так сказать неопределённые чувства 🤷♂️,
Посмотрите например вот эту статью "Что можно узнать о Max из AndroidManifest" – тут автор рассказывает про структуру манифеста, из чего он состоит, какие разрешения есть в Max и другую всячину по типу App Links. Статья собрала 46K просмотров 🤦♂️
Или возьмем вот эту статью "Разрешения MAX для Android. Сравниваем с Telegram и WhatsApp*" – тут собственно и комментировать нечего. 139K просмотров.
Вот это вообще шик, статья-рекордсмен "Технический разбор Max: что внутри APK". Интересно, что же там внутри? А внутри там мягко говоря ничего – урлы api, пару разрешений из манифеста, ну и ещё какие-то используемые sdk и библиотеки. На текущий момент статья собрала 191K 😳.
46, 139, 190 тыщ просмотров Карл!!! То есть, суммарно под 400К просмотров. Вы серьезно? Кажется мир свернул не туда.
Цель авторов я конечно же понимаю – хайп, все дела, у каждого свой тг-канал и всё такое. Но как будто бы странно такими способами хайпить и пытаться набрать аудиторию.
Читателей и комментаторов не очень понимаю. Среднему пользователю такие статьи никакой инфы не дадут, а технические спецы если нужно и сами могут APK декомпилить и посмотреть что там и как.
Я это к чему. Периодически встречаются действительно годные материалы, статьи, которые хорошо, если соберут 2, 3 или 4 тысячи просмотров. Согласен, действительно крутых материалов сейчас гораздо меньше, но они есть. При этом же людям интереснее почитать какую-то +/- бестолковую информацию – а что же там такого супермега шпионского спрятано в MAX. Приложения мессенджеров +/- все одинаковые и разрешения у них будут +/- одинаковые и набор функций и т.д. Чего вы ждёте-то от таких статей?
Фух, выдохнул, пора заканчивать 😂
Анализируйте, фильтруйте и потребляйте полезную информацию. Всем доброй ночи 😉
P.S. Комментарии если что открыты 😉
Please open Telegram to view this post
VIEW IN TELEGRAM
50👍19❤🔥12👎11🤔3❤1
Forwarded from Swift Tips
12 Swift Optimization Secrets Apple Won’t Tell You
Статья с советами, рекомендациями и примерами оптимизации Swift-кода.
🟢 Copy-on-Write (COW): Smart Memory Efficiency
🟢 Value Types vs Reference Types: The Foundation of Swift Performance
🟢 ARC Overhead: Understanding Retain and Release
🟢 Inlining and Function Dispatch
🟢 Looping and Lazy Collections
🟢 Memory Layout Optimization: Struct Alignment Tricks
🟢 Concurrency Optimizations: Making Async Code Fly
🟢 Compiler-Level Optimizations
🟢 Profiling with Instruments
🟢 Real-World iOS Scenarios
🟢 Practical Tips & Best Practices
🟢 Conclusion: Clean Code First, Optimize Second
Читать (En)
Статья с советами, рекомендациями и примерами оптимизации Swift-кода.
Читать (En)
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3❤2👍2
Android ViewModel Data Loading: Best Practices and Flow-Based Architecture
Большая статья, с примерами кода, в которой автор рассказывает про проблемы загрузки данных в
Читать (En)
Большая статья, с примерами кода, в которой автор рассказывает про проблемы загрузки данных в
ViewModel.init{ } блоке и рассматривает Flow-Based решение, как более правильный, удобный и оптимальный архитектурный подход.Читать (En)
🔥7❤3👍3