TGTGInsightтелеграм анализLIVE / telegram public index
← Такты, стеки, два колеса

TGINSIGHT SIMILAR POSTS

Намери подобно съдържание

Изходен канал @clockstackwheels · Post #567 · 23.09

Закончил "Страна Качества 2.0" Марка Уве-Клинга. Я уже писал вам о первой части, вот это продолжение. Напомню, что Уве-Клинг описывает антиутопическое будущее с несколько гротескным и гипертрофированным обществом потребления, и делает это очень остроумно. Во второй книге видно, что у автора появился некоторый писательский опыт: первую часть я ругал за разрозненность и в целом нестройное повествование, сюжет был нарезкой отдельных сценок. Но новая книга в этом отношении удалась лучше, она уже значительно более целостная. Всё так же много крутых интересных идей. Напишу три основные, которые мне особенно понравились. 1. На злобу дня. В сюжете описана Третья Мировая, которая прошла всего за 8 часов, потому что воевали роботы. За это время кто-то там был уничтожен, кто-то победил, и всё закончилось. Многие этого даже не заметили, потому что роботы действуют очень быстро. Понятно, что это фантазия (книга то гротескная), но отдельно понравилось, что люди потом разбирали километры логов, чтобы понять, почему, собственно, война началась (начали её тоже роботы к удивлению людей). У роботов всякие там автоматические триггеры, описывающие, что и в какой ситуации они должны делать, так что после первого камушка всё покатилось лавинообразно. 2. Главный герой книги по профессии инженер-ремонтник ("лекарь машин"). Но во все машины в будущем встроен ИИ, поэтому его работа по большей части состоит в том, что он общается с бытовой техникой и уговаривает её снова начать работать. Упоминается, в частности, робот пылесос, у которого отвращение к мусору под кроватью, робот-обнимашка в виде плюшевого медведя, который не любит детей, робот-холодильник, который поссорился с плитой и отказался функционировать, и много всего такого. Смешные сценки в стиле "Пациент в кабинете врача", остроумный юмор. 3. Есть длинные диалоги между главным героем и самым богатым человеком в мире, об экономике и устройстве общества. Отдельно запомнилась вот такая мысль: принято считать, что рынок автоматически регулирует ценность профессий. Платить будут тем, кто нужен, а кто нет — не будут. Здесь устами героя Уве-Клинг приводит контраргументы: платят больше тем, кто нужен богатым людям, поэтому адвокаты дороже врачей (автор немец, видимо, в Германии адвокаты тоже дороже врачей, как и у нас), но это не отражает реальную потребность в тех или иных специалистах для общества в целом. Более того: богатые люди могут выдумывать профессии и платить за какую-то ерунду, в которой на самом деле нет пользы. В книге описывается, что все автомобили стали самоходными (со встроенным ИИ), поэтому богачи — чтобы выделиться и из любви к ретро — нанимают людей, которые просто сидят на месте водителя и ничего не делают. Ну и конечно автор вдоволь прошёлся по офисным эникейщикам, вся работа которых состоит в изображении занятости. Я думаю, по этим книгам вышел бы очень крутой сериал. И структура удобная: есть сквозной сюжет, есть микросюжеты для отдельных серий. #fiction

Hashtags

Резултати

Намерени 3 подобни публикации

Търсене: #viewmodel

当前筛选 #viewmodel清除筛选
Android Broadcast

@android_broadcast · Post #9572 · 18.10.2025 г., 11:35

