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

TGINSIGHT SIMILAR POSTS

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

Изходен канал @clockstackwheels · Post #247 · 11.03

Попробовали на работе предметно-ориентированное проектирование (Domain Driven Design). Это такой способ построения архитектуры, когда ты (чаще всего с помощью системы типов и ООП) описываешь физическую суть вещей, которые представлены в твоей программе. Например, если в программе есть объект "Книга", то её нужно снабдить свойствами, которые бывают у книг в реальности: число страниц, автор, язык, тип обложки и т.д. При этом данные свойства должны быть такими, чтобы присвоить им нереалистичные значения было нельзя. Допустим, число страниц не может быть отрицательным (и скорее всего в реальном мире не может быть нулём). При попытке установить отрицательное число страниц программа должна выбросить исключение. А совсем в идеальном случае -- не дать этого сделать программисту на уровне статического анализа кода. Описав все свойства книги, вы снабжаете её операциями, которые над ней можно сделать. Например, из книги можно вырвать страницу, и при этом число страниц уменьшается. Нет такого случая, когда можно вырвать страницу без изменения числа страниц. Вы строго программируете эту зависимость, делаете у книги метод "Вырвать страницу", а он уже уменьшает число. Кстати, свойство "Число страниц" при этом нельзя переназначить в уже созданной книге. Можно только создать книгу, передав в её конструктор (так называется в программировании функция создания объектов) заданное число страниц. Но поменять число страниц можно только специальными методами "Вырвать страницу" и "Вклеить страницу". С помощью этого подхода вы гарантируете, что ваши объекты всегда находятся в валидном состоянии -- то есть таком, которое возможно в реальной жизни с объектом, представленным программой. Плюсы подхода очевидны: меньше число ошибок. Код описывает сам себя, и программист, если не лезет внутрь объекта "Книга", вообще не сможет сделать с книгой ничего недопустимого. Минусы, думаю, тоже понятны: изначально проектировать сложнее, нужно учесть много нюансов, писать тесты. Время разработки изрядно растёт. Изменение требований даётся дороже: например, если каким-то образом в ваш книжный магазин поступят книги со страницами из кевлара, которые невозможно вырвать :) Но первый проект с этим подходом мы сдали хорошо, без багов. Лучше, чем многие предыдущие. #dev

Hashtags

Резултати

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

Търсене: #androiddev

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

@android_broadcast · Post #9972 · 24.04.2026 г., 11:32

🤖Credential Manager теперь умеет отдавать верифицированный email без OTP Google начала выпускать криптографически верифицированные email credentials прямо на Android-устройства. Получить их можно через Credential Manager API, который реализует стандарт W3C Digital Credentials API. Механика простая: пользователь тапает "Sign up" или фокусируется на поле ввода email, появляется нативный bottom sheet с описанием запрашиваемых данных, один тап на "Agree and continue" - и приложение получает верифицированный адрес мгновенно. Никакого перехода в почту, никаких кодов. Три сценария, где это применимо: 👉 Регистрация - вместе с получением email сразу инициировать создание passkey 👉 Восстановление аккаунта - больше не нужно искать письмо с recovery кодом в спаме 👉 Step-up аутентификация - для подтверждения чувствительных действий без OTP ‼️ВАЖНО: верифицируется только email. Имя, фамилия, фото профиля доступны, но не верифицированы. Поддерживаются только личные аккаунты. #Android#AndroidDev

Android Broadcast

@android_broadcast · Post #9962 · 20.04.2026 г., 05:40

Android инструменты для отладки в терминальном интерфейсе, для тех кто решил отказаться от IDE 🐱Holo #Android#AndroidDev

Android Broadcast

@android_broadcast · Post #9960 · 17.04.2026 г., 09:34

🤖Google выпустила Android CLI — новую командную строку для Android-разработки, которая умеет работать не только с человеком, но и с AI-агентами: Gemini CLI, Claude Code, Codex, Antigravity и любыми другими. По замерам Google, в агентных сценариях CLI тратит на 70% меньше токенов на setup проекта и окружения и выполняет типовые задачи в 3 раза быстрее, чем когда агент разбирается через стандартные инструменты. Цифры от вендора, но механика понятная: один вызов android create вместо длинной цепочки команд. Основные команды: 👉android sdk install — ставит только нужные компоненты SDK 👉android create — создание проекта из официальных шаблонов с актуальной архитектурой 👉android emulator и android run — работа с виртуальными девайсами и запуск приложения 👉android skills — подключение SKILL.md инструкций для агента: Navigation 3, edge-to-edge, миграция AGP 9, XML в Compose, анализ R8 👉android docs — доступ к актуальной документации Android, Firebase и Kotlin в обход устаревшего training cutoff модели 👉android update — обновление самого CLI Установка curl -fsSL https://dl.google.com/android/cli/latest/darwin_arm64/install.sh | bash CLI пригодится не только с агентами: Google прямо позиционирует его для CI и скриптовой автоматизации. Похоже, Google серьёзно перестраивает базовый тулинг под реальность, где рядом с разработчиком всегда есть агент. Пошёл пробовать в своих проектах. 🔗Анонс Android Developers Blog #Android#AndroidDev

