Разбор трех подходов к профилированию 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 Apps | Guardsquare
An important step in developing an iOS application is performance optimization. Learn how to get accurate profiling data from iOS applications.
👍29
Удобный сервис для того, чтобы вспомнить размеры экрана и различных UI элементов для любого устройства от Apple.
www.screensizes.app
Screen Sizes
A complete guide for Apple displays
👍38
Вышла новая библиотека – 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.
👍32🔥8😁3
Бывает, что при работе со 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
💩8
История рефакторинга старого приложения 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...
👍15
Разбор логики того, как в SwiftUI происходит управление жизненным циклом View и привязанного к ним стейта. Особенно интересно там все работает у списков.
👍24❤2🔥2
Продолжим погружаться в проблемы больших команд мобильной разработки. Ребята из 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…
🤯6👍2
Я уже выкладывал новый инструмент для построения связей между модулями от Миши Рубанова из Додо. И тем, кто попробовал, и тем, кто не стал, рекомендую прочитать его новую статью про то, с какими проблемами он столкнулся при разработке. Супер вдохновляющая история для всех, кто подумывает сделать свой пет-проект.
Хабр
Как я визуализировал граф билда. Build Graph for Xcode
Каждый год я стараюсь запускать по одному пет-проекту. Самый первый начинался ещё до того, как я умел пользоваться Git, а последний вообще был не программой, а книгой про доступность . Каждый проект...
👍20❤3🥰3
Тикеты с багами в 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…
👍4🎉4
Хороший структурированный обзор того, как реализовывать OAuth в iOS и Android приложениях с общими принципами работы и потенциальными проблемами.
Хабр
OAuth в мобильных приложениях
Привет! Меня зовут Мялкин Максим, я занимаюсь мобильной разработкой в KTS . Ни один сервис не обходится без логина. Часто в мобильных приложениях требуется интегрировать вход через сторонние соцсети —...
👍19🔥7
Появилась новая ежемесячная email-рассылка, в которой будет подбиваться текущий статус разработки Swift: ключевые пропозалы, обсуждения и анонсы. Помимо ссылок, автор пытается простым языком объяснить смысл всех изменений и примерно предсказать, когда они докатятся до пользователя.
👍18😁1
Меня попросили пошарить опрос про то, планируют ли мобильные разработчики уезжать из России, и по каким параметрам они выбирают работу. Результаты выложу отдельно.
И да, я помню про свое ежегодное исследование мобильщиков. Оно будет, но позже.
И да, я помню про свое ежегодное исследование мобильщиков. Оно будет, но позже.
Google Docs
Опрос 2022
Привет! Спасибо, что согласились присоединиться к исследованию и пройти опрос.
Расскажите, какие условия работы для вас важны сегодня. Это поможет вам определить свои приоритеты, а компании смогут адаптировать свои условия и сделать их максимально комфортными…
Расскажите, какие условия работы для вас важны сегодня. Это поможет вам определить свои приоритеты, а компании смогут адаптировать свои условия и сделать их максимально комфортными…
💩25👍22🤔2😁1
Вечерний холивар объявляется открытым! Каждый экран в приложении должен быть завернут в ScrollView, вне зависимости от выполняемой им функции. Вот почему:
⌨️Проще обрабатывать событие появления клавиатуры
📏Вы готовы к любому размеру экрана новых девайсов Apple
🔎Сможете легко поддерживать Dynamic Type
⌨️Проще обрабатывать событие появления клавиатуры
📏Вы готовы к любому размеру экрана новых девайсов Apple
🔎Сможете легко поддерживать Dynamic Type
Lickability
Every Screen in Your App Should Be a Scrolling View – Lickability
Yes, really
👍31😁12👎2💩1
Вышел Tuist 3.0 – инструмент, заменяющий сложные проектные файлы Xcode на простой конфиг на Swift. Из важных новых штук:
📌Плагины с поддержкой сторонних зависимостей (например, в плагин для линтинга можно легко подключить SwiftLint)
📌Возможность декларировать SPM зависимости проекта в отдельном файле Dependencies.swift, и работать с ними без использования Xcode
📌Распределенный билд кэш Tuist Cloud, который будет подтягивать ранее скомпилированные модули на компьютеры ваших коллег
📌Плагины с поддержкой сторонних зависимостей (например, в плагин для линтинга можно легко подключить SwiftLint)
📌Возможность декларировать SPM зависимости проекта в отдельном файле Dependencies.swift, и работать с ними без использования Xcode
📌Распределенный билд кэш Tuist Cloud, который будет подтягивать ранее скомпилированные модули на компьютеры ваших коллег
🔥30👍12👏1
@MainActor
– это аннотация, которая подсказывает компилятору, что определенный код будет всегда выполняться на мейн треде. Но в итоге это не всегда так, и иногда этот код в итоге исполняется в бэкграунде. В статье рассказывается, почему это так, и как можно обойти такое поведение.Mobile.blog
Swift: Why is my @MainActor code running in the background?
@MainActor was introduced introduced in Swift 5.5 by SE-0316 as a way to tell the compiler that certain code should always be run on the main thread. However, we have seen some cases where function…
👍18
Если вы планируете каким-то образом автоматизировать работу с App Store Connect, держите классную библиотеку. Самое классное в ней то, что она перегенерируется автоматически каждый раз, когда спецификация Connect API изменяется.
The Swift Package Index
Bagbutik – Swift Package Index
Bagbutik by Morten Bjerg Gregersen on the Swift Package Index – Generated Swift code for the App Store Connect API based on the official OpenAPI spec.
👍12
Telegram регулярно проводит конкурсы среди мобильных разработчиков и нанимает к себе их победителей. На одном из последних нужно было написать кроссплатформенный модуль на С++ для корректировки внешности. Разработчик, занявший третье место, рассказывает про свой код и результаты.
Хабр
Как я занял третье место в конкурсе Telegram и выиграл $ 2 000
Краткая предыстория. Телеграм анонсировал конкурс для разработчиков на создание библиотеки, с помощью которой можно было бы преобразовывать лица в режиме реального времени. Задача: Создать...
🔥15👏3👎2👍1
Пример GitHub Action, который автоматически подливает изменения из release-ветки в main.
Jesse Squires
Automate merging release branches into your main branch with GitHub Actions
A typical release process for Git workflows involves creating a release branch, performing various tests on that branch, and applying any necessary fixes or ...
👍9👎2