Telegram Web Link
Как уменьшить время прогона тестов в два раза

Команда приложения Qonto, у которого написано 9.000 тестов, на прогон которых уходит 19 минут, поделились рекомендациями, которые помогли им срезать время прогона в два раза. В основном все крутится вокруг оптимизации генерации моков библиотеки SwiftyMocky.
Кейс адаптации приложения под visionOS

David Smith рассказывает, как он поэтапно адаптирует одно из своих приложений под visionOS, экспериментируя с различными подходами к его дизайну.
Как выбирать имена ключам UserDefaults

Автор поста пишет про частую практику, которую я тоже замечал – добавлять к названиям ключей UserDefaults префикс с Bundle ID приложения. На самом деле, это не имеет практически никакого смысла – plist с этими настройками уже лежит в папке с вашим Bundle ID.

Совет очевидный, но к статье накидали интересных комментов, когда коллизии все-таки возможны:

- Когда вы шарите UserDefaults с каким-то экстеншном.
- При использовании ключей, которые в UserDefaults сохраняет SwiftUI или AppKit.
- При использовании библиотеки, которая втихую пишет что-то в UserDefaults со своими ключами.
Рекомендации по работе с OSLog

Статья с рекомендациями по организации работы с OSLog:

📐Выравнивание данных с помощью alignment APIs
🌡️Уровни логирования и их визуализация
🔎Разные фичи Console.app
Инструкция по чекауту SPM зависимостей в репозиторий проекта

По умолчанию SwiftPM, в отличие от CocoaPods, не скачивает все зависимости прямо в папку проекта. Из-за этого на CI тратится значительно больше времени. В статье разбирается, как написать скрипт, который будет клонировать нужные зависимости в репозиторий, с минимизацией потребляемого места на диске.
Swift Macro Toolkit

Набор хелперов, которые упрощают написание макросов. Например, позволяют не писать вручную обработку всех возможных представлений чисел с плавающей точкой (вдруг в макросе кто-то захочет использовать число -0xF_ep-0_2).
Исследование продуктовых дизайнеров

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

Вот прямо сейчас мы заканчиваем наш первый опрос продуктовых дизайнеров про то, чем они занимаются на работе, какие навыки прокачивают, как используют AI и за кем в сообществе следят. Чтобы результаты были репрезентативными, хочется получить как можно больше ответов. Если в вашей текущей или бывшей команде есть продуктовые дизайнеры – я буду очень благодарен, если вы пошарите им ссылку на опрос! Результаты я потом тоже обязательно в канал выложу.
Законы UX

Список из 21 правила, которых стоит придерживаться при разработке интерфейсов. Каждое подкреплено ссылками на исследования.

🏎️Doherty Threshold – Пользователь воспринимает свою производительность оптимальной, если реакция на его действия не превышает 400мс.
🎯Fitt's Law – Время на то, чтобы прицелиться во что-то – функция от размера и удаленности цели.
🤔Jakob's Law – Пользователь проводит большую часть времени в других приложениях, поэтому для него будет идеально, если ваше приложение не будет от них отличаться.
⛰️Peak-End rule – Люди запоминают не весь опыт работы с чем-то, а его самый пиковый момент и самый последний.
Какие API теперь нельзя использовать без разрешения от Apple

Apple закручивают гайки для приложений, которые пытаются использовать различные косвенные признаки, чтобы идентифицировать пользователя или его девайс. Начиная с этой осени, нельзя использовать следующие API без объяснения причин:

- UserDefaults
- File timestamp
- System boot time
- Disk space
- Active keyboard

Конечно, горит у всех именно от первого пункта – запретить использовать UserDefaults, которые есть в каждом приложении, это сильно.

Список еще не финальный и будет постепенно пополняться🤷‍♂️
Интересные решения Swift Runtime

Swift Runtime – это С++ библиотека, которая реализует внутренние механизмы работы языка. Например, логику управления памятью и работы с типами. В статье разбирается, в какой момент и какие выховы к ней появляются в вашем проекте, и то, как реализованы некоторые интересные фичи в ней.
TipKit – фреймворк для организации онбординга

В новой бете Xcode появился фреймворк TipKit, про который была ровно одна сессия на WWDC. С его помощью можно создавать подсказки по использованию вашего приложения. Работает на всех платформах, а статус просмотра подсказок синкается через iCloud. В статье разбирается, как верстать подсказки, настраивать правила отображения и дебажить их.
Почему рендеринг текста – это сложно

Отличная статья, про то, из каких элементов вообще состоит текст, почему все браузеры и другие графические движки чаще всего рендерят его неправильно, и с какими эзотерическими проблемами можно столкнуться.
Оптимизация памяти при работе с JPEG

При работе с растровыми изображениями можно сэкономить объем потреьляемой памяти путем конвертации RGB в YUV и последующих оптимизаций. Проблема в том, что UIImage не дает из коробки всех нужных API. Разработчик Телеграма рассказывает в статье о том, как обойти ограничения и сэкономить 50% потребляемой памяти.
Как настроить CodeQL для Swift на GitHub

С недавних пор встроенный в GitHub сканер уязвимостей CodeQL поддерживает и Swift. Если в вашей кодовой базе появляются какие-то проблемы вроде потенциальных SQL инъекций, сканер предупредит об этом на PR. В заметке – инструкция, как его правильно настроить.
Серия статей про кишки Objective-C

Отличные статьи про дизайн и реализацию некоторых особенностей Objective-C. Например, про tagged pointers, non-fragile instance variables и associated references.
Примеры использования TipKit

Опенсорсное приложение, в котором реализованы разные виды подсказок на TipKit.
Шифрование файлов в бандле с помощью Swift плагина

В статье разбирается, как написать простой Swift плагин, который будет шифровать все файлы в определенной папке с помощью уникального ключа, усложняя доступ к ним для тех, кто решит разобрать ipa файл.
Composable Architecture 1.0

Спустя три года разработки и 983 PR'а вышла первая версия TCA. Ключевое изменение, в результате которого библиотека стала стабильной – добавление навигации. В дальнейших планах – интеграция новых фичей Swift 5.9, включая макросы и Observable.
Как SwiftData сохраняет изменения

Одно из отличий SwiftData от Core Data – то, что изменения сохраняются автоматически. Это происходит либо по событиям изменения жизненного цикла приложения, либо по таймеру. В остальном ручное сохранение изменений и индикация об изменениях в объектах работают похожим на Core Data образом.
2024/09/29 16:26:44
Back to Top
HTML Embed Code: