Автоматизация релизов CLI тулы на Swift через GitHub Actions
В статье разбирается, как построить релизный пайплайн на GitHub Actions, который будет публиковать ваш CLI инструмент в Homebrew.
Перевод на русский язык
В статье разбирается, как построить релизный пайплайн на GitHub Actions, который будет публиковать ваш CLI инструмент в Homebrew.
Перевод на русский язык
www.polpiella.dev
Automating Swift command line tool releases with GitHub Actions
How I use GitHub Actions to automate the release of my Swift command line tools.
Как написать свой браузерный движок на Swift
Ходят слухи, что Apple скоро разрешат публиковать в сторе браузеры, основанные не на стандартном WebView. В честь этого автор статьи решил разработать полностью свой браузер, начиная от парсинга HTML, заканчивая рендерингом в SwiftUI.
Конечно, все максимально просто, никакой поддержки CSS и, тем более, JavaScript, но все равно интересно!
Ходят слухи, что Apple скоро разрешат публиковать в сторе браузеры, основанные не на стандартном WebView. В честь этого автор статьи решил разработать полностью свой браузер, начиная от парсинга HTML, заканчивая рендерингом в SwiftUI.
Конечно, все максимально просто, никакой поддержки CSS и, тем более, JavaScript, но все равно интересно!
Review Rocket – инструмент для автоматического анализа отзывов в App Store
Инструмент работает так:
1️⃣Вводите ссылку на ваше приложение
2️⃣Все отзывы пользователей выгружаются и прогоняются через LLM
3️⃣На выходе получаете список основных фиче-реквестов и жалоб
Инструмент работает так:
1️⃣Вводите ссылку на ваше приложение
2️⃣Все отзывы пользователей выгружаются и прогоняются через LLM
3️⃣На выходе получаете список основных фиче-реквестов и жалоб
Canvas в SwiftUI
Canvas – особый тип View, который позволяет процедурно рисовать различные фигуры, определяя их геометрию и стили. Помимо фигур, на канвас можно добавлять текст. изображения. Поддерживаются и анимации с помощью TimelineView.
Canvas – особый тип View, который позволяет процедурно рисовать различные фигуры, определяя их геометрию и стили. Помимо фигур, на канвас можно добавлять текст. изображения. Поддерживаются и анимации с помощью TimelineView.
Как работают механизмы синхронизации в CloudKit
Автор библиотеки CloudKitSession, которая позволяет сохранять в CloudKit произвольные данные без зависимости на Core Data, делится особенностями работы CloudKit, которых нет в документации:
✋Как избегать ошибок, и обрабатывать их, если они все же случатся
🤝Как работают алгоритмы разрешения конфликтов
📝Как работать со схемой данных
Автор библиотеки CloudKitSession, которая позволяет сохранять в CloudKit произвольные данные без зависимости на Core Data, делится особенностями работы CloudKit, которых нет в документации:
✋Как избегать ошибок, и обрабатывать их, если они все же случатся
🤝Как работают алгоритмы разрешения конфликтов
📝Как работать со схемой данных
Советы по работе с Codable в реальной жизни
При первом знакомстве Codable выглядит магией – структура автоматически наполняется нужными значениями из ответа сервера, все супер. Но в реальности все сложнее – бэкендеры могут возвращать пустые строки там, где ожидался url, случайно добавлять или удалять параметры, меняя схему ответа сервера.
В статье разбирается несколько советов по тому, как сделать парсинг ответов сервера более устойчивым к неожиданным изменениям, и как получать больше информации о его ошибках.
При первом знакомстве Codable выглядит магией – структура автоматически наполняется нужными значениями из ответа сервера, все супер. Но в реальности все сложнее – бэкендеры могут возвращать пустые строки там, где ожидался url, случайно добавлять или удалять параметры, меняя схему ответа сервера.
В статье разбирается несколько советов по тому, как сделать парсинг ответов сервера более устойчивым к неожиданным изменениям, и как получать больше информации о его ошибках.
Swiftjective-C
Debugging Codable
Codable is impressive, but it bails out quickly if .json doesn't appear exactly how it expects. Here's how I cleaned things up to pinpoint errors quickly.
Как попробовать фичи Swift 6 уже сейчас
Swift 6 выйдет не раньше 2024 года, но часть языковых фичей можно попробовать уже сейчас с помощью флага
Список всех фичей, которые можно включить, есть в файле Features.dev. Кроме этого, для проверки того, что вы правильно работаете с многопоточным кодом, можно использовать флаги
В статье разбираются все детали миграции, в том числе как активировать все новые языковые фичи в многомодульном проекте, и с какими проблемами вы можете столкнуться.
Перевод на русский язык
Swift 6 выйдет не раньше 2024 года, но часть языковых фичей можно попробовать уже сейчас с помощью флага
-enable-upcoming-feature
. Это поможет подготовить кодовую базу к будузей миграции и сделать ее менее болезненной.Список всех фичей, которые можно включить, есть в файле Features.dev. Кроме этого, для проверки того, что вы правильно работаете с многопоточным кодом, можно использовать флаги
-warn-concurrency
и -enable-actor-data-race-checks
.В статье разбираются все детали миграции, в том числе как активировать все новые языковые фичи в многомодульном проекте, и с какими проблемами вы можете столкнуться.
Перевод на русский язык
Compose Multiplatform теперь поддерживает iOS
Я думаю, что все вы слышали про Jetpack Compose – это примерно как SwiftUI, но от мира Android. Так вот, мы в JetBrains еще в прошлом году сделали его мультиплатформенным, и дали возможность шарить код с десктопными приложениями. А на прошлой неделе на KotlinConf был важный анонс – теперь Compose Multiplatform поддерживает еще и iOS таргет, правда пока только в Alpha!
Сразу разберем горячие вопросы:
🎨Фреймворк рисует компоненты на канвасе, примерно как Flutter.
🤖Пока что из коробки доступны только Material design компоненты. Ну и, конечно, можно верстать кастомный дизайн любой сложности.
📱Так как все рисуется на канвасе, многим компонентам пока не хватает привычного айосного поведения. Например, у скролла другая физика. Сразу предупрежу, что это просто ограничение альфы, а так все в работе.
💻Код, написанный для Android, полностью валиден для запуска на iOS, если не зависит от платформенных библиотек.
☁️Помимо iOS и Android есть поддержка всех десктопных операционных систем, а еще и экспериментальная поддержка Web.
🌡️Фреймворк еще в очень-очень сыром состоянии, и впереди много работы над тулингом, перфомансом, интеграцией с iOS платформой и компонентами.
Все это работает поверх Kotlin Multiplatform, поэтому наша изначальная идея остается актуальной. Мы не планируем заменять нативную разработку. Вы сами решаете, какую часть кода надо пошарить в вашем проекте, чтобы получить пользу – отдельный модуль, всю бизнес-логику, какие-то вспомогательные экраны вроде настроек, или вообще все.
Я буду очень рад, если вы попробуете Compose, и поделитесь впечатлениями и фидбэком. Так получилось, что я сейчас выполняю роль продакт менеджера в его команде, и как раз много думаю над тем, какая интеграция с iOS важна в первую очередь!
👉Основной сайт фреймворка
👉Шаблон старта нового проекта
👉Кейноут KotlinConf, где на 50 минуте рассказывают про Compose
👉Подробный доклад про Compose for iOS на отметке 5ч 13мин
Я думаю, что все вы слышали про Jetpack Compose – это примерно как SwiftUI, но от мира Android. Так вот, мы в JetBrains еще в прошлом году сделали его мультиплатформенным, и дали возможность шарить код с десктопными приложениями. А на прошлой неделе на KotlinConf был важный анонс – теперь Compose Multiplatform поддерживает еще и iOS таргет, правда пока только в Alpha!
Сразу разберем горячие вопросы:
🎨Фреймворк рисует компоненты на канвасе, примерно как Flutter.
🤖Пока что из коробки доступны только Material design компоненты. Ну и, конечно, можно верстать кастомный дизайн любой сложности.
📱Так как все рисуется на канвасе, многим компонентам пока не хватает привычного айосного поведения. Например, у скролла другая физика. Сразу предупрежу, что это просто ограничение альфы, а так все в работе.
💻Код, написанный для Android, полностью валиден для запуска на iOS, если не зависит от платформенных библиотек.
☁️Помимо iOS и Android есть поддержка всех десктопных операционных систем, а еще и экспериментальная поддержка Web.
🌡️Фреймворк еще в очень-очень сыром состоянии, и впереди много работы над тулингом, перфомансом, интеграцией с iOS платформой и компонентами.
Все это работает поверх Kotlin Multiplatform, поэтому наша изначальная идея остается актуальной. Мы не планируем заменять нативную разработку. Вы сами решаете, какую часть кода надо пошарить в вашем проекте, чтобы получить пользу – отдельный модуль, всю бизнес-логику, какие-то вспомогательные экраны вроде настроек, или вообще все.
Я буду очень рад, если вы попробуете Compose, и поделитесь впечатлениями и фидбэком. Так получилось, что я сейчас выполняю роль продакт менеджера в его команде, и как раз много думаю над тем, какая интеграция с iOS важна в первую очередь!
👉Основной сайт фреймворка
👉Шаблон старта нового проекта
👉Кейноут KotlinConf, где на 50 минуте рассказывают про Compose
👉Подробный доклад про Compose for iOS на отметке 5ч 13мин
Как работают anchors в SwiftUI
Anchors – это фича в SwiftUI, которая помогает выравнивать элементы лэйаута относительно друг друга. Это работает за счет возможности напрямую зареференсить «якорь» ожной вьюхи в другой.
Чтобы лучше разобраться, как работают якоря, в статье их реализуют с нуля чисто средствами SwiftUI, а затем сравнивают их с нативной реализацией.
Перевод на русский язык
Anchors – это фича в SwiftUI, которая помогает выравнивать элементы лэйаута относительно друг друга. Это работает за счет возможности напрямую зареференсить «якорь» ожной вьюхи в другой.
Чтобы лучше разобраться, как работают якоря, в статье их реализуют с нуля чисто средствами SwiftUI, а затем сравнивают их с нативной реализацией.
Перевод на русский язык
Воркшоп и обзор экосистемы Kotlin Multiplatform
Kotlin Multiplatform соединяет в себе лучшее от двух миров – кроссплатформы и нативной разработки. Вы получаете возможность переиспользовать всю бизнес-логику, не реализуя ее несколько раз, но сохраняете нативный интерфейс и перфоманс.
На воркшопе Анна Жаркова расскажет о том, как подойти к проектированию архитектуры приложения, использующего KMP, с какими особенностями интеграции с платформами предстоит столкнуться, разберет текущее состояние экосистемы и посоветует набор библиотек для решения стандартных задач.
Воркшоп является частью продвинутого онлайн-курса «iOS Developer. Professional» от OTUS
📆Дата: 4 мая, 20:00
👉Регистрация
Kotlin Multiplatform соединяет в себе лучшее от двух миров – кроссплатформы и нативной разработки. Вы получаете возможность переиспользовать всю бизнес-логику, не реализуя ее несколько раз, но сохраняете нативный интерфейс и перфоманс.
На воркшопе Анна Жаркова расскажет о том, как подойти к проектированию архитектуры приложения, использующего KMP, с какими особенностями интеграции с платформами предстоит столкнуться, разберет текущее состояние экосистемы и посоветует набор библиотек для решения стандартных задач.
Воркшоп является частью продвинутого онлайн-курса «iOS Developer. Professional» от OTUS
📆Дата: 4 мая, 20:00
👉Регистрация
Canopy – удобная обертка над CloudKit
Основная идея библиотеки – изолировать всю работу с CloudKit, дав возможность тестировать код без взаимодействия с реальным облаком. Для большинства задач вроде обработки серверных токенов и работы с батчами и курсорами в Canopy уже описана вся логика, но при желании ее можно переопределить.
📖Документация
💻Семпловое приложение
Основная идея библиотеки – изолировать всю работу с CloudKit, дав возможность тестировать код без взаимодействия с реальным облаком. Для большинства задач вроде обработки серверных токенов и работы с батчами и курсорами в Canopy уже описана вся логика, но при желании ее можно переопределить.
📖Документация
💻Семпловое приложение
Экспорт SwiftUI вьюх в формате изображений
ImageRenderer – это API, который позволяет экспортнуть иерархию SwiftUI вьюх как изображение. Например, это можно использовать для экспорта Swift Charts в PDF.
Часть параметров перед экспортом можно подкрутить, например масштаб или цвета.
Перевод на русский язык
ImageRenderer – это API, который позволяет экспортнуть иерархию SwiftUI вьюх как изображение. Например, это можно использовать для экспорта Swift Charts в PDF.
Часть параметров перед экспортом можно подкрутить, например масштаб или цвета.
Перевод на русский язык
Сообщество Garage Eight
Ребята из Garage Eight пилят разные инвестиционные продукты. А кроме этого, недушно рассказывают про свою внутреннюю кухню, травят карьерные байки и делятся полезными материалами.
Вот несколько клевых постов, с которых можно начать знакомство с каналом:
🤔Подборка материалов по развитию критического мышления
🤝Про опыт построения ML команды, в которой нет тимлида
💬Инструменты и практики дачи фидбэка
Реклама ООО «Гараж 8» erid: Pb3XmBtzsqba5zuiiqDfGmJRXGA6T5Yospdetvk
Ребята из Garage Eight пилят разные инвестиционные продукты. А кроме этого, недушно рассказывают про свою внутреннюю кухню, травят карьерные байки и делятся полезными материалами.
Вот несколько клевых постов, с которых можно начать знакомство с каналом:
🤔Подборка материалов по развитию критического мышления
🤝Про опыт построения ML команды, в которой нет тимлида
💬Инструменты и практики дачи фидбэка
Реклама ООО «Гараж 8» erid: Pb3XmBtzsqba5zuiiqDfGmJRXGA6T5Yospdetvk
Komondor – пакет для описания Git Hooks, использующихся в проекте
С помощью Komondor вы можете описать все git hooks, нужные вашему проекту, в одном блоке Package.swift файла. Он поддерживает аж 19 разных видов хуков, в том числе экзотику вроде pre-auto-gc или sendemail-validate.
Пакет вдохновлен Husky – аналогичным инструментом в Node.js экосистеме.
С помощью Komondor вы можете описать все git hooks, нужные вашему проекту, в одном блоке Package.swift файла. Он поддерживает аж 19 разных видов хуков, в том числе экзотику вроде pre-auto-gc или sendemail-validate.
Пакет вдохновлен Husky – аналогичным инструментом в Node.js экосистеме.
for-case-let
Вместо того, чтобы писать
Вместо того, чтобы писать
if let
внутри for цикла, вы можете использовать case let
прямо при его объявлении. Уровень вложенности кода падает, да и выглядит чище.This media is not supported in your browser
VIEW IN TELEGRAM
Как пропустить экран логина с помощью брейкпойнтов в Xcode
Xcode позволяет автоматически выполнять различные lldb команды при остановке на брейкпойнте. В статье разбирается как настроить брейкпойнты таким образом, чтобы автоматически заполнять логин и пароль при дебаге приложения.
Перевод на русский язык
Xcode позволяет автоматически выполнять различные lldb команды при остановке на брейкпойнте. В статье разбирается как настроить брейкпойнты таким образом, чтобы автоматически заполнять логин и пароль при дебаге приложения.
Перевод на русский язык
Результаты Swift Community Awards
Подборка самых высоко оцененных сообществом инструментов, сервисов, опенсорсных проектов и докладов. Загляните, может быть, пропустили интересные штуки! Вот несколько классных:
🍍TelemetryDeck – легковесная аналитика с упором на приватность собираемых данных
🍍IceCubes – очень красивый опенсорсный клиент для Мастодона
🍍Bakery – простой конструктор иконок приложений
Подборка самых высоко оцененных сообществом инструментов, сервисов, опенсорсных проектов и докладов. Загляните, может быть, пропустили интересные штуки! Вот несколько классных:
🍍TelemetryDeck – легковесная аналитика с упором на приватность собираемых данных
🍍IceCubes – очень красивый опенсорсный клиент для Мастодона
🍍Bakery – простой конструктор иконок приложений
Hacking with Swift
Swift Community Awards
The Swift Community Awards help us recognize the developers, conferences, companies, and more that help make our community so vibrant.
Foundation на Swift
В конце прошлого года Apple заанонсили, что переписывают Foundation на Swift, параллельно разбивая его на маленькие пакеты. Спустя всего четыре месяца первое превью уже выпущено на GitHub!
Пока в библиотеке доступна только часть типов, например AttributedString, Date и Calendar. Ключевая особенность – улучшенный перфоманс. Например, Calendar показывает 20% улучшение, а форматирование дат через FormatStyle – 150%. Самое крутое, конечно, JSONEncoder/JSONDecoder, которые показывают прирост в 2-5 раз.
Следующие планы – перенести
В конце прошлого года Apple заанонсили, что переписывают Foundation на Swift, параллельно разбивая его на маленькие пакеты. Спустя всего четыре месяца первое превью уже выпущено на GitHub!
Пока в библиотеке доступна только часть типов, например AttributedString, Date и Calendar. Ключевая особенность – улучшенный перфоманс. Например, Calendar показывает 20% улучшение, а форматирование дат через FormatStyle – 150%. Самое крутое, конечно, JSONEncoder/JSONDecoder, которые показывают прирост в 2-5 раз.
Следующие планы – перенести
URL
, Bundle
, FileManager
, FileHandle
, Process
, SortDescriptor
, SortComparator,
а заодно – обрабатывать фичереквесты и баги от коммьюнити.Swift для TensorFlow все
Вторая новость про Swift чуть менее радостная. Google тихо прикрыл все работы, связанные со Swift для TensorFlow, и заархивировал проект. Из заметных достижений за время их работы:
👉В компилятор добавили поддержку differentiable programming, причем ее саппорт продолжится.
👉Запустили несколько проектов, которые продолжат поддерживаться: PythonKit для интеропа с Python, swift-jupyter для возможности использовать ноутбуки, swift-benchmark для, как ни удивительно, бенчмарков кода.
Вторая новость про Swift чуть менее радостная. Google тихо прикрыл все работы, связанные со Swift для TensorFlow, и заархивировал проект. Из заметных достижений за время их работы:
👉В компилятор добавили поддержку differentiable programming, причем ее саппорт продолжится.
👉Запустили несколько проектов, которые продолжат поддерживаться: PythonKit для интеропа с Python, swift-jupyter для возможности использовать ноутбуки, swift-benchmark для, как ни удивительно, бенчмарков кода.
Предсказания анонсов на WWDC’23
Bloomberg подбили все известные утечки в одном материале:
😎Reality Headset, премиальная AR/VR гарнитура
📱Новая операционка для гарнитуры, xrOS
⌚️Крупный апдейт в watchOS 10, в котором должны сильно переработать интерфейс
💻Новые макбуки, но вроде как все еще на М2
✋Никаких крупных апдейтов в iOS/macOS не ожидается, не считая возможности загружать приложения на iOS в обход официального магазина
Перевод на русский язык
Bloomberg подбили все известные утечки в одном материале:
😎Reality Headset, премиальная AR/VR гарнитура
📱Новая операционка для гарнитуры, xrOS
⌚️Крупный апдейт в watchOS 10, в котором должны сильно переработать интерфейс
💻Новые макбуки, но вроде как все еще на М2
✋Никаких крупных апдейтов в iOS/macOS не ожидается, не считая возможности загружать приложения на iOS в обход официального магазина
Перевод на русский язык
Bloomberg.com
Apple Plans to Launch More Than Just Its New Headset at WWDC
Apple’s June Worldwide Developers Conference is shaping up to be one of its biggest product launch events ever — and not just because of the long-awaited mixed-reality headset. Also: The company announces the death of its longtime communications chief, new…