Как стать автором
Обновить
13
Карма
4.2
Рейтинг

Пользователь

Combine: часть 1. Погружение в реактивное программирование

Спасибо за вопросы!)
В Combine есть разделение на горячие/холодные потоки, а также механизмы «ожидания» подписки до выполнения блока кода.
Также есть разные виды паблишеров, по типу эмита событий: one-shot и continuous broadcasting. Для обработки ошибок и дебага тоже есть инструмены, например, операторы .replaceError(), а также .print() и .breakpointOnError().

Ответы на ваши вопросы остались за пределами вводной части, поскольку заслуживают отдельной статьи. Мы их осветим в следующем материале о Combine.

Диспетчеризация в Swift: погружение в теорию и практику

Спасибо за уточнение! Да, Virtual Table и Witness Table тоже работают в рантайме. А пример с протоколом, возможно, для некоторых разработчиков будет считаться и фичей. Но чаще разработчики ошибаются в этом и получают неожиданный результат

Диспетчеризация в Swift: погружение в теорию и практику

Добрый день! Хоть и с запозданием, отвечаем :) Объект (в данным случае структура) будет реализовывать Witness Table соответственно. Но переменные, которые относятся именно к самой структуре, будут по-прежнему реализоваться с Direct Dispatch. Соответственно, у данной структуры будут реализованы Direct Dispatch и Witness Table.

Диспетчеризация в Swift: погружение в теорию и практику

Да, совершенно верно, отредактировали статью.

Сравниваем готовые решения для реализации MVI-архитектуры на Android

Согласны, что простые решения на определённых проектах лучше. Например, Koin на небольших проектах гораздо легче чем Dagger. А иной раз достаточно и использования Service Locator. Исходя из нашего опыта, с ростом размера проекта и команды достоинства сложных решений перевешивают их недостатки.

Инструменты разработчика для тестирования Android-приложений

Добрый день. Подходы к тестированию могут быть разными в зависимости от команды и проекта. Например, разработчики зачастую пишут юнит-тесты на бизнес-логику для проверки различных граничных случаев, а QA и SDET занимаются более сложными кейсами, интеграционным тестированием и тестированием ui.

Работа с ML Kit в Android: как распознавать штрихкоды

Технологии под каждый проект выбираются с учетом всех его особенностей и требований заказчика. ML Kit разделен на пакеты, нет необходимости включать его в проект целиком. В данном случае для сканирования barcodes подключали только ML Kit barcode scanning.

Работа с ML Kit в Android: как распознавать штрихкоды

Да, это будет правильно, спасибо

Реализуем чистую архитектуру на Flutter с cubit

Мы выбрали этот способ для того, чтобы опираться на абстракцию, а не реализацию при продвижении от "глупых" сущностей (data) к "умным" (ui). Это соответствует составляющей D (dependency inversion) в принципе SOLID. Практическая цель - повышение тестируемости компонентов

Реализуем чистую архитектуру на Flutter с cubit

use_case может как получать, так и сохранять данные. Что касается описания интерфейса, предложенный вами способ тоже выглядит логичным, при этом в примере мы для удобства выбрали другой способ - держать абстракцию и реализацию рядом друг с другом.

Реализуем чистую архитектуру на Flutter с cubit

Как показано на последней схеме, use case находится между presenter и repository, внедрить use case в цепочку можно через инициализацию в presenter'е, такой способ реализован в примере.

Реализуем чистую архитектуру на Flutter с cubit

Согласны, архитектуру в флаттере можно рассмотреть на примере многих приложений, как простых, так и более сложных. Руководство при этом может превратиться в настоящую книгу) Однако, наша основная задача заключалась в том, чтобы познакомить новичков с реализацией чистой архитектуры на практике. А какие приложения выбрали бы вы?

Реализуем чистую архитектуру на Flutter с cubit

Можно вызывать emit сколько угодно раз, при вызове метода из кубита первым действием уведомить UI, вызвав emit(LoadingState()), загрузить данные из интернета, после emit(LoadedState()).

Flutter: открытие виджетов ключами

Предположим, что вам необходимо, чтобы на экране с TabBarView каждый таб мог переходить на новый роут. Для этого можно обернуть каждый элемент TabBarView в Navigator, что позволит переходить по роутам каждому табу, не затрагивая глобальный роут.

TabBarView будет выглядеть следующим образом:

Переход на другие роуты внутри таба будет происходить так же, как обычно

То, чего нам так не хватало: Render Effect в Android 12

Вы правы, Render Effect перерисует соседние элементы. При этом анализироваться будет вся иерархия UI, но не обязательно при этом будет перерисована вся сцена.

Фоновая работа в Android: обзор возможностей WorkManager

Фоновая работа в Android: обзор возможностей WorkManager

Спасибо, рады, что статья полезна)

Мобильное API, лайфхаки для MVP, микросервисы – в программе Hot Mobile&Backend в Санкт-Петербурге

Добрый день!
Доклады начнутся в 11:00, каждый из них займет около 25 минут + 10 минут ответы на вопросы. В 13:30 будет кофе-брейк – около получаса, после этого – доклад-дискуссия. Доклады по мобильной разработке и Backend будут проходить в разных залах – «Библиотека» и Brandroom

Как реализовать таб-бар с нестандартной кнопкой: CAShapeLayer и UIResponderChain

Спасибо, проверку действительно стоит делать отдельно для каждого слоя, при этом она находится в правильном месте, так как на момент проверки обновленный слой уже должен быть создан

Как реализовать таб-бар с нестандартной кнопкой: CAShapeLayer и UIResponderChain

Если нажать на круглую кнопку чуть выше границы таб-бара, ничего не произойдет (а мы хотим, чтобы был выбран соответствующий tabBarItem и поменялся ViewController)

Можно, конечно, ограничиться добавлением экшена для кнопки, но тогда не будет обрабатываться касание на выступающей вверх области кнопки.

Мы добавили в статью ссылку на проект на GitHub. Можно закомментировать переопределенный метод point(inside:with:) в классе CustomTabBar и проверить, как это будет работать без UIResponderChain
1

Информация

В рейтинге
690-й
Работает в
Зарегистрирован
Активность