Результаты большого опроса Developer Ecosystem по iOS разработчикам
🍹У 85% опрошенных в проектах есть и Swift, и Objective-C. У подавляющего большинства большинство кода на Swift.
🐞2/3 разработчиков не пишут юнит тесты. UI тесты пишет кще меньше, всего 20%.
🧱70% опрошенных используют CocoaPods, 47% – SwiftPM, 12% – Carthage. При этом половина использующих поды планирует переезд на SwiftPM.
☁️13% опрошенных делают что-то на Swift для сервера.
🍹У 85% опрошенных в проектах есть и Swift, и Objective-C. У подавляющего большинства большинство кода на Swift.
🐞2/3 разработчиков не пишут юнит тесты. UI тесты пишет кще меньше, всего 20%.
🧱70% опрошенных используют CocoaPods, 47% – SwiftPM, 12% – Carthage. При этом половина использующих поды планирует переезд на SwiftPM.
☁️13% опрошенных делают что-то на Swift для сервера.
30 постов про работу с Metal
Серия постов для тех, кто раньше не занимался разработкой для GPU. Каждая статья – разбор одной из ключевых концепций Metal с простыми примерами, которые можно повторить самому.
Вот несколько постов для затравки:
🎨Рисование в 2D
💧Работа с глубиной
☀️Источники и направление света
⬇️Рендеринг, основанный на физике
Серия постов для тех, кто раньше не занимался разработкой для GPU. Каждая статья – разбор одной из ключевых концепций Metal с простыми примерами, которые можно повторить самому.
Вот несколько постов для затравки:
🎨Рисование в 2D
💧Работа с глубиной
☀️Источники и направление света
⬇️Рендеринг, основанный на физике
3D шахматы на SwiftUI и RealityKit
С очками все не очень понятно – по слухам их опять отложили на неопределенное время. В любом случае, в этом году будет полезно подтянуть свои знания по AR/VR и поиграть с разными идеями.
Автор статьи рассказывает, как довольно просто запилить трехмерные шахматы в AR. Хороший проект, чтобы потренироваться в разных базовых штуках вроде работы со светом.
Перевод на русский язык
С очками все не очень понятно – по слухам их опять отложили на неопределенное время. В любом случае, в этом году будет полезно подтянуть свои знания по AR/VR и поиграть с разными идеями.
Автор статьи рассказывает, как довольно просто запилить трехмерные шахматы в AR. Хороший проект, чтобы потренироваться в разных базовых штуках вроде работы со светом.
Перевод на русский язык
Как ускорить protocol conformance check
- Protocol conformance check каждый раз при выполнении в рантайме проходится по всем
- В iOS 16 завезли улучшение за счет использования специального кэша, который хранит в себе посчитанные заранее результаты соответствия протоколов. Но есть ряд кейсов, в которых эта фича не работает, в частности при первом запуске приложения, когда кеши еще не заполнены, при отсутствии результатов проверки соответствия или на старых версиях iOS.
- В статье рассказывается, как с помощью специально настроенных order файлов, которые объясняют линкеру, как правильно группировать код, можно улучшить скорость во всех описанных сценариях.
- Авторы статьи в своих тестах получили прирост на 20% на iPhone 7 с iOS 15.
Перевод на русский язык
- Protocol conformance check каждый раз при выполнении в рантайме проходится по всем
ProtocolConformanceDescriptor
, содержащимся в бинарнике. Чем больше у вас протоколов, тем медленнее выполняется эта операция.- В iOS 16 завезли улучшение за счет использования специального кэша, который хранит в себе посчитанные заранее результаты соответствия протоколов. Но есть ряд кейсов, в которых эта фича не работает, в частности при первом запуске приложения, когда кеши еще не заполнены, при отсутствии результатов проверки соответствия или на старых версиях iOS.
- В статье рассказывается, как с помощью специально настроенных order файлов, которые объясняют линкеру, как правильно группировать код, можно улучшить скорость во всех описанных сценариях.
- Авторы статьи в своих тестах получили прирост на 20% на iPhone 7 с iOS 15.
Перевод на русский язык
Релиз MarkdownUI 2.0
MarkdownUI – библиотека для работы с маркдауном в SwiftUI. Умеет рендерить изображения, заголовки, списки, цитаты, таблицы, код и многое другое.
На этой неделе вышла новая версия либы, куда завезли нативный SwiftUI рендеринг, кастомизацию через стили и темы, и полную поддержку GitHub Flavored Markdown.
Перевод на русский язык
MarkdownUI – библиотека для работы с маркдауном в SwiftUI. Умеет рендерить изображения, заголовки, списки, цитаты, таблицы, код и многое другое.
На этой неделе вышла новая версия либы, куда завезли нативный SwiftUI рендеринг, кастомизацию через стили и темы, и полную поддержку GitHub Flavored Markdown.
Перевод на русский язык
Лучшие практики в SwiftUI от Pointfree
Держите пять топовых статей про то, как писать поддерживаемый, надежный и масштабируемый код на SwiftUI.
*️⃣Parent-child view communication
*️⃣Identified arrays
*️⃣State-driven navigation
*️⃣Dependencies
*️⃣Testing
Перевод на русский язык
Держите пять топовых статей про то, как писать поддерживаемый, надежный и масштабируемый код на SwiftUI.
*️⃣Parent-child view communication
*️⃣Identified arrays
*️⃣State-driven navigation
*️⃣Dependencies
*️⃣Testing
Перевод на русский язык
www.pointfree.co
Modern SwiftUI: Parent-child communication
We are celebrating the conclusion of our 7-part series on Modern SwiftUI by releasing a blog post every day this week, detailing an area of SwiftUI development that can be modernized. We begin by exploring ways to facilitate parent-child communication in…
За Swift concurrency – будущее многопоточки в iOS. Если вы еще не вкатились, то начало года – самое время, чтобы начать подтягивать свои знания и экспериментировать с новыми API. Первые шаги вы можете сделать уже послезавтра, на воркшопе от Ексея Пантелеева.
— Устройство многопоточности на уровне iOS
— Новую структурированную многопоточность переход от GCD и основную проблему GCD
— Реальные примеры на async/await
— Использование Actors в продакшене
— Перспективы развития новой многопоточности
Вебинар является частью большого онлайн-курса «iOS Developer. Professional» от OTUS.
Дата: 2 февраля, 20:00
👉Для регистрации пройдите вступительный тест: https://otus.pw/9Syy/
— Устройство многопоточности на уровне iOS
— Новую структурированную многопоточность переход от GCD и основную проблему GCD
— Реальные примеры на async/await
— Использование Actors в продакшене
— Перспективы развития новой многопоточности
Вебинар является частью большого онлайн-курса «iOS Developer. Professional» от OTUS.
Дата: 2 февраля, 20:00
👉Для регистрации пройдите вступительный тест: https://otus.pw/9Syy/
Sketch теперь импортирует файлы из Figma
Очень-очень радостная новость. Если вы любите использовать Sketch, и сидите в Figma только из-за предпочтений дизайнеров или кого-то еще в команде, теперь вы сможете легко импортнуть
Очень-очень радостная новость. Если вы любите использовать Sketch, и сидите в Figma только из-за предпочтений дизайнеров или кого-то еще в команде, теперь вы сможете легко импортнуть
.fig
в Sketch.Как экономить на GitHub Actions
Раннеры на macOS стоят в 10 раз дороже, чем на Linux, поэтому думать об оптимизации расходов точно имеет смысл. В статье предлагается несколько техник:
🛠️Пересмотрите все задачи, которые гоняются на macOS, и вынесите независимые от операционки на Linux. Например, можно вынести прогон SwiftLint или SwiftFormat.
🫰Настройте фильтры, чтобы не гонять билды при изменениях в README или других ресурсах.
🏎️Запускать только одну джобу в моменте, и дать возможность свежим джобам убивать уже запущенные.
Перевод на русский язык
Раннеры на macOS стоят в 10 раз дороже, чем на Linux, поэтому думать об оптимизации расходов точно имеет смысл. В статье предлагается несколько техник:
🛠️Пересмотрите все задачи, которые гоняются на macOS, и вынесите независимые от операционки на Linux. Например, можно вынести прогон SwiftLint или SwiftFormat.
🫰Настройте фильтры, чтобы не гонять билды при изменениях в README или других ресурсах.
🏎️Запускать только одну джобу в моменте, и дать возможность свежим джобам убивать уже запущенные.
Перевод на русский язык
Большое исследование тимлидов и руководителей разработки
Из айосеров обычно получаются лучшие руководители разработки, потому что если ты познал покраску вьюшек, то познал практически все. Поэтому очень жду вашего участия в моем новом исследовании тимлидов. Если вы руководите кем-то, проходите его сами, а если руководят вами, отправляйте своему тимлиду! Результаты будут в открытом доступе в конце марта.
🤔Какие навыки для руководителей самые важные
💰По каким критериям оценивают их работу
💻Сколько времени уходит на написание кода
👋Как попадают в профессию, и куда из нее уходят
📚Полезные для развития каналы, курсы и книги
👉Пройти опрос
Из айосеров обычно получаются лучшие руководители разработки, потому что если ты познал покраску вьюшек, то познал практически все. Поэтому очень жду вашего участия в моем новом исследовании тимлидов. Если вы руководите кем-то, проходите его сами, а если руководят вами, отправляйте своему тимлиду! Результаты будут в открытом доступе в конце марта.
🤔Какие навыки для руководителей самые важные
💰По каким критериям оценивают их работу
💻Сколько времени уходит на написание кода
👋Как попадают в профессию, и куда из нее уходят
📚Полезные для развития каналы, курсы и книги
👉Пройти опрос
survey.alchemer.eu
Исследование рынка руководителей разработки, 2023
Исследование рынка руководителей разработки, 2023.
Пропозал по добавлению в Swift `package` – нового модификатора видимости
Если вы хотите сделать какие-то функции доступными всем модулям внутри пакета, но при этом недоступными другим пакетам, нормальной возможности для этого у вас нет. Приходится все объявлять public, но это сильно усложняет дальнейшую поддержку публичного API.
В пропозале предлагается добавить в Swift новый модификатор видимости – package. Он делает символы публичными в рамках текущего пакета, но при этом они не доступны его внешним пользователям. В первую очередь фича будет полезна авторам библиотек, поэтому, если среди вас такие есть, залетайте в обсуждение и накидывайте на вентилятор – продлится оно до 8 февраля.
Если вы хотите сделать какие-то функции доступными всем модулям внутри пакета, но при этом недоступными другим пакетам, нормальной возможности для этого у вас нет. Приходится все объявлять public, но это сильно усложняет дальнейшую поддержку публичного API.
В пропозале предлагается добавить в Swift новый модификатор видимости – package. Он делает символы публичными в рамках текущего пакета, но при этом они не доступны его внешним пользователям. В первую очередь фича будет полезна авторам библиотек, поэтому, если среди вас такие есть, залетайте в обсуждение и накидывайте на вентилятор – продлится оно до 8 февраля.
Доступ к командной строке из XCTest
Представьте, что вы сможете получить доступ к консоли прямо из тела теста. Это может открыть много неочевидных полезных возможностей:
📱Дергать недоступные через XCTest API фичи симулятора – отправку пушей, подмену локации, захват экрана
🎁Настраивать полноценный внешний мок-сервер
💻Выполнять любые действия с macOS через AppleScript
Реализация довольно очевидная – поднимаете локальный HTTP сервер, он дергает нужные команды в консоли, и возвращает их результат обратно в тест.
Перевод на русский язык
Представьте, что вы сможете получить доступ к консоли прямо из тела теста. Это может открыть много неочевидных полезных возможностей:
📱Дергать недоступные через XCTest API фичи симулятора – отправку пушей, подмену локации, захват экрана
🎁Настраивать полноценный внешний мок-сервер
💻Выполнять любые действия с macOS через AppleScript
Реализация довольно очевидная – поднимаете локальный HTTP сервер, он дергает нужные команды в консоли, и возвращает их результат обратно в тест.
Перевод на русский язык
Testableapple
Gaining access to Command-line from XCTest
XCTest works inside a sandbox, which means you literally can’t even stick your nose out of the box. Well, almost. Let’s bypass this limitation and learn how to gain access to the command line from tests.
Как работает очистка URLCache
В документации нигде не рассказано, как URLCache ведет себя при достижении лимита по памяти. Очевидное предположение о том, что под капотом используется LRU алгоритм неверно – на практике URLCache удаляет вообще все закешированное, как только упрется в лимит.
Автор попробовал отнаследоваться от URLCache и переопределить это поведение, так как в целом документация предполагает такой сценарий. Но это оказалось очень плохой идеей.
Перевод на русский язык
В документации нигде не рассказано, как URLCache ведет себя при достижении лимита по памяти. Очевидное предположение о том, что под капотом используется LRU алгоритм неверно – на практике URLCache удаляет вообще все закешированное, как только упрется в лимит.
Автор попробовал отнаследоваться от URLCache и переопределить это поведение, так как в целом документация предполагает такой сценарий. Но это оказалось очень плохой идеей.
Перевод на русский язык
This media is not supported in your browser
VIEW IN TELEGRAM
Лучший способ показывать пароль при логине
Не очень очевидный, но очень милый способ показывать и прятать введенный пароль.
Не очень очевидный, но очень милый способ показывать и прятать введенный пароль.
Ускорение старта приложения DoorDash
DoorDash оптимизировали время старта приложения на 60% с помощью следующего:
🖌️Переезд со
🤷♂️Отказ от использования
👀Аудит сторонних фреймворков, и перенос инициализации на время после вызова
Перевод на русский язык
DoorDash оптимизировали время старта приложения на 60% с помощью следующего:
🖌️Переезд со
String(describing:)
на ObjectIdentifier
– это помогло избавиться от подкапотных protocol conformance checks.🤷♂️Отказ от использования
AnyHashable
в пользу все того же ObjectIdentifier
.👀Аудит сторонних фреймворков, и перенос инициализации на время после вызова
main()
.Перевод на русский язык
Новые Tech Talks от Apple
👀Обзор последних фичей iOS из призмы тех, кто разрабатывает enterprise приложения
👀Metal Performance HUD с данными о производительности графики в реалтайме
👀Поддержка SharePlay в Game Center
👀Миграция на App Intents
👀Подключение Apple Pay к приложению
👀Обзор последних фичей iOS из призмы тех, кто разрабатывает enterprise приложения
👀Metal Performance HUD с данными о производительности графики в реалтайме
👀Поддержка SharePlay в Game Center
👀Миграция на App Intents
👀Подключение Apple Pay к приложению
Apple
Level up your apps and games - Discover - Apple Developer
Explore the latest developer videos and learn about Metal, SharePlay, enterprise apps and more.
Как следить за позицией скролла в SwiftUI
Перевод на русский язык
ScrollView
в SwiftUI, в отличие от UIScrollView
из UIKit, не дает простого способа следить за изменением позиции скролла. В статье разбирается, как с помощью GeometryReader
можно получать текущий фрейм content view, а потом переводить его в нужную нам систему координат. Как бонус – вспомните, как вообще под капотом работает скролл!Перевод на русский язык