Telegram Web Link
Плейлист докладов с конференции Swiftable

Для затравки несколько самых интересных:

🛗Elevated Swift от Soroush Khanlou: решение задачи Кнута о лифте
🧱Platformizing features at Spotify: про компонентную архитектуру огромного приложения
🎨Adopting SwiftUI at scale: про проблемы, которые встретил Bumble при миграции
Питч по добавлению borrow и inout в Swift

- let и var при инициализации копируют значения. Часть копирований оптимизируется компилятором. Но иногда оставшиеся копирования могут повлечь за собой проблемы с производительностью.
- Кроме того, полноценный интероп Swift и C++ принесет новую проблему – нужно будет уметь работать с типами, которые вообще не поддерживают копирования.
- В питче предлагается добавить в язык два новых ключевика – borrow и inout, которые дадут возможность работать со ссылочными типами.
- По ссылке в заголовке – детальный разбор проблем и дизайн предлагаемого решения. Почитать обсуждение питча можно тут.
Как читать ассемблерный код

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

Потренироваться и посмотреть на ассемблерный код программ на разных языках можно с помощью сервиса Compiler Explorer.

Перевод на русский язык
Настройка интерактивных превью для SwiftUI вьюх со стейтом

В статье разбирается несколько способов, которыми можно подключить интерактивные превью в Xcode для вьюх, правильное отображение которых требует передачи стейта.

Основной способ, который рекомендует Apple – завернуть все в отдельную вьюху контейнер, которая будет содержать в себе требуемый стейт. Вот пример такого контейнера, который можно переиспользовать для всех таких случаев.

Перевод на русский язык
DI библиотека от Pointfree

2023 только начался, а уже выпущена новая библиотека для dependency injection – swift-dependencies.

🎨Предназначена в первую очередь для SwiftUI, но может использоваться и во фреймворках или UIKit приложениях.
🛠️Дает возможность оверрайдить как весь граф зависимостей, так и скоуп конкретного модуля.
🧱Уже используется под капотом в ТСА.

GitHub
Документация
Перевод на русский язык
Книга «Software Engineering at Google» стала бесплатной

SWE at Google – довольно популярная книга про хорошие инженерные практики, применяемые на проектах большого масштаба. Я сам до сих пор ее так и не прочитал, но от друзей слышал много хороших рекомендаций. Вон, даже Брагилевский советует!

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

Один из старейших вопросов, которые задают на технических интервью – «Что происходит, когда вы вбиваете в браузере адрес сайта и нажимаете Enter?». Мобильщикам, конечно, его задают реже, чем фронтендерам и бэкендерам, но с какими-то его вариациями легко можно столкнуться.

Автор проекта решил подготовить ультимативный ответ на этот вопрос, и с помощью сообщества собрал максимально подробный гайд, в котором разбирается:

⌨️Как железо обрабатывает нажатия кнопок на клавиатуре
🔀Весь путь сетевого запроса, включая даже то, что происходит на свитче
🤔Детали того, как открываются сокеты

И куча других интересных вещей, часть из которых вам может пригодиться, а часть – просто расширит кругозор.

Перевод на русский язык
Text modifiers в SwiftUI

- Эти модификаторы можно использовать вместе с интерполяцией строк, что упрощает сбор строки с разными стилями.
- Текстовые модификаторы возвращают Text, а не some View, в отличие от обычных модификаторов.
- Если вам часто приходится комбинировать несколько текстовых модификаторов, то можно сделать код чище, вынеся их в отдельную extension функцию.

Перевод на русский язык
Релиз Pulse 3

Pulse – большой продукт, построенный вокруг работы с логами для iOS/macOS приложений. Основная идея – записывать все логи и сетевые запросы и давать удобные инструменты их анализа и фильтрации. В Pulse входят сама библиотека и приложения под все платформы, даже под tvOS.

Основные изменения в новом релизе:

🎨Редизайн встраиваемого в приложение дебажного меню, с упором на более простую навигацию и удобную работу с текстовыми данными
🔒Новый API для фильтрации секьюрных данных на уровне логирования
⌚️Полностью переработанные watchOS и tvOS приложения

