@android_broadcast · Post #8794 · 13.03.2025 г., 11:04
Сравнение Dagger 2, Dagger Hilt и Koin (4м) Быстрый рассказ про популярные DI для Android. Полезно тем, кто выбирает свой первый DI или сомневается в выборе #android#di
TGINSIGHT SIMILAR POSTS
Изворен канал @pythonotes · Post #22 · 19 јан.
Заметка начинающим, которые часто сталкиваются с подобной непоняткой. Ситуация следующая, есть список файлов: names = [ 'image.bmp', 'second.txt.bkp', 'data.db', '.config.cfg', 'file.ext.bkp' ] И мы хотим убрать у них окончание ".bkp". Не знаю зачем, пример довольно надуманный) Но суть он показывает, а это главное. Те, кто еще не очень знаком с библиотекой os.path или pathlib, вероятно решат обработать имена как строки. И тут вполне подойдет метод строки strip(). Что делает этот метод? Он отрезает указанные символы по обеим сторонам строки. Если ничего не указать, то убирает невидимые символы (пробелы, табуляции и переносы строк). В нашем случае будет выглядеть вот так: >>> name.strip('.bkp') То есть просим удалить строку '.bkp' по краям имени файла, если таковая есть. Можно применить аналогичный метод rstrip(), чтобы отрезать только справа, но для этого примера используем обычный. >>> for name in names: >>> print(name.strip('.bkp')) image.bm second.txt data.d config.cfg file.ext Хм, что-то не то с нашими именами! Что случилось??? Видим нежелательное переименование в именах, где и близко не было указанной строки '.bkp' А дело всё в том, что данный метод ищет не указанную строку, а указанные символы, и не важно в каком порядке. Для метода strip() строка '.bkp' это не паттерн для поискаа список символов. Потому он отрезал симовол 'p' от '.bmp' и удалил точку из файла '.config.cfg'. Как тогда правильно заменить именно паттерн? Для начинающего можно посоветовать метод строки replace(), который как раз использует для замены указанную строку целиком. В нашем примере заменим её на пустую строку. >>> for name in names: >>> print(name.replace('.bkp', '')) image.bmp second.txt data.db .config.cfg file.ext Уже лучше, но помните, это лишь пример про strip(). Для работы с именами файлов есть способы и более "правильные", дающие однозначно верный результат. Я взял файлы только в качестве примера. Даже replase() тут может сделать не то что ожидаем. Просто впредь будьте внимательны с этим strip(). #basic
Hashtags
Пребарај: #di
@android_broadcast · Post #8794 · 13.03.2025 г., 11:04
Сравнение Dagger 2, Dagger Hilt и Koin (4м) Быстрый рассказ про популярные DI для Android. Полезно тем, кто выбирает свой первый DI или сомневается в выборе #android#di
@android_broadcast · Post #9349 · 21.07.2025 г., 12:06
🤯Команда Anvil решила прекратить развитие проекта в пользу другого решения Anvil - Kotlin плагина для расширения возможностей Dagger 2 и упрощения работы с ним решили прекратить развивать. Коллега автором решения сделал Metro и компания будет переходить на него и участвовать в его развитии. Metro - это compile-time DI фреймворк с поддержкой KMP, который вдохновлялся Dagger, Anvil, Kotlin-Inject. #di#kmp
@d_wusun · Post #5752 · 06.03.2026 г., 11:12
名称:王菲 - 1995年专辑 - Di-dar -Flac 描述:专辑依然受英伦新潮音乐影响深刻,主导专辑方向的幕后主创人员C.Y.KONG、ALEX SAN、张亚东都是钟情英式舞曲的创作新锐,尤其几位香港班底,都是长期与王菲合作的御用人员,之间的默契毋庸赘言。 1. Di-Dar 2. 假期 3. 迷路 4. 暧昧 5. 或者 6. 我想 7. 享受 8. 一半 9. 无题 10. 流星 链接:https://pan.quark.cn/s/62a31f054088 📁 大小:253MB 🏷 标签:#王菲#Di-dar #音乐#无损音乐#猪儿虫
@android_broadcast · Post #9343 · 18.07.2025 г., 18:24
🤯Вышел Dagger 2.57 и из полезных изменений там... НИЧЕГО. Просто работают под капотом. Может над поддержкой KSP, может еще над чем Вам нужен Dagger? #dagger#di
@android_broadcast · Post #9975 · 28.04.2026 г., 06:12
🏝Вышла первая стабильная версия Metro DI — чистого Kotlin-решения с валидацией графа на этапе компиляции. Решение вобрало в себя всё самое лучшее от Dagger, Anvil и kotlin-inject, чтобы стать тем стандартом для KMP-проектов, который искали после Dagger. Metro DI не использует KSP или KAPT. Вся генерация осуществляется с помощью плагина компилятора Kotlin. #Kotlin#KMP#DI
@android_broadcast · Post #8888 · 02.04.2025 г., 06:00
Разработчик из Ozon делится опытом, как организовали с помощью фич языка Kotlin хранилище Dagger-компонентов, доступное из любого модуля, управляющее их жизненным циклом и забравшее другую рутину на себя. #android#dagger#di
@android_broadcast · Post #8823 · 20.03.2025 г., 09:03
Вышел Dagger 2.56 В новой версии Dagger нет новых фичей, а вот то что может сломать код есть 👉 В рамках поддержки Jakarta: удалили старый способ создания Factory (возможно, отвалится код под старые версии Dagger) и больше нельзя использоваться dagger.internal.Provider 👉 В Kotlin исходниках при использовании для multibinding теперь НАДО использовать Set/MAP из kotlin.collections, а не версии из java.util 🛠 Исправили немного багов #di#java
@android_broadcast · Post #8912 · 07.04.2025 г., 06:04
Metro - Новый DI фреймворк на чистом Kotlin (ещё в разработке) @DependencyGraph interface AppGraph { val httpClient: HttpClient @Provides private fun provideFileSystem(): FileSystem = FileSystem.SYSTEM } @Inject class HttpClient(private val fileSystem: FileSystem) @Inject @Composable fun App(circuit: Circuit) #kotlin#di#ksp
@android_broadcast · Post #8910 · 06.04.2025 г., 17:51
Как найти неиспользуемые зависимости в Dagger Component (EN,11м) С помощью Dagger SPI автор написал анализатор графа Dagger c целью поиска неиспользуемых зависимостей и описал подход в статье. Также подход можно использовать для визуализации графа зависимостей, считать разные метрики графа и пр. 🐱Исходный код на GitHub 🔗Альтернативная ссылка #dagger#di#opensource
Hashtags
@android_broadcast · Post #8795 · 13.03.2025 г., 15:41
📺Обзор Kotlin Inject или как будет выглядеть Dagger на Kotlin Multiplatform Обзор библиотеки Kotlin Inject - DI для KMP, API которого аналогично Dagger. В видео происходит демонстрация возможностей, сравнение с другими DI и личное мнение о том стоит ли использовать эту библиотеку в проде. #видео#kmp#di
@android_broadcast · Post #8639 · 05.02.2025 г., 16:15
🤯Не нужно делать инжект всех зависимостей в конструктор Встретил код в проекте: class MyViewModel( ... private val sendDataUseCase: SendDataUseCase, ... ): ViewModel() { // Вызывается, когда пользователь в UI нажмёт на "Send" fun onSendClicked(...) { viewModelScope.launch { sendDataUseCase.invoke(...) // либо sendDataUseCase(...) } } } sendDataUseCase не нужен сразу при создании объекта, а нужен только если пользователь нажмёт на кнопку "Send" в UI, что может и не произойти. Так как эта зависимость нужна в конструкторе, то при получении в DI будет сразу происходить создание этой зависимости, что приводит к ненужной нагрузке. Я рекомендую делать отложенное получение зависимостей с помощью механизма Provider или Lazy. Первый будет ходить за зависимостью в граф каждый раз, а второй - при первом обращении и сохранит её. // При использовании Dagger или Hilt class MyViewModel( ... private val sendDataUseCase: javax.inject.Provider<SendDataUseCase>, // или dagger.Lazy ... ): ViewModel() { fun onSendClicked(...) { viewModelScope.launch { sendDataUseCase.get() .invoke(...) } } } Если вы используете Koin на момент написания поста (актуальная версия 4.0), делать отложенный инжект в конструктор возможности нет: // При использовании Koin class MyViewModel(): ViewModel() { // отложенное получение зависимости в Koin private val sendDataUseCase: SendDataUseCase by inject() fun onSendClicked(...) { viewModelScope.launch { // аналог Provider - получение зависимости каждый раз из графа val sendDataUseCase: SendDataUseCase = getKoin().get() sendDataUseCase.invoke(...) } } } Результат оптимизации ✅ более быстрый старт экранов (зависит от сложности графов) ✅ уменьшение расхода памяти ❌ KOIN потеря явной зависимости в конструкторе. Мне бы очень хотелось увидеть аналог Provider и Lazy в Koin через конструктор, но пока приходится делать свои обертки 😔 #dagger#di#лучшиепрактики
Hashtags
@yxhmd · Post #1638 · 06.05.2023 г., 05:59
中文名: 跳水男孩/DIVE!! 话数: 12 放送开始: 2017年7月6日 放送星期: 星期四 原作: 森絵都「DIVE!!」 (角川文庫刊) 导演: 鈴木薫 ☺️评分:4.8 不过不失 🟢故事简介 “那里,有着只有我才能看见的景色——” 自幼开始一心持续跳水的14岁少年·坂井知季。 最初的开端,是他与比自己大3岁的天才跳水员·富士谷要一的相遇。 知季与伙伴们一起进入水木跳水俱乐部·通称MDC,然而某天,名叫麻木夏阳子的女性以新任教练的身份出现了。 “如果这之中没有人能进入奥运会的话,俱乐部就要解散了” 夏阳子宣告的MDC存续的条件,是如此严酷的事情。 以身体为武器在空中起舞,在这一瞬间赌上全部,少年们热烈而漫长的战斗就此开幕!! 🌐OneDrive:点击下载 🗂百度网盘:点击下载 📁往期番剧汇总表格:打开 🔐解压:blackcatunderthemoon 引索:#T#TS#D#DI 标签:#轻改#运动