iOS Broadcast
Очень интересный пример, почему Combine актуален даже в мире Swift Concurrency. При миграции на Swift 6 включаются проверки на потенциальные проблемы с многопоточностью и работа с NotificationCenter требует обеспечения явной потокобезопасности. Эту ошибку легко исправить с Combine, интеграция с NotificationCenter у которого давно реализована:
🔵 Объединяем 3 паблишера в один поток данных
🔵 Явно указываем что хотим получать ивенты в главном потоке
🔵 Не забываем про то что assign захватывает сильной ссылкой и либо добавляем
Publishers.MergeMany
receive(on: DispatchQueue.main)
[weak self]
либо вспомогательную функцию weakAssign
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7👍1
Опубликовали записи с конференции SwiftConnection, мой топ 8:
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
10👍5❤1
Замеряем производительность iOS
В прошлом году появилось новое приложение Threads, которое стало самым быстрорастущим в истории, набрав 100 миллионов пользователей за пять дней. Сегодня число пользователей превышает 200 миллионов в месяц. Команда разработкт выросла с небольшой группы опытных инженеров до более чем сотни разработчиков. Перед командой стояла непростая задача, создать и сохранить ощущение быстродействия приложения для наилучшего первого пользовательского опыта. Команда выделила 4 метрики производительности, над которыми они сфокусировались:
🟢 FIRE. Задержка отрисовки изображений. Он показывает, сколько людей не смогли загрузить картинку
🟢 TTNC. Время до завершения запроса. Показывает, как быстро загружается новая лента
🟢 cPSR. Он показывает, как часто людям удаётся загрузить картинку, текст или видео
🟢 Задержка навигации. Это важно для удобства пользователей. Чтобы её измерить, они провели отдельный тест.
Люблю читать статьи от бигтеха, в них часто есть практики которые привычны для корпорации но не очевидны рядовым разработчикам. Мне показались эти метрики важными для формирования пользовательского опыта, но мало кто думает о них при запуске приложения стартапа новой соц. сети
В прошлом году появилось новое приложение Threads, которое стало самым быстрорастущим в истории, набрав 100 миллионов пользователей за пять дней. Сегодня число пользователей превышает 200 миллионов в месяц. Команда разработкт выросла с небольшой группы опытных инженеров до более чем сотни разработчиков. Перед командой стояла непростая задача, создать и сохранить ощущение быстродействия приложения для наилучшего первого пользовательского опыта. Команда выделила 4 метрики производительности, над которыми они сфокусировались:
Люблю читать статьи от бигтеха, в них часто есть практики которые привычны для корпорации но не очевидны рядовым разработчикам. Мне показались эти метрики важными для формирования пользовательского опыта, но мало кто думает о них при запуске приложения стартапа новой соц. сети
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
Очередная пятница, очередная статья "на подумать". Ситуация: продакт просит внедрить функции X, Y и Z в систему. Команда самоорганизуется и реализует проект. В итоге попадаем в ситуацию:
Чья вина такого исхода?
Причина, по которой произошел описанный выше сценарий "программист не виноват", заключается в том, что инженеры слишком сосредоточились на поставленной перед ними непосредственной задаче, в то время как им следовало бы сосредоточиться на проблеме, стоящей за этой задачей, задавая себе такие вопросы, как:
На мой взгляд, инженер любого уровня должен задаваться вопросом, а зачем я делаю эту задачу. Техническое совершенство кода не дает хороший пользовательский опыт, а продакт не всегда знает как можно решить ту или иную задачу. Я убежден что нужно подключаться к проработке задач и подходить к своей работе осознанно. Или это не проблема инженера?)
Please open Telegram to view this post
VIEW IN TELEGRAM
Swiftrocks
Focus not on the task, but on the problem behind the task
Being able to look at the bigger picture is critical when writing code. In this post, we'll take a brief look at what this means and how you can do it.
👍5
Реализуем UICollectionViewFlowLayout в SwiftUI
Гибкое размещение элементов в зависимости от их размера и дисплея не тривиальная задача, с которой мы встречаемся довольно часто. В UIKit это реализовывалось в UICollectionView через FlowLayout. В SwiftUI в
Гибкое размещение элементов в зависимости от их размера и дисплея не тривиальная задача, с которой мы встречаемся довольно часто. В UIKit это реализовывалось в UICollectionView через FlowLayout. В SwiftUI в
iOS 16
появился протокол Layout
. В статье детально разбирается реализация аналогичного Layout
для тех у кого минимальный таргет ниже iOS 18
. Для тех у кого выше, можно сделать еще проще. Так же в статье рассматриваются вопросы необходимости оптимизации производительности👍2
Ежегодно, App Store Awards отмечаются самые лучшие и популярные приложения в App Store, а также их разработчики. 45 финалистов в 12 различных категориях.
На мой взгляд, AppStore "фичиринг" и особенно награды это неформальный способ коммуникации Apple с сообществом о том, что ценится в приложении. Что я заметил:
Есть исключения, но 2/3 критериев всегда удовлетворены.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM