История про то, как крупный опенсорсный проект переехал с лицензии Apache на BSL и стал платным
- Akka – микросервисный реактивный фреймворк, который распространялся по бесплатной лицензии Apache 2.0
- Им пользуется очень много людей, включая крупные корпорации вроде Disney
- На этой неделе его автор решил поменять лицензию на BSL 1.1, которая требует оплаты за коммерческое использование
- Лицензия применяется только к новым релизам фреймворка
- Такая ситуация может произойти и для любой мобильной зависимости. Поэтому, когда вы решаете построить все приложение поверх какого-то чужого опенсорс проекта, такой риск тоже стоит держать в уме
- Akka – микросервисный реактивный фреймворк, который распространялся по бесплатной лицензии Apache 2.0
- Им пользуется очень много людей, включая крупные корпорации вроде Disney
- На этой неделе его автор решил поменять лицензию на BSL 1.1, которая требует оплаты за коммерческое использование
- Лицензия применяется только к новым релизам фреймворка
- Такая ситуация может произойти и для любой мобильной зависимости. Поэтому, когда вы решаете построить все приложение поверх какого-то чужого опенсорс проекта, такой риск тоже стоит держать в уме
akka.io
Why we are changing the license for Akka
Today, we're announcing a change to Akka's license model so that Akka can be a thriving project for many decades.
Не используйте escaping closures в SwiftUI
Автор показывает, как использование escaping closures в SwiftUI, которое многим может показаться более эффективным, на самом деле ломает memoization.
Автор показывает, как использование escaping closures в SwiftUI, которое многим может показаться более эффективным, на самом деле ломает memoization.
MarkCodable – сериализация Swift структур в Markdown
- Markdown – менее гибкий формат, чем JSON, но его можно использовать для хранения структурных данных. Его главный плюс – хорошая читаемость из коробки
- Сверстанные в markdown таблицы могут выступать в роли простой базы данных. А если залить их на GitHub, то вы получите готовый бэкенд для приложения
- Другие примеры использования Markdown-структур – конфигурационные файлы, хранение моков для тестов
- Markdown – менее гибкий формат, чем JSON, но его можно использовать для хранения структурных данных. Его главный плюс – хорошая читаемость из коробки
- Сверстанные в markdown таблицы могут выступать в роли простой базы данных. А если залить их на GitHub, то вы получите готовый бэкенд для приложения
- Другие примеры использования Markdown-структур – конфигурационные файлы, хранение моков для тестов
Шаблон Figma для Dynamic Island
Забирайте готовый шаблон для создания виджета с анимированным переходом.
Забирайте готовый шаблон для создания виджета с анимированным переходом.
Используете ли вы платные инструменты для iOS разработки (за исключением дев аккаунта)?
Anonymous Poll
7%
Да, регулярно плачу
18%
Да, один или несколько раз что-то купил
44%
Нет, не плачу ни за что
5%
Нет, скачиваю пиратские копии
26%
Посмотреть результаты
Улучшения перфоманса в ТСА
Вышел новый релиз The Composable Architecture, в котором был сделан упор на улучшения перфоманса. В статье разбираются все проблемные места предыдущей версии архитектуры, и то, как их полечили.
Вышел новый релиз The Composable Architecture, в котором был сделан упор на улучшения перфоманса. В статье разбираются все проблемные места предыдущей версии архитектуры, и то, как их полечили.
www.pointfree.co
Improving Composable Architecture performance
The latest release of the Composable Architecture brings a number of performance improvements to its tools, and best of all, most of the changes came from collaboration with people in the TCA community! 🤗
This media is not supported in your browser
VIEW IN TELEGRAM
Анимации в SwiftUI с Accelerate и VectorArithmetic
В статье пошагово разбирается, как реализовать анимацию лавового пузыря с быстрыми вычислениями на фреймворке Accelerate.
В статье пошагово разбирается, как реализовать анимацию лавового пузыря с быстрыми вычислениями на фреймворке Accelerate.
Fixes vs Patches
Любой код содержит ошибки – баги, эксепшны, проблемы перфоманса. Глобально к их исправлению можно подойти двумя способами:
☝️Пофиксить. Найти корневую причину проблемы, понять ее, исправить поведение системы и покрыть тестами.
✌️Запатчить. Не докапываясь до причины, сделать так, чтобы нежелательное поведение в данном конкретном случае больше не повторялось.
Ни один из способов нельзя назвать абсолютно верным, все зависит от контекста. Понимание различия между ними важно, чтобы правильно документировать последствия. Это менее важно для фиксов, но очень важно для патчей – иначе, спустя год, никто не сможет разобраться в костыле, который вы оставили.
Любой код содержит ошибки – баги, эксепшны, проблемы перфоманса. Глобально к их исправлению можно подойти двумя способами:
☝️Пофиксить. Найти корневую причину проблемы, понять ее, исправить поведение системы и покрыть тестами.
✌️Запатчить. Не докапываясь до причины, сделать так, чтобы нежелательное поведение в данном конкретном случае больше не повторялось.
Ни один из способов нельзя назвать абсолютно верным, все зависит от контекста. Понимание различия между ними важно, чтобы правильно документировать последствия. Это менее важно для фиксов, но очень важно для патчей – иначе, спустя год, никто не сможет разобраться в костыле, который вы оставили.
Bas’ Blog
On Fixing vs Patching
We programmers have — most likely — all fixed a bunch of bugs in our time. That edge case that was overlooked. That out of bounds error that we thought could never occur. That early return being hit because that one thing could be nil after all. That crash…
Обновления Human Interface Guidelines для новых девайсов и iOS 16
Сразу после выхода новых устройств и версий операционных систем команда дизайна Apple выпустила много новых гайдов:
⌚️Action Button на Watch Ultra
🤝Шаринг данных и коллаборативная работа
📐Как работать с layout и safe areas
✍️Edit Menu
⤵️Pull-down Buttons
⤴️Pop-up Buttons
📝Контекстные меню
🤔Общие рекомендации по работе с любыми меню
Сразу после выхода новых устройств и версий операционных систем команда дизайна Apple выпустила много новых гайдов:
⌚️Action Button на Watch Ultra
🤝Шаринг данных и коллаборативная работа
📐Как работать с layout и safe areas
✍️Edit Menu
⤵️Pull-down Buttons
⤴️Pop-up Buttons
📝Контекстные меню
🤔Общие рекомендации по работе с любыми меню
Автоматическое оборачивание кода в closure в Xcode 14
Если в Xcode 14 выделить блок кода и нажать {, он будет завернут в closure, а курсор перенесется на ее первую строку.
Если в Xcode 14 выделить блок кода и нажать {, он будет завернут в closure, а курсор перенесется на ее первую строку.
X (formerly Twitter)
Edward Sánchez (@edwardsanchez) on X
In Xcode 14, if you select a block of text and type {, it embeds the block in a closure and puts the cursor in the beginning of the closure so you can define it. Works great for SwiftUI!.
Live Activities в Xcode 14.1 Beta
В новой Beta Xcode стал доступен фреймворк ActivityKit, а в iOS 16.1 Beta их можно потестировать. К этому случаю Apple опубликовали два гайда:
🌅Как отображать данные в Live Activity
💌Как обновлять Live Activity с помощью пушей
В новой Beta Xcode стал доступен фреймворк ActivityKit, а в iOS 16.1 Beta их можно потестировать. К этому случаю Apple опубликовали два гайда:
🌅Как отображать данные в Live Activity
💌Как обновлять Live Activity с помощью пушей
Apple
Develop for Live Activities with iOS 16.1 beta and Xcode 14.1 beta - Latest News - Apple Developer
Discover how you can build Live Activities for your apps using the new ActivityKit framework, now available in iOS 16.1 beta and Xcode 14.1 beta. Live Activities help people keep track of your app’s content with real-time updates. Your app’s Live Activities…
Вышел Swift 5.7
Вместе с новыми iOS и Xcode вышла и новая версия Swift. В официальном блогпосте напоминают об основных изменениях в версии и дают список всех language proposals, которые были реализованы.
Вместе с новыми iOS и Xcode вышла и новая версия Swift. В официальном блогпосте напоминают об основных изменениях в версии и дают список всех language proposals, которые были реализованы.
Редактирование navigationTitle в SwiftUI
В iOS 16 появилась возможность биндить navigationTitle к строке. С помощью этого можно дать пользователям возможность редактировать название открытой сейчас страницы прямо из тулбара с названием. Это может быть особенно удобно для приложений, работающих с документами.
В iOS 16 появилась возможность биндить navigationTitle к строке. С помощью этого можно дать пользователям возможность редактировать название открытой сейчас страницы прямо из тулбара с названием. Это может быть особенно удобно для приложений, работающих с документами.
API контекстного меню для нескольких элементов коллекции
В iOS 16 добавили новый API для CollectionView – collectionView(_:contextMenuConfigurationForItemsAt:point:). Теперь, если вы выделите сразу несколько элементов, можно вызвать контекстное меню для действий над всеми ними.
В iOS 16 добавили новый API для CollectionView – collectionView(_:contextMenuConfigurationForItemsAt:point:). Теперь, если вы выделите сразу несколько элементов, можно вызвать контекстное меню для действий над всеми ними.
X (formerly Twitter)
Jordan Morgan (@JordanMorgan10) on X
Reading the @viticci iOS 16 review and I no idea this new interaction existed. When batch selecting, if you try to bring up a context menu on any of the items - you get this rad interaction grouping them together.
Is there new API for this, or do you just…
Is there new API for this, or do you just…
Разбор причин долгого запуска разных приложений
Ребята из EmergeTools проанализировали несколько крупных приложений из App Store и рассказали, что замедляет время их старта.
Ребята из EmergeTools проанализировали несколько крупных приложений из App Store и рассказали, что замедляет время их старта.
This media is not supported in your browser
VIEW IN TELEGRAM
Сравнение принципов работы SwiftUI и Jetpack Compose
Jetpack Compose – декларативный UI фреймворк, на который сейчас активно переезжают Android разработчики. В статье его сравнивают со SwiftUI в вопросах лэйаута, работы со стейтом и инструментов.
Jetpack Compose – декларативный UI фреймворк, на который сейчас активно переезжают Android разработчики. В статье его сравнивают со SwiftUI в вопросах лэйаута, работы со стейтом и инструментов.
GitHub бейджи для Xcode Cloud проектов
- В Readme опенсорсных проектов обычно добавляют бейджи, которые показывают текущий статус сборки – проходит или нет
- Для Xcode Cloud нативных бейджей пока нет
- В статье рассказывается, как с помощью shields.io автоматически генерировать бейдж, который будет показывать количество прошедших тестов
- В Readme опенсорсных проектов обычно добавляют бейджи, которые показывают текущий статус сборки – проходит или нет
- Для Xcode Cloud нативных бейджей пока нет
- В статье рассказывается, как с помощью shields.io автоматически генерировать бейдж, который будет показывать количество прошедших тестов
Medium
Creating GitHub Build Status Badges for Xcode Cloud Builds
Xcode Cloud doesn’t have status badges at the moment. Can we build one?
Архитектура системы кеширования
- Для хранения различных типов данных часто нужны разные механизмы кеширования
- Автор предлагает разбить всю систему на три слоя – Utils для запроса конкретного типа данных, AssetsManager, разруливающего, какой тип кеширования для какого типа данных выбрать, и непосредственную реализацию алгоритмов кеширования
- Для хранения различных типов данных часто нужны разные механизмы кеширования
- Автор предлагает разбить всю систему на три слоя – Utils для запроса конкретного типа данных, AssetsManager, разруливающего, какой тип кеширования для какого типа данных выбрать, и непосредственную реализацию алгоритмов кеширования
This media is not supported in your browser
VIEW IN TELEGRAM
Короткий синтаксис if let в Swift 5.7
Начиная со Swift 5.7, синтаксис для if let и guard let стал намного короче. Хотя мнения насчет того, насколько это правильное решение, продолжают расходиться.
Начиная со Swift 5.7, синтаксис для if let и guard let стал намного короче. Хотя мнения насчет того, насколько это правильное решение, продолжают расходиться.