Несколько советов про Reachability
👉Вместо проверок на наличие соединения перед каждым запросом используйте флаг
👉Если вам надо ограничить приложение работой только по WiFi, настройте
Перевод на русский язык
👉Вместо проверок на наличие соединения перед каждым запросом используйте флаг
waitsForConnectivity
, благодаря которому активный запрос будет дожидаться появления сети.👉Если вам надо ограничить приложение работой только по WiFi, настройте
URLSessionConfiguration
таким образом, чтобы разрешать только определенные типы соединений.Перевод на русский язык
Когда пользователь лучше всего конвертится во внутреннюю покупку
Феликс Краузе, бывший ментейнер Fastlane, сейчас запускает новый продукт – ContextSDK. Он предсказывает, когда лучше всего предложить пользователю совершить внутреннюю покупку, основываясь на анализе кучи факторов. Вот несколько примеров того, что может значимо влиять на конверсию:
🌟Хуже всего люди совершают покупки, когда пользуются приложением на ходу, когда телефон лежит на столе, у него остается мало заряда батареи, или когда он воспроизводит музыку.
🌟Лучше всего конвертятся те, кто лежит или сидит.
🌟Чем новее модель телефона и чем свежее версия операционной системы, тем выше конверсия в покупку.
🌟Время суток тоже влияет. В первой половине дня конверсии в целом лучше.
Феликс Краузе, бывший ментейнер Fastlane, сейчас запускает новый продукт – ContextSDK. Он предсказывает, когда лучше всего предложить пользователю совершить внутреннюю покупку, основываясь на анализе кучи факторов. Вот несколько примеров того, что может значимо влиять на конверсию:
🌟Хуже всего люди совершают покупки, когда пользуются приложением на ходу, когда телефон лежит на столе, у него остается мало заряда батареи, или когда он воспроизводит музыку.
🌟Лучше всего конвертятся те, кто лежит или сидит.
🌟Чем новее модель телефона и чем свежее версия операционной системы, тем выше конверсия в покупку.
🌟Время суток тоже влияет. В первой половине дня конверсии в целом лучше.
ETTrace – новый фреймворк для профилирования приложений
Основные отличия от Time Profiler:
- Более простой интерфейс для поиска проблем в перфомансе
- Более быстрый, менее флакующий профилировщик
- Корректная символизация
- Готов к работе в CI
Перевод на русский язык
Основные отличия от Time Profiler:
- Более простой интерфейс для поиска проблем в перфомансе
- Более быстрый, менее флакующий профилировщик
- Корректная символизация
- Готов к работе в CI
Перевод на русский язык
Проблемы MVx архитектур
В статье разбирается три проблемы, из-за которой типичные «слоистые» архитектуры вроде MVC, MVP и MVVM плохо ложатся на большинство приложений.
🤏Проблема остатка: не все фичи идеально раскладываются на все слои, в результате приходится иметь много бесполезного бойлерплейта.
🔎Проблема масштабирования: при расширении фичи ее код начинает сильно разбухать, так как вместо нормальной декомпозиции ее пытаются впихнуть в уже написанный юзкейс.
🤔Проблема разрывов в логике: архитектура пишется таким образом, который зависит от строгой последовательности выполнения действий в разных компонентах, в то время как механизмов, обеспечивающих эту последовательность, нет.
Любви достоин только VIPER.
В статье разбирается три проблемы, из-за которой типичные «слоистые» архитектуры вроде MVC, MVP и MVVM плохо ложатся на большинство приложений.
🤏Проблема остатка: не все фичи идеально раскладываются на все слои, в результате приходится иметь много бесполезного бойлерплейта.
🔎Проблема масштабирования: при расширении фичи ее код начинает сильно разбухать, так как вместо нормальной декомпозиции ее пытаются впихнуть в уже написанный юзкейс.
🤔Проблема разрывов в логике: архитектура пишется таким образом, который зависит от строгой последовательности выполнения действий в разных компонентах, в то время как механизмов, обеспечивающих эту последовательность, нет.
Любви достоин только VIPER.
This media is not supported in your browser
VIEW IN TELEGRAM
Анимация песочных часов на SwiftUI
Эффект реализован с помощью заблюренных линейных градиентов и SpriteKit частиц. Код можно посмотреть здесь.
Эффект реализован с помощью заблюренных линейных градиентов и SpriteKit частиц. Код можно посмотреть здесь.
Как оптимизировать count запросы в Core Data
В статье приводится 12 способов писать более эффективные count запросы к данным. Для каждого из них разбирается сгенерированный в итоге SQL.
В статье приводится 12 способов писать более эффективные count запросы к данным. Для каждого из них разбирается сгенерированный в итоге SQL.
Medium
Count Queries in Core Data: The Master Guide
This article will introduce several methods for querying and using count in Core Data, suitable for different scenarios.
Overlays в SwiftUI
Как можно использовать накладывающиеся друг на друга вьюхи для того, чтобы обеспечить структурную идентичность, и для того, чтобы реализовать кастомную анимацию навигации.
Как можно использовать накладывающиеся друг на друга вьюхи для того, чтобы обеспечить структурную идентичность, и для того, чтобы реализовать кастомную анимацию навигации.
Swift with Majid
The power of overlays in SwiftUI
An overlay is a view drawing on top of another view. And today, we will talk about two interesting use cases of using overlays in SwiftUI. One of them allows us to keep the structural identity of the view, and another one becomes very handy whenever you build…
Фреймворк TabularData для ежедневных задач
TabularData – системный фреймворк для того, чтобы готовить данные для обучения ML моделей. Если работали с DataFrame в Python – вот это он.
В статье разбирается, как с помощью этого фреймворка можно работать с данными в ваших повседневных задачах. И самое интересное – как с его помощью реализовать красивые логи для ваших структур данных.
Перевод на русский язык
TabularData – системный фреймворк для того, чтобы готовить данные для обучения ML моделей. Если работали с DataFrame в Python – вот это он.
В статье разбирается, как с помощью этого фреймворка можно работать с данными в ваших повседневных задачах. И самое интересное – как с его помощью реализовать красивые логи для ваших структур данных.
Перевод на русский язык
This media is not supported in your browser
VIEW IN TELEGRAM
Кастомный SegmentedControl на SwiftUI
Стандартный SegmentedControl практически не кастомизируется, поэтому, если ваш дизайн отличается от стандартного, компонент придется реализовывать самому. Автор начинает с самой наивной реализации, и заканчивает гибким контролом с плавными анимациями.
Стандартный SegmentedControl практически не кастомизируется, поэтому, если ваш дизайн отличается от стандартного, компонент придется реализовывать самому. Автор начинает с самой наивной реализации, и заканчивает гибким контролом с плавными анимациями.
Mojo – новый язык от Криса Латтнера
Новость не про iOS, но зато про Латтнера, человека, который раньше стоял за Swift. Так вот, на прошлой неделе он запустил новый язык Mojo, с синтаксисом, похожим на Python, и производительностью, стремящейся к С++. Основной юзкейс – обучать модели и работать с ними на сервере, используя один и тот же язык.
Новость не про iOS, но зато про Латтнера, человека, который раньше стоял за Swift. Так вот, на прошлой неделе он запустил новый язык Mojo, с синтаксисом, похожим на Python, и производительностью, стремящейся к С++. Основной юзкейс – обучать модели и работать с ними на сервере, используя один и тот же язык.
fast.ai
Mojo may be the biggest programming language advance in decades – fast.ai
Mojo is a new programming language, based on Python, which fixes Python’s performance and deployment problems.
DSL на Swift
Большое количество примеров того, как на Swift можно определять свои DSL, и строить на их основе архитектуру всего приложения.
Большое количество примеров того, как на Swift можно определять свои DSL, и строить на их основе архитектуру всего приложения.
Jenkins для iOS разработки
Подробный гайд по тому, как поднять CI сервер на Jenkins: настроить окружение, сконфигурировать джобы и написать Jenkinsfile.
Перевод на русский язык
Подробный гайд по тому, как поднять CI сервер на Jenkins: настроить окружение, сконфигурировать джобы и написать Jenkinsfile.
Перевод на русский язык
www.roger.ml
✍️ Step-by-Step Jenkins Setup for iOS in 2023 | Ultimate Guide
I spent over 3 weeks setting it up the first time. Don't make the same mistakes I did!
This media is not supported in your browser
VIEW IN TELEGRAM
Squirrel – приложение, которое чинит скроллинг в симуляторе
В iOS симуляторе не работает скроллинг. Вернее работает, но он не интегрируется с колесиком мыши или трекпадом. Squirrel – приложение, которое висит в трее, следит за скроллом, и с помощью Accessibility делает нужный жест в симуляторе.
В iOS симуляторе не работает скроллинг. Вернее работает, но он не интегрируется с колесиком мыши или трекпадом. Squirrel – приложение, которое висит в трее, следит за скроллом, и с помощью Accessibility делает нужный жест в симуляторе.
Code Scanning и Dependabot для Swift на GitHub
GitHub анонсировали расширенную поддержку Swift. Во-первых, на пулл реквестах вы будете автоматически получать уведомления о различных потенциальных дырах в безопасности. Во-вторых, Dependabot будет сообщать о том, что в ваших зависимостях найдены уязвимости.
Пока поддержка в Beta, но вы можете попробовать ее на своем опенсорсном проекте и оставить команде фидбэк.
GitHub анонсировали расширенную поддержку Swift. Во-первых, на пулл реквестах вы будете автоматически получать уведомления о различных потенциальных дырах в безопасности. Во-вторых, Dependabot будет сообщать о том, что в ваших зависимостях найдены уязвимости.
Пока поддержка в Beta, но вы можете попробовать ее на своем опенсорсном проекте и оставить команде фидбэк.
Swift Forums
Beta testers wanted: Get a sneak peek at GitHub’s code scanning support for Swift!
👋 Pierre from GitHub here. What’s happening? On June 1 2023, just ahead of WWDC 23, GitHub is adding Swift support to a number of our Advanced Security features: GitHub code scanning support for Swift enters public beta to help open-source and enterprise…
Дайджест Swift Evolution за апрель-май
✅SE-0314: AsyncStream and AsyncThrowingStream
✅SE-0388: Convenience AsyncStream.makeStream methods
✅SE-0389: Attached Macros
✅SE-0391: Package Registry Publish
✅SE-0393: Value and Type Parameter Packs
✅SE-0394: Package Manager Support for Custom Macros
Перевод на русский язык
✅SE-0314: AsyncStream and AsyncThrowingStream
✅SE-0388: Convenience AsyncStream.makeStream methods
✅SE-0389: Attached Macros
✅SE-0391: Package Registry Publish
✅SE-0393: Value and Type Parameter Packs
✅SE-0394: Package Manager Support for Custom Macros
Перевод на русский язык
Substack
Swift Evolution Monthly: March + April '23
1-Year Anniversary: Summaries on GitHub! AsyncStream, Attached Macros (in SwiftPM), Package Publish, Parameter Packs, Feature Flags & Foundation Preview.
This media is not supported in your browser
VIEW IN TELEGRAM
Dynamic Island как индикатор прогресса чтения
Обязательно посмотрите весь тред – там еще две реализации. Эта, правда, моя любимая.
Обязательно посмотрите весь тред – там еще две реализации. Эта, правда, моя любимая.
DeviceDiscoveryUI – системный фреймворк для соединения tvOS и iOS
Год назад Apple выпустили DeviceDiscoveryUI – фреймворк, который позволяет приложению на Apple TV обмениваться данными с iPhone, iPad и Apple Watch по локальной сети.
Статья – золото, так как официальная документация практически отсутствует, тестовые примеры не компилируются и используют не существующий API, а сам фреймворк работает не особо надежно.
Год назад Apple выпустили DeviceDiscoveryUI – фреймворк, который позволяет приложению на Apple TV обмениваться данными с iPhone, iPad и Apple Watch по локальной сети.
Статья – золото, так как официальная документация практически отсутствует, тестовые примеры не компилируются и используют не существующий API, а сам фреймворк работает не особо надежно.
SwiftFiddle – онлайн Swift плейграунд
SwiftFiddle – онлайн редактор Swift кода. Из интересного:
➡️Можно шарить сниппеты по ссылке.
➡️Код можно собирать любой версией компилятора, начиная со Swift 2, заканчивая последними nightly сборками.
➡️Можно использовать некоторые официальные библиотеки, например swift-collections.
SwiftFiddle – онлайн редактор Swift кода. Из интересного:
➡️Можно шарить сниппеты по ссылке.
➡️Код можно собирать любой версией компилятора, начиная со Swift 2, заканчивая последними nightly сборками.
➡️Можно использовать некоторые официальные библиотеки, например swift-collections.
SwiftFiddle - Swift Online Playground
Swift Online Playground
SwiftFiddle is an online playground for creating, sharing and embedding Swift fiddles (little Swift programs that run directly in your browser).