Android Broadcast

@android_broadcast · Post #9888 · 13.03.2026 г., 06:44

🤖 Google объявила о полноценной поддержке внешних дисплеев в Android (также нужна поддержка со стороны устройства) Я попробовал подключить Pixel 9 Pro к внешнему 4K монитору по Type-C. Итог - зернистость такая, что пользоваться невозможно. В настройках выбрать выше FullHD не дает (возможно, ограничение моего устройства). Приложения можно растягивать как угодно, что порой приводит к проблемам их отображения и они не перестраиваются полностью. Начало хорошее, но очень много работы с разработчиками по адаптации под больши экраны и ресайз на лету. Google дала множества библиотек и руководств по адаптации под большие экраны, а также как работать с несколькими дисплеями. 🔗 Источник - Android Developers Blog #Android#AndroidDev

Android Broadcast

@android_broadcast · Post #9273 · 22.06.2025 г., 08:23

🤖Почему разработчик не контролирует, как выглядят уведомления в системной панели Когда разработчик использует NotificationCompat.Builder для создания уведомлений из Android приложения, может показаться, что прямого контроля на внешний вид нету 🤯 На самом деле формируется не визуальный компонент, а объект данных, который описывает что есть в уведомление. Этот объект — это просто структура, сериализуемая через Parcelable. Он передаётся в системный процесс через Binder — механизм межпроцессного взаимодействия в Android. А вот принимать и интерпретировать этот объект будет специальное системное приложение — SystemUI. Уведомления отображаются не Android сам по себе, а конкретное приложение, которое называется com.android.systemui. И это приложение полностью отвечает за то, как будет выглядеть уведомление. Оно решает, какие поля отобразить, где их разместить, какой стиль применить, как будет выглядеть кнопка, будут ли видны иконки — и многое другое. Часть из данных может игнорироваться. Вот почему одно и то же уведомление может выглядеть совершенно по-разному на разных устройствах и версиях ОС. Один и тот же вызов setContentTitle("Новость") может дать совершенно разный результат на Pixel с чистым Android и на Xiaomi с MIUI. Более того, даже RemoteViews, которые позволяют задавать кастомные layout’ы для уведомлений, могут игнорироваться или ограничиваться прошивками производителей. Именно по этой причине я не люблю когда в уведомления вставляют Custom View, который выбивается из стиля и часто портит визуал системы и поведение. Мечтаю чтобы его поскорее запретили в Android. Пожалуйста, хотя бы в Android 17 🙏 Запомните ‼️ Уведомление в Android — это не UI объект, это контракт между приложением и SystemUI, который интерпретируется, а не исполняется дословно. Поэтому пишите уведомления так, чтобы они были понятны системе, а красоту UI вы можете контролировать только внутри вашего приложения. #android#androiddev

Android Broadcast

@android_broadcast · Post #8756 · 05.03.2025 г., 12:18

Пример App Widget из Tier 1 👉 Персонализированы (работают с Material You) 👉 Используют всё доступное место 👉 Следуют лучшим практикам размещения компонентов 👉 Полезные для пользователя #android#androiddev

Android Broadcast

@android_broadcast · Post #9951 · 14.04.2026 г., 13:00

📱В Android Emulator добавили нативную коммуникацию между эмуляторами Раньше чтобы два эмулятора увидели друг друга по сети, надо было руками прописывать port forwarding. Каждый эмулятор жил в своей изолированной виртуальной песоцнице. Теперь новый сетевой стек поднимает общий виртуальную сеть для всех запущенных инстансов на одной машине — до 4 эмуляторов одновременно. Wi-Fi Direct и Network Service Discovery (NSD) работают из коробки, ничего настраивать не нужно. Это вписывается в то, что Google активно делает последние пару лет: передача звонков между устройствами, кросс-девайсные сессии, Wear OS, Android Auto, XR-очки. Весь этот функционал раньше можно было нормально проверить только на реальных девайсах. Теперь это можно делать прямо в эмуляторе. Для использования надо Andorid Emulator версии 36.5 или новее 🔗 Источник - android-developers.googleblog.com #AndroidDev#AndroidStudio

Android Broadcast

@android_broadcast · Post #9984 · 07.05.2026 г., 05:26

