Почему Rosetta 2 работает так быстро
Хардкорная статья с анализом устройства Rosetta 2 и сравнением сгенерированного ей кода с оригиналом.
Перевод на русский язык
Как освободить место от неиспользуемых платформ в Xcode
Xcode не очень хорошо справляется с подчисткой неиспользуемых версий платформ симуляторов. Может так оказаться, что вы продолжаете тратить бесценные гигабайты на харде на то, чтобы хранить образы платформ, которые уже не совместимы с вашей версией Xcode. В статье разбирается, где они хранятся, как их можно почистить и при необходимости скачать заново.
Перевод на русский язык
Циферблат для Apple Watch, динамически генерирующийся по текущей топографии
David Smith, тот самый разработчик приложений для watchOS, реализовал один из самых красивых циферблатов, что я видел. На основе данных о вашей локации генерируется контурная топографическая карта. Выглядит потрясающе.
А вот еще циферблаты от него же, но уже с анимацией текущей погоды.
ngrok – используем localhost как бэкенд
- ngrok – reverse proxy, который помогает дать доступ к сервису, поднятому на localhost, из внешнего интернета.
- Для этого достаточно выполнить всего одну команду: ngrok http <port>
- Это очень удобно для того, чтобы быстро поднять локальный бэкенд для своего приложения и протестировать что-то без необходимости его деплоить.
SwiftUICraft – Minecraft на SwiftUI
Кто-то делает троллейбус из буханки хлеба, а кто-то – воксельную игру на SwiftUI. Реализовано все поверх Prism, легковесного 3D движка, про который я как-то в канале уже рассказывал.
Реализация JWT авторизации с рефреш токенами
- JWT – один из частых стандартов авторизации. Сервер генерирует токен, а вы его используете, чтобы подписывать запросы. Когда токен протухает, используете рефреш-токен, чтобы сгенерировать новый.
- В статье на примере простого мобильного приложения и бэкенда разбирается устройство JWT авторизации, архитектура и реализация клиентского кода, который отвечает за работу с токенами.
Перевод на русский язык
Ask Apple возвращается на этой неделе
Ask Apple – новый движ от Apple, который помогает разработчикам достучаться до инженеров чаще, чем раз в год на WWDC. Проходит в форме 1-1 сессий и групповых Q&A. Судя по всему, Ask Apple планируют проводить на ежемесячной основе, что прямо очень круто.
📆Расписание Q&A
📝Регистрация (нужен акк разработчика)
Приходите на стажировку в Яндекс!
Стажёры в Яндексе — это полноценные члены команды. Плечом к плечу с опытными разработчиками они улучшают сервисы Яндекса и помогают миллионам людей. Стажёры работают как полную неделю, так и по 20–30 часов. Можно выбрать удобный график.
Стажёров ищут почти во всех командах, в том числе в Поиске, Рекламе, Алисе, Облаке, Картах, Инфраструктуре, Такси, Лавке, Еде, Кинопоиске, Музыке.
Приходите на стажировку в Яндекс, чтобы узнать больше о продуктах, найти новых коллег и друзей в команде!
Переходите по ссылке, чтобы узнать все подробности и подать заявку: https://clck.ru/32dzhn
Октябрьский выпуск дайджеста Swift Evolution
- Принят пропозал, который позволит использовать любые переменные в ViewBuilder. Например, в body в SwiftUI. Любые переменные – это lazy, computed vars и другие, которые раньше не работали.
- В стадию ревью перешли пропозалы по добавлению метода sleep(for:) в Clock, модификаторов borrow и take для тюнинга ARC.
Текущий статус интеропа С++ и Swift
Рабочая группа в команде Swift, отвечающая за интероп между Swift и C++, поделилась своим статусом:
- Вижн того, как должен работать интероп Swift -> C++ и C++ -> Swift.
- Завезли довольно много языковых изменений, которые помогают переводить разные системы типов друг в друга. Часть из изменений попала в Swift 5.7, а часть уедет в следующие версии.
Памятка про форматтеры, доступные в Swift
Небольшая памятка про то, как можно форматировать даты, имена и измерения. А детали есть в этой сессии WWDC.
Подробный гайд по работе с Passkeys в iOS и на бэкенде
Passkeys – beta-фича новой iOS, которая заменяет пароли на публичные крипто ключи. По сути, Passkeys – реализация стандарта Web Authentication API от Apple.
В статье разбирается разработка простого флоу авторизации – пользователь вводит свое имя, нажимает кнопку, сервер генерирует Passkey, который сохраняется на устройстве и дальше используется для подтверждения личности.
Window management в SwiftUI
- В последней версии SwiftUI появился новый API для управления окнами.
- Проверить, поддерживает ли возможность открытия нескольких окон платформа, на которой запущено приложение, можно с помощью переменной supportsMultipleWindows. Такая поддержка есть в macOS и iPadOS.
- С помощью этого API можно довольно легко поддерживать одну кодовую базу, которая работает как в режиме многооконности, так и в одном окне.
SiriSpy – уязвимость в iOS, которая позволяет сторонним приложениям получить доступ к логу разговоров с Siri
- Любое приложение с доступом к Bluetooth может записывать ваш разговор с Siri или текст, надиктованный с помощью голосовых фичей клавиатуры. Уязвимость работает, когда вы используете AirPods. Доступ к данным происходит без запросов разрешений на использование микрофона и не оставляет никаких следов.
- В статье очень классно разбирается, как баг был обнаружена.
- Уязвимость уже закрыта в iOS 16.1, iOS разработчик, обнаруживший ее, получил 7000$.
Истории разработчиков Dynamic Island
- В статье разбираются примеры того, как в различных приложениях использовали Dynamic Island. Если вы еще не придумали, как именно использовать эти виджеты в вашем приложении, вас это может навести на новые идеи.
- В Citymapper виджет используется для отображения сводной информации о маршруте и следующем шаге.
- В клиенте для Reddit – для отображения последних изменений в ленте и уведомлений.
- В фитнес-помощнике SmartGym в виджете содержится гайд по текущему упражнению и секундомер.
- В Flighty – подробная информация о вашем рейсе.
Variadic generics в Swift
Одна из следующих больших языковых фичей, которые появятся в Swift – variadic generics. С ее помощью можно будет определять дженерики с переменным количеством параметров.
Пример ситуации, где такая фича может быть полезна – оператор сравнения для tuples, который приходится перегружать по многу раз для того, чтобы описать его поведение с разным количеством параметров.
Обсудить пропозал и почитать чужие комментарии можно здесь.
Перевод на русский язык
Xbase – набор инструментов для iOS разработки в Neovim
Для любителей писать код в неконвенциональных для iOS экосистемы редакторах, например, в Neovim, появился набор инструментов, которые упростят эту задачу:
- Поддержка автокомплита и навигации по исходникам
- Возможность быстрого запуска симуляторов
- Логи билдов и print()
- Генерация xcodeproj
- Поддержка всяких фичей nvim
Кстати, если вы не понимаете, зачем вообще кто-то может хотеть писать код в Vim, послушайте недавний выпуск Подлодки с Кириллом Мокевниным про продуктивность разработки, где мы в том числе много обсуждали Vim.
Чтобы быть в тренде последних новостей из мира iOS разработки тебе надо подписаться на канал @iOS_broadcast.
📌 Там ты найдешь ежедневную подборку новостей с кратким обзором, а также интересные опросы, чтобы проверить свои знания.
Что интересно можно узнать:
▶️ iOS: Навигация по-новому
▶️ 4 видео для мобильных разработчиков. Анимации в React Native, keyboard avoiding в SwiftUI и другое
▶️ Продвинутый дебаг в Xcode: средства отладки, про которые часто забывают
▶️ Для чего нужна Witness Table?
Канал создан авторами @android_broadcast
Решение проблем с single size App Icon
При использовании новой фичи Xcode, app icon универсального размера, вы можете столкнуться с двумя ошибками: «CoreData: API Misuse: Attempt to serialize store access on non-owning coordinator» и «Command CompileAssetCatalog failed with a nonzero exit code». В статье разбирают причины их возникновения, связь фичи с CoreData и способы их решить.
Перевод на русский язык
Swift и Objective-C в рейтингах языков программирования
1️⃣Redmonk – индекс, рассчитываемый на основе количества вопросов на StackOverflow и проектов на GitHub
Swift – 11 место
Objective-C – 12 место
2️⃣SlashData – индекс, основанный на регулярном опросе 26.000 разработчиков со всего мира
Swift – 9 место (4.2 млн разработчиков)
Objective-C – 11 место (3 млн разработчиков)
3️⃣Octoverse – индекс, который строится GitHub на основе мх данных об опенсорсных проектах
Swift и Objective-C не попали в топ-10
4️⃣PYPL – индекс, который рассчитывается по частотности Google поисков вида «язык tutorial»
Swift – 10 место (доля рынка 2.11%)
Objective-C – 9 место (доля рынка 2.17%)
Последний шанс влететь на Podlodka iOS Crew
Примета: если пропустить ноябрьскую Подлодку, то весь следующий год у вас будут проблемы с архитектурой на проекте.
Зачем идти на конфу:
- узнаете, почему семантика в архитектуре важнее типизированных подходов.
- разберетесь в гибридной архитектуре SwiftUI и UIKit.
- перестроитесь под реактивную архитектуру.
- научитесь проходить архитектурный собес.
- ну, и, конечно, отлично проведете неделю в нашей Телеге, общаясь с русскоязычными iOS разработчиками, которые расползлись по миру.
Старт уже сегодня, залетайте!
accessibilityUserInputLabels для Voice Control
Чтобы пользователю Voice Control не нужно было угадывать, как именно вы назвали какую-то кнопку, и не нужно было бы просить скрин ридер зачитать названия всех элементов на экране, с помощью свойства accessibilityUserInputLabels можно задать сразу много возможных названий.
Если стало интересно, почитайте реплаи – там обсуждают нетривиальную задачу локализации этих названий.
Подкаст Санделла про техники создания быстрых и отзывчивых интерфейсов
В гостях – Adam Bell, UI инженер в Netflix, автор библиотеки для анимаций Motion и кучи другого опенсорса.
Как выполнить код в SwiftUI ровно один раз
- .onAppear не подходит – он будет вызываться каждый раз, когда вы возвращаетесь на View. Блоки .task и init тоже не подходят.
- Вместо этого можно подписаться на изменение приватной переменной, значение которой привязано к жизненному циклу View.
if and switch as expressions
В пропозале предлагается дать возможность использовать if и switch следующим образом:
- Как возвращаемое значение функции без return.
- Для объявления и присваивания значения переменным без оборачивания в замыкания: let foo = if ….
Что думаете?
Тинькофф приглашает mobile-разработчиков с опытом от 3 лет в свою команду в Казахстане💡
Тинькофф центр разработки в Алматы ищет опытных iOS- и Android-разработчиков, чтобы сделать им быстрый оффер в компанию.
Все просто:
— вы заполняете заявку на Mobile Contest до 16 ноября;
— проходите все этапы интервью за один день 19 ноября.
Далее в течение недели получаете оффер, если работа подойдет вам по условиям и скиллам.
▪️Зарегистрироваться и узнать подробнее о Mobile Contest: https://v.tinkoff.ru/contest_mobile_tinkoff
Тинькофф открыл свой центр разработки в Казахстане с зарплатным проектом в локальном банке. Можно работать из офиса в Алматы и удаленно из любой точки страны. А еще Тинькофф заботится о комфорте и здоровье сотрудников. Помогает оформить РВП, предоставляет расширенное ДМС и необходимое для работы оборудование, а также компенсирует затраты на спорт и питание.
Станьте частью распределенной команды Тинькофф и работайте удаленно или из офисов в 20 городах России, в Казахстане, Беларуси и Армении.
FengNiao – инструмент для удаления неиспользуемых изображений из xcodeproj
- FengNiao – это CLI тула, которая сканирует все директории проекта в поисках неиспользуемых ресурсов.
- При запуске можно указать конкретные типы ресурсов, расширения файлов, или директории, которые надо пропустить.
- Можно настроить для запуска в билд фазах проекта.
Ушла эпоха – Raywenderlich.com теперь Kodeco
- Raywenderlich.com – легендарный сайт, туториалы на котором обучили несколько поколений iOS разработчиков. Удивительно, но сайт ведет не один человек, а команда из 30 человек и нескольких сотен авторов материалов.
- Ребята решили, что переросли уровень личного блога одного Рэя, и решили переименоваться. Поэтому не удивляйтесь, когда встретите название Kodeco!
Podlodka iOS Crew про архитектуру
63% участников исследования айос коммьюнити сказали, что Podlodka iOS Crew была лучшей конференцией, которую они посетили в 2022 году. Так вот, 14-18 ноября пройдет новый сезон iOS Crew с кучей сессий про архитектурные корнер кейсы. Вот несколько кайфовых тем:
🧱Как правильно проектировать SDK
🔃Сравнение TCA с MVVM
📝Публичное собеседование по System Design в iOS
🗺Архитектурные подходы к навигации
В этот раз конференцию мы проводим в Telegram. Помимо участия в сессиях, вы попадаете в ЗАКРЫТЫЙ ТОП СИКРЕТ ТЕЛЕГРАМ ЧАТ, в котором айосеры из разных компаний каждый день рассказывают, как они подходят к решению разных проблем. Например, на этой неделе говорили про организацию релизов и подходы к локализации.
👉Подключайтесь и вы!
Swift-index-store – библиотека для работы с индексами компилятора
- Во время компиляции проекта swiftc и clang генерируют детальные индексы для исходного кода. Модель данных этих индексов публичная, но не задокументированная.
- Swift-index-store – набор инструментов для работы с этой моделью данных. Под капотом крутится сишная libIndexStore, являющаяся частью LLVM.
- Больше деталей про модель данных индекса можно почитать здесь.