Debugging and fixing a *huge* Jetpack Compose performance problem in my Sudoku-solver app
Интересная статья, как у чувака при одном изменении перерисовывались все поля в приложении Судоку на Jetpack Compose.
А виной тому следующее. Он думал, что вот такой 👇 формат записи сделает его _mutableList – immutableList. В результате получилось то, что получилось.
Казалось бы очевидная штука, но нет – имейте в виду 😉
Перевод от AppTractor тут.
Читать (En)
Интересная статья, как у чувака при одном изменении перерисовывались все поля в приложении Судоку на Jetpack Compose.
А виной тому следующее. Он думал, что вот такой 👇 формат записи сделает его _mutableList – immutableList. В результате получилось то, что получилось.
private var _mutableList: MutableList<Int> = mutableListOf()
val immutableList: List<Int>
get() = _mutableList
Казалось бы очевидная штука, но нет – имейте в виду 😉
Перевод от AppTractor тут.
Читать (En)
🤡8👍3🔥1🤮1💩1
Guide to Good Android App Architetture
Еще один гайд по архитектуре в Android (паттерны, слои, используемые библиотеки и т.д.).
Прям полноценным гайдом эту статью кажется сложно назвать, но исходники посмотреть можно для общего развития.
Код на GitHub → Android App Tutorials in Kotlin
Читать (En)
Еще один гайд по архитектуре в Android (паттерны, слои, используемые библиотеки и т.д.).
Прям полноценным гайдом эту статью кажется сложно назвать, но исходники посмотреть можно для общего развития.
Код на GitHub → Android App Tutorials in Kotlin
Читать (En)
🥱18👍7👎4❤1🔥1🤔1👌1
Я тут проект разбиваю на модули и вот уже который день вожусь с Dagger`ом и хочу вам сказать, что задачка не из легких 😃 Одно дело, когда вы приходите на готовый проект, в котором уже всё ядро выстроено и совсем другое дело дробить с нуля относительно большой проект.
Раскидать проект на модули, кажется много ума не надо, а вот настроить Dagger + грамотно выстроить связи, чтоб удобно было всё инитить, чтоб модули были независимыми и переиспользуемыми – задачка уже куда сложнее.
Накидаю сюда ссылки, которыми пользуюсь, возможно кому-то пригодится. Некоторые из них довольно старые, но могут быть актуальные.
• Многомодульность и Dagger 2. Лекция Яндекса
• Иерархия модулей: как выстроить связи между модулями в Android
• Многомодульный BDSM: стоит ли внедрять Gradle модули и какие типы модулей бывают?
• Многомодульный BDSM: как связать Gradle модули и как с ними общаться после этого?
• Многомодульность в Android с точки зрения архитектуры
• Еще раз про многомодульность Android-приложений
• Dagger in Multi-Module Clean Applications
• Multi-Modules
Раскидать проект на модули, кажется много ума не надо, а вот настроить Dagger + грамотно выстроить связи, чтоб удобно было всё инитить, чтоб модули были независимыми и переиспользуемыми – задачка уже куда сложнее.
Накидаю сюда ссылки, которыми пользуюсь, возможно кому-то пригодится. Некоторые из них довольно старые, но могут быть актуальные.
• Многомодульность и Dagger 2. Лекция Яндекса
• Иерархия модулей: как выстроить связи между модулями в Android
• Многомодульный BDSM: стоит ли внедрять Gradle модули и какие типы модулей бывают?
• Многомодульный BDSM: как связать Gradle модули и как с ними общаться после этого?
• Многомодульность в Android с точки зрения архитектуры
• Еще раз про многомодульность Android-приложений
• Dagger in Multi-Module Clean Applications
• Multi-Modules
🔥30👍7❤4🤡2🤮1💩1
Automating dependency updates in a Compose project
Тут чувак из Гугла рассказывает как они автоматизуруют обновления зависимостей в своих проектах с помощью Renovate.
Renovate автоматически анализирует ваш проект, затем проверяет доступность более новых версий для ваших зависимостей, обновляет и делает Pull Request в вашу репу, вам остается только жмакнуть кнопку, если все ок. Могут возникнуть траблы, если группа связанных зависимостей может иметь разные версии, как с тем же Compose / Kotlin. Как такое решать, как раз в статье и рассказывается.
Тулза тут → Renovate
Читать (En)
Тут чувак из Гугла рассказывает как они автоматизуруют обновления зависимостей в своих проектах с помощью Renovate.
Renovate автоматически анализирует ваш проект, затем проверяет доступность более новых версий для ваших зависимостей, обновляет и делает Pull Request в вашу репу, вам остается только жмакнуть кнопку, если все ок. Могут возникнуть траблы, если группа связанных зависимостей может иметь разные версии, как с тем же Compose / Kotlin. Как такое решать, как раз в статье и рассказывается.
Тулза тут → Renovate
Читать (En)
🔥6👍2🤔1
Как мы попробовали Yatagan
Тут ребята из Циан затестили новый инструмент для DI от Яндекса – Yatagan, делятся опытом.
Если я всё правильно посмотрел, практически по всем вариантам Yatagan выигрывает в скорости сборки. В некоторых кейсах небольшая разница, но все же.
Читать (Ru)
Тут ребята из Циан затестили новый инструмент для DI от Яндекса – Yatagan, делятся опытом.
Если я всё правильно посмотрел, практически по всем вариантам Yatagan выигрывает в скорости сборки. В некоторых кейсах небольшая разница, но все же.
Читать (Ru)
👍15💩14🔥3🤔3🤮1🤡1
7 Jetpack Compose Projects to Become a Better Android Developer
Еще одна подборка проектов реализованных на Jetpack Compose, перенять опыт и прокачать скилл.
👉 Tivi
👉 Stack
👉 CoffeeDrinks
👉 Newzz
👉 JetSpotify
👉 JetDelivery
👉 RickNMortyCompose
Читать (En)
Еще одна подборка проектов реализованных на Jetpack Compose, перенять опыт и прокачать скилл.
👉 Tivi
👉 Stack
👉 CoffeeDrinks
👉 Newzz
👉 JetSpotify
👉 JetDelivery
👉 RickNMortyCompose
Читать (En)
👍14❤3🔥2
Советы по работе с Gradle для Android-разработчиков
Я продолжаю разбивать проект на модули и в процессе возникает ну очень много траблов с gradle, зависимостями и прочей хренью.
Вот наткнулся на отличную статью, в которой на человеческом языке рассказывают про различные нюансы работе с gradle, как правильно структурировать свои проекты и писать build-скрипты.
👉 Не редактируйте Gradle-скрипты через IDE
👉 Обращайте внимание на соглашение по именованию модулей
👉 Что выбрать: Kotlin vs Groovy
👉 Как прописывать зависимости в многомодульных проектах
👉 Как обновлять зависимости
👉 Старайтесь не использовать feature-флаги в build config
👉 Несколько слов про базовую структуру проекта
👉 Не забывайте про matchingFallbacks
👉 Убирайте ненужные build variant
👉 Как написать Gradle-плагин для CI на примере gitlab
Некоторые штуки возможно вкусовщина или могут зависить от проекта + статья от 2021, что-то может быть не актуально из-за версий gradle, но в целом статья толковая.
Читать (Ru)
Я продолжаю разбивать проект на модули и в процессе возникает ну очень много траблов с gradle, зависимостями и прочей хренью.
Вот наткнулся на отличную статью, в которой на человеческом языке рассказывают про различные нюансы работе с gradle, как правильно структурировать свои проекты и писать build-скрипты.
👉 Не редактируйте Gradle-скрипты через IDE
👉 Обращайте внимание на соглашение по именованию модулей
👉 Что выбрать: Kotlin vs Groovy
👉 Как прописывать зависимости в многомодульных проектах
👉 Как обновлять зависимости
👉 Старайтесь не использовать feature-флаги в build config
👉 Несколько слов про базовую структуру проекта
👉 Не забывайте про matchingFallbacks
👉 Убирайте ненужные build variant
👉 Как написать Gradle-плагин для CI на примере gitlab
Некоторые штуки возможно вкусовщина или могут зависить от проекта + статья от 2021, что-то может быть не актуально из-за версий gradle, но в целом статья толковая.
Читать (Ru)
🔥11👍8❤3⚡2
How Gradle Works Part 3 - Build Script
В дополнении к сегодняшнему посту про gradle, еще одна, новая статья от Gradle команды про синтаксис скриптов и про то, что происходит во время выполнения скрипта сборки.
Читать (En)
В дополнении к сегодняшнему посту про gradle, еще одна, новая статья от Gradle команды про синтаксис скриптов и про то, что происходит во время выполнения скрипта сборки.
Читать (En)
👍9❤2🔥1
Modern Android Development in 2023
Большая статья с инструментами, библиотеками и технологиями для разработки современных приложений, с учетом последних тендеций 2023 года.
👉 Android Jetpack
👉 Jetpack Compose
👉 Architecture Patterns
👉 Clean Architecture
👉 Dependency Injection
👉 Modularization
👉 Local Store
Читать (En)
Большая статья с инструментами, библиотеками и технологиями для разработки современных приложений, с учетом последних тендеций 2023 года.
👉 Android Jetpack
👉 Jetpack Compose
👉 Architecture Patterns
👉 Clean Architecture
👉 Dependency Injection
👉 Modularization
👉 Local Store
Читать (En)
❤14👍9🔥2🤔2
Готовим FeatureToggle для Android
Еще один пример реализации FeatureToggle для Android, с настройкой доступности фичей через firebase remote config.
Пример кода из статьи на GitHub → FeatureToggle
Читать (Ru)
Еще один пример реализации FeatureToggle для Android, с настройкой доступности фичей через firebase remote config.
Пример кода из статьи на GitHub → FeatureToggle
Читать (Ru)
🔥11👍4❤1👎1
A couple of interesting things from Telegram Android app source code
Тут разработчик исследовал исходники телеги и поделился интересными решениями.
👉 Определение перформанса девайса на основе cpu сount
👉 Нестандартные анимации через кастомные вьюшки на канвасе
На счет анимаций через кастомные вьюхи. На самом деле это довольно распрастранённый подход, с помощью которого можно делать крутые штуки. Главное правильно писать кастомные вьюхи, не плодить лишнего в onDraw(), чтоб не потерять в производительности.
Вот тут еще одна статья с исследованием исходников Telegram про то, как они оптимизирует изображения перед отправкой на сервер.
Читать (En)
Тут разработчик исследовал исходники телеги и поделился интересными решениями.
👉 Определение перформанса девайса на основе cpu сount
👉 Нестандартные анимации через кастомные вьюшки на канвасе
На счет анимаций через кастомные вьюхи. На самом деле это довольно распрастранённый подход, с помощью которого можно делать крутые штуки. Главное правильно писать кастомные вьюхи, не плодить лишнего в onDraw(), чтоб не потерять в производительности.
Вот тут еще одна статья с исследованием исходников Telegram про то, как они оптимизирует изображения перед отправкой на сервер.
Читать (En)
👍7🔥2🤔1
Какой компонент в Android инициализируется раньше всех?
Anonymous Quiz
53%
Application
4%
Activity
3%
Service
33%
ContentProvider
7%
BroadcastReceiver
👍32😱12❤3🔥3
Разбираем ошибки начинающих iOS-разработчиков
Большая статья с разбором нескольких наиболее популярных ошибок начинающих iOS-разработчиков. К чему приводят такие ошибки и как их можно избежать.
👉 Связь между Storyboard и кодом
👉 Использование Auto Layout
👉 Избыточный force unwrapping
👉 Использование guard
👉 Использование switch
👉 Ошибки при реализации паттерна delegate
👉 Связи между компонентами
Читать (Ru)
Большая статья с разбором нескольких наиболее популярных ошибок начинающих iOS-разработчиков. К чему приводят такие ошибки и как их можно избежать.
👉 Связь между Storyboard и кодом
👉 Использование Auto Layout
👉 Избыточный force unwrapping
👉 Использование guard
👉 Использование switch
👉 Ошибки при реализации паттерна delegate
👉 Связи между компонентами
Читать (Ru)
❤5🔥3👍1
Как устроены собеседования в IT
Видос от команды Tinkoff Mobile про процесс собеседования в IT. Зачем нужны те или иные блоки, что ожидают от кандидата, важность софт скиллов и т.д.
Если вам интересна тема собесов, как со стороны кандидата, так и со стороны интервьюера, вероятно найдете для себя что-то полезное.
Смотреть📹
Видос от команды Tinkoff Mobile про процесс собеседования в IT. Зачем нужны те или иные блоки, что ожидают от кандидата, важность софт скиллов и т.д.
Если вам интересна тема собесов, как со стороны кандидата, так и со стороны интервьюера, вероятно найдете для себя что-то полезное.
Смотреть
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12👎5🔥3💩2👨💻1
Understand Kotlin Sealed class better
Отличная статья про то, как устроены Sealed классы под капотом и чем отличаются от Enum`ов.
Читать (En)
Отличная статья про то, как устроены Sealed классы под капотом и чем отличаются от Enum`ов.
Читать (En)
👍10🔥4🥱3❤1
Spot on: Android 14 adds highlights to TextViews
В Android 14 появится возможность выделять текст в TextView. Аналогично тому, как мы сейчас делаем через Spannable.setSpan().
Где-то в чатиках видел, что некоторым не зашло, но мне кажется это будет гораздо удобней, чем через span.
Дока тут → Highlights
Читать (En)
В Android 14 появится возможность выделять текст в TextView. Аналогично тому, как мы сейчас делаем через Spannable.setSpan().
Где-то в чатиках видел, что некоторым не зашло, но мне кажется это будет гораздо удобней, чем через span.
Дока тут → Highlights
Читать (En)
👍7🤔5❤2🔥2
10 Useful Kotlin Extension Functions for Android Developer
Еще один большой набор полезных Kotlin Extension функций для удобного использования.
👉 Print to Logcat
👉 View Visibility
👉 Toast Message
👉 Snackbar Message
👉 Hide Keyboard
👉 dp and px conversion
👉 Digit, Alphabetic, and Alphanumeric Check
👉 isNull, ifNull
👉 Date Formatter
Читать (En)
Еще один большой набор полезных Kotlin Extension функций для удобного использования.
👉 Print to Logcat
👉 View Visibility
👉 Toast Message
👉 Snackbar Message
👉 Hide Keyboard
👉 dp and px conversion
👉 Digit, Alphabetic, and Alphanumeric Check
👉 isNull, ifNull
👉 Date Formatter
Читать (En)
👍17🔥5❤2👎2🥴1
Элемент выбора эмодзи (aka EmojiPicker) для iOS как в MacOS
Статья от нашего читателя, в которой он делится опытом разработки собственной библиотеки(aka EmojiPicker) в стиле MacOS и с какими трудностями столкнулся в процессе.
Библиотека на GitHub → MCEmojiPicker
Читать (Ru)
Статья от нашего читателя, в которой он делится опытом разработки собственной библиотеки(aka EmojiPicker) в стиле MacOS и с какими трудностями столкнулся в процессе.
Библиотека на GitHub → MCEmojiPicker
Читать (Ru)
👍3🔥3❤1
Streamlining User Actions with the Command Pattern: A Practical Guide
Отличная статья с примером, как можно оптимизировать код действий пользователя с помощью паттерна Command. Актуально когда у вас может быть много экшенов.
В статье приводится пример на Jetpack Compose, но на самом деле применимо везде.
Читать (En)
Отличная статья с примером, как можно оптимизировать код действий пользователя с помощью паттерна Command. Актуально когда у вас может быть много экшенов.
В статье приводится пример на Jetpack Compose, но на самом деле применимо везде.
Читать (En)
👍7❤1🔥1
Exploring Kotlin’s Context Receivers
Еще одна отличная статья с подробным разбором фичи Context Receivers в Kotlin и примерами использования.
Читать (En)
Еще одна отличная статья с подробным разбором фичи Context Receivers в Kotlin и примерами использования.
Читать (En)
👍11🔥1👨💻1