В iOS 15 появился протокол
FormatStyle,
который сильно упрощает локализацию различных типов данных, включая свои собственные. В статье приводятся примеры его использования с датами, единицами измерения, числами и кастомными типами.Ampersandsoftworks
FormatStyle Deep Dive
Apple introduced the new FormatStyle protocol with iOS 15. It allows for some truly remarkable things to happen when you’re converting your data into localized strings.
В Xcode 13.3 появилась новая утилита `xcdebug`, которая подключается к вашему приложению, запущенному через Xcode, прямо из командной строки. Документации у Apple пока нет, примеров использования тоже, поэтому делитесь вашими кейсами, если будете пробовать!
Twitter
Daniel Martín
Xcode 13.3 has a new tool, xcdebug, which allows you to quickly debug programs or Xcode schemes from a Unix shell.
Merge queue – это практика работы с Git, которая облегчает жизнь с большим количеством веток, в которых меняются одни и те же файлы.
В чем суть проблемы – у вас может в один и тот же момент времени висеть сразу несколько веток с зелеными тестами относительно текущего состояния main. Но как только одна из веток будет слита, все остальные станут красными.
Merge queue решает проблему следующим образом. Все PR попадают в единую очередь. Валидность кода в PR проверяется относительно main, в который будут слиты все предыдущие ветки из очереди. Если PR остается зеленым, то он сольется автоматически. Если нет – то либо заблокирует очередь, либо будет автоматически выкинут из нее.
В чем суть проблемы – у вас может в один и тот же момент времени висеть сразу несколько веток с зелеными тестами относительно текущего состояния main. Но как только одна из веток будет слита, все остальные станут красными.
Merge queue решает проблему следующим образом. Все PR попадают в единую очередь. Валидность кода в PR проверяется относительно main, в который будут слиты все предыдущие ветки из очереди. Если PR остается зеленым, то он сольется автоматически. Если нет – то либо заблокирует очередь, либо будет автоматически выкинут из нее.
Runway
Merge queues: An intro for mobile engineers | by Runway
As a mobile engineer, it’s quite possible you’ve never used, or even heard of, merge queues. This might be due in part to the fact that mobile teams traditionally move a bit slower than their web counterparts (merge queues are more often employed by teams…
В Xcode 13.3 появился новый режим работы билд-системы, который может существенно ускорить сборку некоторых проектов. Чтобы его активировать, используйте следующий флаг:
defaults write com.apple.dt.XCBuild EnableSwiftBuildSystemIntegration 1
Синтаксис регулярок – это ад. Мало кто способен читать их и, тем более, писать, без использования сторонних сервисов валидаторов. Команда Swift внесла пропозал, который добавит в язык новый DSL для составления регулярок. Выглядит не фонтан, но часть проблем в работе с regexp решит.
Swift Forums
[Pitch] Regex builder DSL
Full proposal: https://github.com/apple/swift-experimental-string-processing/blob/main/Documentation/Evolution/RegexBuilderDSL.md Regex builder DSL Status: Pitch Implementation: apple/swift-experimental-string-processing Table of Contents Introduction…
VK подготовили Weekend Offer для мобильных разработчиков с бонусом в виде дополнительной зарплаты на старте. Они принимают заявки с 21 до 31 марта: в течение этого времени с вами свяжутся и введут в курс дела. Ищите все подробности тут. Там же можно и заявку отправить. Удачи!
Все знают C как простой и довольно предсказуемый язык. Но и в нем есть свои паззлеры и неочевидные возможности. Вот список нескольких интересных сниппеты.
Gist
Quirks of C
Quirks of C. GitHub Gist: instantly share code, notes, and snippets.
Большая подборка положительных и отрицательных обзоров на Mac Studio и Studio Display.
www.macstories.net
Mac Studio and Studio Display Review Roundup
The reviews are out for the Mac Studio and Studio Display and a lot has been written about both. I’ve pulled some of the most interesting tidbits from the reviews, but if you’re considering buying a Mac Studio or Studio Display, be sure to read all of these…
Представим на секунду, что мы живем в старом мире и можем купить себе новую технику Apple. Купили бы что-то из них?
Anonymous Poll
16%
Оба
16%
Только Mac Studio
11%
Только Studio Display
37%
Ничего
20%
Посмотреть результаты
Lyft – один из самых крупных адоптеров Bazel среди команд iOS разработки. Держите подкаст, в котором главный за Bazel в Lyft делится их опытом:
📌Как команда живет с Bazel и монорепами
📌Как Lyft заадоптил Bazel
📌Как команда поддерживает конфигурацию билда
📌Что такое Bazel в целом
📌Как вкатиться в Bazel
📌Как команда живет с Bazel и монорепами
📌Как Lyft заадоптил Bazel
📌Как команда поддерживает конфигурацию билда
📌Что такое Bazel в целом
📌Как вкатиться в Bazel
Semaphore
Keith Smiley of Lyft on How to Scale Code with Bazel - Semaphore
In this episode, I talk to Keith Smiley, Principal Engineer at Lyft, on how to adopt and use Bazel to scale code and team.
Разбор трех подходов к профилированию iOS приложений:
1️⃣Xcode Instruments
2️⃣Xcode Performance Profiles
3️⃣LLVM IR Profiles
1️⃣Xcode Instruments
2️⃣Xcode Performance Profiles
3️⃣LLVM IR Profiles
Guardsquare
Getting Accurate Profiling Data from iOS Applications | Guardsquare
An important step in developing an iOS application is performance optimization. Learn how to get accurate profiling data from iOS applications.
Удобный сервис для того, чтобы вспомнить размеры экрана и различных UI элементов для любого устройства от Apple.
www.screensizes.app
Screen Sizes
A complete guide for Apple displays
Вышла новая библиотека – Swift Async Algoritms для AsyncSequence. Теперь вы можете использовать с async/await такие функции как:
- Zip
- CombineLatest
- Merge
- Chain
- Buffer
- Debounce
- Throttle
- Zip
- CombineLatest
- Merge
- Chain
- Buffer
- Debounce
- Throttle
Swift.org
Introducing Swift Async Algorithms
As part of Swift’s move toward safe, simple, and performant asynchronous programming, we are pleased to introduce a new package of algorithms for AsyncSequence. It is called Swift Async Algorithms and it is available now on GitHub.
Бывает, что при работе со SwiftUI начинает постоянно появляться сообщение «
Automatic preview updating paused»
. В статье разбирается, откуда появляется эта ошибка, и как от нее избавиться.Marina Vatmakhter (Gornostaeva)
Fixing SwiftUI’s Automatic Preview Updating Paused
Understand why SwiftUI previews keep getting paused and how to improve the situation
История рефакторинга старого приложения Uber длиною в год. Автор честно рассказывает про накопившийся к тому моменту техдолг, неудачные попытки рефакторинга и компромиссы, вызванные принятыми архитектурными решениями.
Space is Disorienting on Svbtle
Refactoring Uber’s Rider app
There was a lot of discussion at the end of 2020 about Uber’s mobile apps, largely due to a Twitter thread by McLaren Stanley. Many wondered aloud why we didn’t just refactor the app instead of rewriting it. I thought I’d add some context into...
Разбор логики того, как в SwiftUI происходит управление жизненным циклом View и привязанного к ним стейта. Особенно интересно там все работает у списков.
Продолжим погружаться в проблемы больших команд мобильной разработки. Ребята из Lyft рассказывают, как у них организован мобильный CI. Из интересного:
📌Вся конфигурация CI описывается в вендоронезависимом конфиге
📌Промежуточная абстракция позволяет на каждый коммит дергать разных агентов и разных провайдеров CI
📌Все живет на self-hosted машинах
📌Список задач, которые надо дернуть для каждого PR, генерируется на лету после анализа содержимого PR
📌Вся конфигурация CI описывается в вендоронезависимом конфиге
📌Промежуточная абстракция позволяет на каждый коммит дергать разных агентов и разных провайдеров CI
📌Все живет на self-hosted машинах
📌Список задач, которые надо дернуть для каждого PR, генерируется на лету после анализа содержимого PR
YouTube
UnblockConf21 x Lyft – Mobile CI at scale
Lyft has hundreds of mobile developers, and runs thousands of CI builds per week. This talk will cover how we provide the best possible experience for our developers, including the journey we’ve taken so far, our current setup based on Buildkite and Bazel…
Я уже выкладывал новый инструмент для построения связей между модулями от Миши Рубанова из Додо. И тем, кто попробовал, и тем, кто не стал, рекомендую прочитать его новую статью про то, с какими проблемами он столкнулся при разработке. Супер вдохновляющая история для всех, кто подумывает сделать свой пет-проект.
Хабр
Как я визуализировал граф билда. Build Graph for Xcode
Каждый год я стараюсь запускать по одному пет-проекту. Самый первый начинался ещё до того, как я умел пользоваться Git, а последний вообще был не программой, а книгой про доступность . Каждый проект...
Тикеты с багами в Swift переезжают из Jira на GitHub! Если вы когда-нибудь репортили проблемы в bugs.swift.org, то вам надо донастроить свой профиль, чтобы автомиграция на GitHub сработала нормально:
1️⃣До 7 апреля в своем профиле в Jira указать имя пользователя на GitHub
2️⃣До 18 апреля принять приглашение во временную организацию на GitHub swift-issues-migration.
1️⃣До 7 апреля в своем профиле в Jira указать имя пользователя на GitHub
2️⃣До 18 апреля принять приглашение во временную организацию на GitHub swift-issues-migration.
Swift Forums
Swift bugs are moving to GitHub Issues and we need your help!
Swift bugs are moving to GitHub Issues and we need your help! Swift's open source project issues are currently in JIRA, making it difficult for developers to discover and integrate them into our workflows on GitHub, such as pull requests. To provide a better…