Перевод на русский язык
Туториал по make для Swift разработчиков

make – одна из древнейших билд систем, которая упрощает запуск сложных команд в консоли. Ее удобно использовать для автоматизации частых рутинных действий. В статье приводится несколько примеров того, как с помощью make автоматизировать различные задачи, связанные со сборкой, деплоем, тестированием и удалением Swift пакетов.

Перевод на русский язык
Серия статей про работу с внутренними покупками

Автор разбирает все аспекты работы с внутренними покупками на StoreKit, начиная от того, какие соглашения требуется принять, заканчивая разбором техник валидации покупок и возможных статусов ошибок.

Код примера на GitHub
Перевод на русский язык
This media is not supported in your browser
VIEW IN TELEGRAM
xcmonkey – инструмент для monkey-тестирования

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

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

1. Реализовать свои идеи
Счётчик просмотренных фильмов или управление светом в холодильнике? Приложение можно создать под любую задачу.

2. «Пощупать» результат
iOS-разработчики видят результат своего кода на симуляторе устройства в среде разработки Xcode или на своём айфоне. Ещё с помощью приложений разработчики улучшают жизнь людей и видят отклик: всегда можно почитать отзывы о приложении в App Store.

3. Зарабатывать
По данным Хабр Карьеры, в среднем начинающие iOS-разработчики получают 52 000 ₽ в месяц, а опытные уровня middle — 142 000 ₽. Часто разработчики работают удалённо.

Если хотите попробовать себя в этой профессии, начните бесплатную вводную часть курса по iOS-разработке. Она делится на два уровня: начальный и для более подготовленных. Вы с первого урока учитесь на реальных задачах и погружаетесь в рабочую среду.

Познакомьтесь с языком Swift и напишите своё первое приложение бесплатно
Почему yaml – плохой формат

Скорее всего, до вас долетали обрывки споров про то, насколько хорошая идея использовать yaml для различных конфигов.

Все сводится к тому, что спецификация Yaml на порядок сложнее, чем JSON. Например, спека предусматривает 63 разных способа объявления multiline строк. Кроме того, она еще и значительно меняется от версии к версии.

Вот несколько примеров непредсказуемого поведения YAML конфигов:

*️⃣`- 22:22` в зависимости от версии парсера может быть прочитана как строка, а может – как число 1342.
*️⃣Некоторые символы считываются как строки, а некоторые оказываются зарезервированы под что-то еще. Например, - *.png – невалидный сниппет, так как * зарезервирована. А - !.git будет считан, как пустая строка.
*️⃣Если где-то в конфиге встретится строчка - no, она будет интерпретирована как false, а не как строка. У этого поведения есть даже свое имя – Norway problem, так как региональный код Норвегии, который часто можно встретить в таких конфигах, тоже no. Ах да, так ведет себя только самая новая версия yaml, что добавляет веселья.
*️⃣Не стоит использовать ~, так как это алиас для null.
История дебага странного поведения NSPredicate

Автор статьи столкнулся с интересной проблемой – подсчет записей в CoreData, отфильтрованных с помощью NSPredicate, выдавал неверный результат:
NSPredicate(format: "%K != %@", stringKey, value)

Как оказалось при дебаге, условие предиката не выполнялось для записей, значение в которых равно nil. Корни проблемы растут в не очень очевидное поведение SQL, а избежать его можно, только вручную отфильтровывая нулевые значения.

Перевод на русский язык
С чего начать путь в iOS-разработку?

🔹 24 января в 20:00 мск
приходите на вебинар специализации «iOS Developer» в OTUS! На занятии обсудят Swift Charts — новый фрейморк от компании Apple. Тема открытого урока: «Swift Charts — строим красивые графики из коробки».

Вместе с практикующим экспертом рассмотрят возможности API Swift Charts и с его помощью создадут красивые диаграммы для приложения. Продолжить изучение iOS-разработки вы сможете дальше на онлайн-курсе.

➡️ Для участия зарегистрируйтесь: https://otus.pw/Nxn7/
2024/09/30 16:36:04
Back to Top
HTML Embed Code: