iosgr | Технологии

Telegram-канал iosgr - iOS Good Reads – swift, разработка мобильных приложений, архитектура, блокчейн, VR, AR, карьера, IT

10615

Самые интересные статьи, видео и новости, связанные с iOS разработкой. Не больше трёх материалов в день. Лучшее iOS сообщество в Телеге: @iosgt Размещение рекламы: @tatiana_2209

Подписаться на канал

iOS Good Reads – swift, разработка мобильных приложений, архитектура, блокчейн, VR, AR, карьера, IT

За Swift concurrency – будущее многопоточки в iOS. Если вы еще не вкатились, то начало года – самое время, чтобы начать подтягивать свои знания и экспериментировать с новыми API. Первые шаги вы можете сделать уже послезавтра, на воркшопе от Ексея Пантелеева.

— Устройство многопоточности на уровне iOS
— Новую структурированную многопоточность переход от GCD и основную проблему GCD
— Реальные примеры на async/await
— Использование Actors в продакшене
— Перспективы развития новой многопоточности

Вебинар является частью большого онлайн-курса «iOS Developer. Professional» от OTUS.
Дата: 2 февраля, 20:00

👉Для регистрации пройдите вступительный тест: https://otus.pw/9Syy/

Читать полностью…

iOS Good Reads – swift, разработка мобильных приложений, архитектура, блокчейн, VR, AR, карьера, IT

Релиз MarkdownUI 2.0

MarkdownUI – библиотека для работы с маркдауном в SwiftUI. Умеет рендерить изображения, заголовки, списки, цитаты, таблицы, код и многое другое.

На этой неделе вышла новая версия либы, куда завезли нативный SwiftUI рендеринг, кастомизацию через стили и темы, и полную поддержку GitHub Flavored Markdown.

Читать полностью…

iOS Good Reads – swift, разработка мобильных приложений, архитектура, блокчейн, VR, AR, карьера, IT

3D шахматы на SwiftUI и RealityKit

С очками все не очень понятно – по слухам их опять отложили на неопределенное время. В любом случае, в этом году будет полезно подтянуть свои знания по AR/VR и поиграть с разными идеями.

Автор статьи рассказывает, как довольно просто запилить трехмерные шахматы в AR. Хороший проект, чтобы потренироваться в разных базовых штуках вроде работы со светом.

Читать полностью…

iOS Good Reads – swift, разработка мобильных приложений, архитектура, блокчейн, VR, AR, карьера, IT

Результаты большого опроса Developer Ecosystem по iOS разработчикам

🍹У 85% опрошенных в проектах есть и Swift, и Objective-C. У подавляющего большинства большинство кода на Swift.
🐞2/3 разработчиков не пишут юнит тесты. UI тесты пишет кще меньше, всего 20%.
🧱70% опрошенных используют CocoaPods, 47% – SwiftPM, 12% – Carthage. При этом половина использующих поды планирует переезд на SwiftPM.
☁️13% опрошенных делают что-то на Swift для сервера.

Читать полностью…

iOS Good Reads – swift, разработка мобильных приложений, архитектура, блокчейн, VR, AR, карьера, IT

Надо ли подаваться в App Store Small Business program каждый год

У App Store есть специальная программа для тех, кто зарабатывает меньше миллиона долларов в год на своих проектах – Small Business Program. Основная плюшка – вы платите 15% комиссии вместо 30%.

Недавно на почты многим разработчикам, участвующим в программе, пришло письмо с заголовком «You’re eligible for the Small Business Program». Если вы увидели такое же, не переживайте – саппорт пишет, что каждый год продлять программу не надо.

Читать полностью…

iOS Good Reads – swift, разработка мобильных приложений, архитектура, блокчейн, VR, AR, карьера, IT

Как работает Advanced Data Protection в iCloud

Обычно все ваши данные в iCloud шифруются ключом, который хранится на серверах Apple. В декабре Apple анонсировали несколько новых фичей, связанных с безопасностью. Одна из них – Advanced Data Protection, которая хранит ключи шифрования только на устройствах. По сути, это end-to-end шифрование из коробки для всех приложений, которые используют CloudKit. Но у этого есть несколько нюансов:

*️⃣Зашифрованные поля в данных не поддеррживают индексы, поэтому из нельзя включать в предикаты.
*️⃣Если вы выставляете publicPermission для какого-то из файлов, и он становится доступен по ссылке, ключи шифрования загрузятся на сервер Apple.
*️⃣Вы не можете знать, включен ли ADP у конкретного пользователя. Правильным будет расчитывать на то, что включен, и работать с приватной информацией черещ новый API.

Документация по encryptedValues API

Читать полностью…

iOS Good Reads – swift, разработка мобильных приложений, архитектура, блокчейн, VR, AR, карьера, IT

Как использовать один и тот же код для Xcode Previews и снепшотного тестирования

В статье разбирается, как с помощью библиотеки PreviewSnapshots можно использовать один и тот же код для того, чтобы отображать его в Xcode Preview, и для того, чтобы генерировать вьюшку, которая может использоваться в XCTest ассертах. Идея в целом довольно разумная, и снепшотные тесты вы можете получить почти бесплатно.

Читать полностью…

iOS Good Reads – swift, разработка мобильных приложений, архитектура, блокчейн, VR, AR, карьера, IT

С чего начать путь в iOS-разработку?

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

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

➡️ Для участия зарегистрируйтесь: https://otus.pw/Nxn7/

Читать полностью…

iOS Good Reads – swift, разработка мобильных приложений, архитектура, блокчейн, VR, AR, карьера, IT

Почему yaml – плохой формат

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

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

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

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

Читать полностью…

iOS Good Reads – swift, разработка мобильных приложений, архитектура, блокчейн, VR, AR, карьера, IT

Swift Evolution дайджест за декабрь

✅Принятые пропозалы:
- SE-0374: Add sleep(for:) to Clock

👀Пропозалы в ревью:
- SE-0378: Package Registry Authentication
- SE-0379: Swift Opt-In Reflection Metadata
- SE-0380: `if` andft Evolutiexpressions
- SE-0381: DiscardingTaskGroups

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

Читать полностью…

iOS Good Reads – swift, разработка мобильных приложений, архитектура, блокчейн, VR, AR, карьера, IT

Sergey.Zhuravel/in-app-purchases-in-ios-part-1-creating-purchases-and-adding-to-the-project-b2e9ee300e81">Серия статей про работу с внутренними покупками

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

Код примера на GitHub
Перевод на русский язык

Читать полностью…

iOS Good Reads – swift, разработка мобильных приложений, архитектура, блокчейн, VR, AR, карьера, IT

Релиз Pulse 3

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

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

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

Читать полностью…

iOS Good Reads – swift, разработка мобильных приложений, архитектура, блокчейн, VR, AR, карьера, IT

Что происходит, когда вы переходите в браузере по ссылке

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

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

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

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

Читать полностью…

iOS Good Reads – swift, разработка мобильных приложений, архитектура, блокчейн, VR, AR, карьера, IT

DI библиотека от Pointfree

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

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

GitHub
Документация
Перевод на русский язык

Читать полностью…

iOS Good Reads – swift, разработка мобильных приложений, архитектура, блокчейн, VR, AR, карьера, IT

Как читать ассемблерный код

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

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

Читать полностью…

iOS Good Reads – swift, разработка мобильных приложений, архитектура, блокчейн, VR, AR, карьера, IT

Лучшие практики в SwiftUI от Pointfree

Держите пять топовых статей про то, как писать поддерживаемый, надежный и масштабируемый код на SwiftUI.

*️⃣Parent-child view communication
*
️⃣Identified arrays
*
️⃣State-driven navigation
*
️⃣Dependencies
*
️⃣Testing

Читать полностью…

iOS Good Reads – swift, разработка мобильных приложений, архитектура, блокчейн, VR, AR, карьера, IT

Как ускорить protocol conformance check

- Protocol conformance check каждый раз при выполнении в рантайме проходится по всем ProtocolConformanceDescriptor, содержащимся в бинарнике. Чем больше у вас протоколов, тем медленнее выполняется эта операция.
- В iOS 16 завезли улучшение за счет использования специального кэша, который хранит в себе посчитанные заранее результаты соответствия протоколов. Но есть ряд кейсов, в которых эта фича не работает, в частности при первом запуске приложения, когда кеши еще не заполнены, при отсутствии результатов проверки соответствия или на старых версиях iOS.
- В статье рассказывается, как с помощью специально настроенных order файлов, которые объясняют линкеру, как правильно группировать код, можно улучшить скорость во всех описанных сценариях.
- Авторы статьи в своих тестах получили прирост на 20% на iPhone 7 с iOS 15.

Читать полностью…

iOS Good Reads – swift, разработка мобильных приложений, архитектура, блокчейн, VR, AR, карьера, IT

warrenm">30 постов про работу с Metal

Серия постов для тех, кто раньше не занимался разработкой для GPU. Каждая статья – разбор одной из ключевых концепций Metal с простыми примерами, которые можно повторить самому.

Вот несколько постов для затравки:

warrenm/thirty-days-of-metal-day-7-drawing-in-2d-305d71e87224">🎨Рисование в 2D
warrenm/thirty-days-of-metal-day-13-depth-14e84e51b9d2">💧Работа с глубиной
warrenm/thirty-days-of-metal-day-18-directional-light-69e8a2d630e0?source=user_profile---------11----------------------------">️Источники и направление света
warrenm/thirty-days-of-metal-day-29-physically-based-rendering-e20e9c1bf984">️Рендеринг, основанный на физике

Читать полностью…

iOS Good Reads – swift, разработка мобильных приложений, архитектура, блокчейн, VR, AR, карьера, IT

Обмен данными между iPhone и Apple Watch с помощью WatchConnectivity

WatchConnectivity – системный фреймворк, который дает простой API для передачи данных между телефоном и часами. Важно – он предназначен для передачи небольших объемов данных. Для того, чтобы передать что-то более значимое, Apple рекомендует запрашивать данные напрямую с сервера через URLSession.

WatchConnectivity дает три способа передачи данных:

1️⃣ApplicationContext, для синхронизации очень часто изменяющихся данных.
2️⃣transferUserInfo, для гарантированной передачи данных даже в том случае, если часы сейчас недоступны. Работает только с реальным девайсом.
3️⃣sendMessage, для двустороннего обмена данными тогда, когда оба девайса видят друг друга.

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

Читать полностью…

iOS Good Reads – swift, разработка мобильных приложений, архитектура, блокчейн, VR, AR, карьера, IT

Swift и Objective-C в одном XCFramework

С интеропом Swift и Objective-C нет проблем, но есть нюанс. Если вам нужен интероп внутри фреймворка, придется сделать интерфейс взаимодействия Swift<>Objective-C публичным, и он будет доступен всем пользователям фреймворка. Это подойдет не во всех случаях.

В статье разбирается два воркэраунда – для импорта Swift в Objective-C и наоборот.

Читать полностью…

iOS Good Reads – swift, разработка мобильных приложений, архитектура, блокчейн, VR, AR, карьера, IT

Поиск спикеров в Podlodka iOS Crew

Программный комитет любимой конференции айосеров готовит новый сезон с фокусом на разную инфраструктуру – сборку, CI/CD, обеспечение качества, организацию аналитики и локализации.

Если вы решали какие-то интересные задачи по теме, то откликайтесь в форме. Вам подберут подходящий формат, помогут подготовить выступление и отсыпят кучу плюшек! Форма открыта до 3 февраля.

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

Читать полностью…

iOS Good Reads – swift, разработка мобильных приложений, архитектура, блокчейн, VR, AR, карьера, IT

Количество новых приложений на React Native упало на 40 процентов

По данным AppFigures, которые анализируют используемые приложениями SDK, в 2022 году количество приложений, содержащих в себе зависимости React Native, упало на 43%. Важно понимать, что количество новых релизов в целом стало меньше на 8%, но это объясняет лишь маленькую часть падения.

При этом, до прошлого года React Native рос довольно бодренько.

Читать полностью…

iOS Good Reads – swift, разработка мобильных приложений, архитектура, блокчейн, VR, AR, карьера, IT

История дебага странного поведения NSPredicate

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

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

Читать полностью…

iOS Good Reads – swift, разработка мобильных приложений, архитектура, блокчейн, VR, AR, карьера, IT

3 причины стать мобильным разработчиком на iOS

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

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

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

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

Познакомьтесь с языком Swift и напишите своё первое приложение бесплатно

Читать полностью…

iOS Good Reads – swift, разработка мобильных приложений, архитектура, блокчейн, VR, AR, карьера, IT

xcmonkey – инструмент для monkey-тестирования

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

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

Читать полностью…

iOS Good Reads – swift, разработка мобильных приложений, архитектура, блокчейн, VR, AR, карьера, IT

Туториал по make для Swift разработчиков

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

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

Читать полностью…

iOS Good Reads – swift, разработка мобильных приложений, архитектура, блокчейн, VR, AR, карьера, IT

Text modifiers в SwiftUI

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

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

Читать полностью…

iOS Good Reads – swift, разработка мобильных приложений, архитектура, блокчейн, VR, AR, карьера, IT

Книга «Software Engineering at Google» стала бесплатной

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

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

Читать полностью…

iOS Good Reads – swift, разработка мобильных приложений, архитектура, блокчейн, VR, AR, карьера, IT

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

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

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

Читать полностью…

iOS Good Reads – swift, разработка мобильных приложений, архитектура, блокчейн, VR, AR, карьера, IT

Питч по добавлению borrow и inout в Swift

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

Читать полностью…
Подписаться на канал