🚀 Вышел Jetpack Paging 3.5.0 где добавили возможность получения данных как StateFlow // В ViewModel val pager = Pager(pagingConfig, pagingSourceFactory) val pagerFlow: Flow<ItemSnapshotList> = pager.flow.asState() // Пример в Compose val snapshotFlow = viewModel.pagerFlow.collectAsStateWithLifecycle(initialList) val snapshot = itemsFlow.value LazyColumn { items(items = snapshot.items) { ... } } Также появилась возможность явно вызвать загрузку новых страниц через методы append() и prepend(), а также refresh() и retry() LazyColumn { item { LaunchedEffect(viewModel) { viewModel.prepend() } } items(snapshot.items) { item -> Text("Item: $item") } item { LaunchedEffect(viewModel) { viewModel.append() } } } Кажется, что сделали жизнь проще, но мой опыт с Paging всегда упирался в проблемы кэширования и удобной работы в Data слое. Всегда считал эту библиотеку архитектурно неудачной и ждал когда же ее переделают полностью. #Android#Jetpack#AndroidDev

Android Broadcast

@android_broadcast · Post #9767 · 18.12.2025 г., 10:42

🚀Jetpack Ink 1.0 стабильна! Библиотека для работы с рукописным вводом и графикой Google выпустил стабильную версию Jetpack Ink 1.0 — библиотеку для создания продвинутых функций рукописного ввода (inking) и рисования в Android-приложениях. Это многомодульная библиотека, которая обрабатывает цифровые штрихи (strokes) от ввода (стилус или палец) до их показа. Она предоставляет все необходимые инструменты для создания реалистичного и отзывчивого опыта письма или рисования. 👨‍💻 Кому будет полезна? 👉 Разработчикам приложений для заметок, скетчей, цифровых подписей. 👉 Образовательным приложениям, требующим аннотирования документов или изображений. 👉 Любому продукту, где нужен реалистичный, выразительный пользовательский ввод поверх контента. Библиотека берет на себя сложности обработки графики, физики мазков и обработки жестов, позволяя легко добавить профессиональные функции рисования. #Jetpack#AndroidDev#Android

Android Broadcast

@android_broadcast · Post #9691 · 25.11.2025 г., 12:44

🤖 Отлаживайте фоновые задачи в Android Studio как профи: Background Task Inspector для WokrManager Работаете с WorkManager? Тогда вам точно пригодится встроенный в Android Studio инструмент — Background Task Inspector. Это ваш главный помощник для визуального мониторинга и отладки фоновых задач. Что вы видите в инспекторе: - Все WorkManager задачи в одном месте - Текущие статусы: Running, Enqueued, Failed, Succeeded - Детальную информацию о каждом воркере Особенно мощно инструмент работает с цепочками задач: // Например, у вас есть такая цепочка: val workA = OneTimeWorkRequestBuilder<CleanupWorker>().build() val workB = OneTimeWorkRequestBuilder<WaterColorFilterWorker>().build() val workC = OneTimeWorkRequestBuilder<BlurEffectFilterColor>().build() workManager .beginWith(workA) .then(workB) .then(workC) .enqueue() Визуализация графа выполнения покажет: - Какая задача завершилась успешно (Succeeded) - Какая упала (Failed) и почему - Как это повлияло на последующие задачи Типичный сценарий отладки: Видите статус «Enqueued»? Значит задача в очереди, но не запускается. Возможные причины: - Ограничения не выполняются (нет сети, не заряжается устройство) - Предыдущая задача в цепочке не завершилась - Достигнут лимит параллельных задач Преимущества использования: - Экономия времени на логирование и отладку - Наглядное представление сложных цепочек задач - Быстрая диагностика проблем с выполнением фоновых операций Инструмент уже ждет вас в Android Studio → View → Tool Windows → App Inspection → Background Task Inspector. #AndroidStudio#Android#AndroidDev

Android Broadcast

@android_broadcast · Post #9711 · 02.12.2025 г., 21:14

🤖Android 16 QPR2 вышел — первый минорный релиз SDK с новыми API! Google выпустил Android 16 QPR2 — первое минорное обновление платформы, которое приносит новые функции без ломающих изменений. 🔧Новый подход к версиям SDK Теперь можно проверять минорные обновления через новые поля в Build: if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.BAKLAVA && Build.VERSION.SDK_INT_FULL >= Build.VERSION_CODES_FULL.BAKLAVA_1) { // API из QPR2 } Ключевые изменения: 👉Расширенная темная тема — система автоматически инвертирует интерфейс для доступности 👉Пользовательские формы иконок — пользователи могут менять форму всех иконок 👉Интерактивный шеринг — обновление контента в реальном времени в превью шаринга 👉Новый сборщик мусора — снижает нагрузку на CPU Каждую фичу разберем подробнее в следующих постах! Подписывайте на @android_broadcast, чтобы не пропустить #Android16#AndroidDev#Android

Android Broadcast

@android_broadcast · Post #9440 · 22.08.2025 г., 14:55

🤖 Пример работы расширенной темной темы с Compose приложением. Тут придется темную делать сам, так как настройка не повлияла #android16#android#androiddev

123•••56
ПредишнаСтр. 1 от 6Следваща