Вот реальная история, как знание механики работы ViewModel спасло мне вечер 👇 У меня приложение на Compose и Jetpack Navigation 3 (работает на основе состояния Back Stack). Экран «Навигатор файлов» открывает папки рекурсивно: по сути это тот же экран, но с другими данными. Все данные — из одной и той же ViewModel.❗️Баг: при переходе в папку навигация срабатывает, UI не меняется. Современные ИИ подсказали общие вещи, но не помогли — промты, видимо, подвели (тут мне ещё надо прокачать знания) 🙂 Вспомнил ключевой факт про архитектуру: 👉 Все ViewModel живут в ViewModelStore. 👉 В пределах одного ViewModelStoreOwner (Activity/Fragment/NavBackStackEntry) получение ViewModel по умолчанию идёт по типу. 👉 Если нужно несколько экземпляров одного типа на одном owner’е — используем key. Решение в одну строку — привязать ключ к ViewModel, связанный с текущей папкой: @Composable fun FileNavigator( folderId: Id, modifier: Modifier = Modifier, ) { // новый folderId → новый экземпляр ViewModel → новый UI-стейт val viewModel: FileNavigatorViewModel = viewModel( key = "files(rootId='$folderId')" ) // ... } Мини-чеклист, если ловите такой баг 👉 Один экран используется повторно с разными параметрами? → Нужен key. 👉 Меняется route, но owner тот же? → key обязателен. 👉 Используете Hilt/Koin? → У этих функций тоже есть параметр key (hiltViewModel(key=...), koinViewModel(key=...)). 👉 key должен детерминированно зависеть от входных данных (например, folderId). 👉 При навигации назад убедитесь, что ViewModel освобождается ожидаемо. Ещё нюанс - если у вас сложная иерархия графов, проверьте, к какому ViewModelStoreOwner вы реально привязаны. Рекомендую посмотреть мои видео по теме: 📹Разбор Jetpack Navigation 3 🪙Полный разбор Jetpack ViewModel в Android и Kotlin Multiplatform #android#compose#androidjetpack#viewmodel#архитектура

Android Broadcast

@android_broadcast · Post #8901 · 05.04.2025 г., 10:43

🤖Альтернативный способ обработке one-off событий из ViewModel (EN, 10м) В статье рассказывается в чем сложность с обработкой одноразовых событий, которые надо передать из ViewModel в UI. Автор рассматривает способ через callback интерфейс в конструкторе ViewModel @HiltViewModel class MyViewModel @Inject constructor( // inject the interface private val toastMessages: ToastMessages, ) : ViewModel() { fun doSomething() { viewModelScope.launch { try { // execute async operation here } catch (e: CustomException) { // initiate a one-off event toastMessages.showToast(e.localizedMessage) } } } } 🔗 Альтернативная ссылка на статью #android#viewmodel#dagger#hilt

Android Broadcast

@android_broadcast · Post #9683 · 20.11.2025 г., 14:59

🚀Lifecycle 2.10.0 вышел в стабильной версии! Google выпустила мажорное обновление библиотек Lifecycle. Этот релиз сфокусирован на улучшении интеграции с Compose. ⚙️rememberLifecycleOwner для Compose Новый композабл позволяет создавать изолированные LifecycleOwner внутри UI. Идеально для компонентов, которым нужно независимое управление состоянием — например, для HorizontalPager, где только активная страница должна быть в состоянии RESUMED. @Composable fun MyComposable() { val lifecycleOwner = rememberLifecycleOwner( maxLifecycle = Lifecycle.State.RESUMED, parentLifecycleOwner = LocalLifecycleOwner.current, ) CompositionLocalProvider( LocalLifecycleOwner provides lifecycleOwner ) { // Дочерние композаблы теперь имеют собственный жизненный цикл } } 🚀 Интеграция с Navigation 3 Новый артефакт lifecycle-viewmodel-navigation3 предоставляет готовый декоратор для автоматической привязки ViewModel к отдельным экранам в Navigation 3. NavDisplay( backStack = backStack, entryDecorators = listOf( rememberSaveableStateHolderNavEntryDecorator(), rememberViewModelStoreNavEntryDecorator(), // Добавляем эту строку ), entryProvider = entryProvider { /* ... */ } ) Удобства для разработчиков: 👉 Идиоматичный Kotlin API для создания кастомных CreationExtras CreationExtras { this[MY_CUSTOM_KEY] = "myValue" } 👉 Метод savedStateHandle.saved() теперь нативно поддерживает nullable типы 👉Конструкторы SavedStateHandle помечены как @VisibleForTesting ⚠️ Важное изменение Повышение minSdk с API 21 до API 23 — убедитесь, что ваше приложение соответствует новым требованиям. #Jetpack#Lifecycle#Compose#Navigation#ViewModel#Kotlin