Проблемы 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).
Обзор CI в Airbnb
Команда Airbnb рассказывает, как они используют AWS, Terraform и Packer, чтобы управлять фермой из 300 Mac устройств и легко обновлять их окружение.
Перевод на русский язык
Команда Airbnb рассказывает, как они используют AWS, Terraform и Packer, чтобы управлять фермой из 300 Mac устройств и легко обновлять их окружение.
Перевод на русский язык
Дизайнерский гайд по паттернам навигации
Human Interface Guidelines не очень подробно распространяются на тему навигации. Вместо них держите супер-подробный сторонний гайд, в котором рассматриваются все часто встречающиеся способы организации структуры экранов, и детали поведения их интерфейсов.
Human Interface Guidelines не очень подробно распространяются на тему навигации. Вместо них держите супер-подробный сторонний гайд, в котором рассматриваются все часто встречающиеся способы организации структуры экранов, и детали поведения их интерфейсов.
Как Uber трекает время старта приложения
В iOS 15 появился автоматический прогрев приложений. Иногда операционная система сама запускает процесс приложения, чтобы, если пользователь захочет его включить, ждать пришлось бы меньше. Эта фича сильно усложнила мониторинг времени старта приложения, и в статье инженеры Uber рассказывают, как перепилили свою систему мониторинга.
Если кратко – с помощью MetrikKit собираются pre-launch метрики, с помощью собственной логики – post-launch метрики. Дальше они отправляются на сервер, там склеиваются, и попадают в мониторинг.
В iOS 15 появился автоматический прогрев приложений. Иногда операционная система сама запускает процесс приложения, чтобы, если пользователь захочет его включить, ждать пришлось бы меньше. Эта фича сильно усложнила мониторинг времени старта приложения, и в статье инженеры Uber рассказывают, как перепилили свою систему мониторинга.
Если кратко – с помощью MetrikKit собираются pre-launch метрики, с помощью собственной логики – post-launch метрики. Дальше они отправляются на сервер, там склеиваются, и попадают в мониторинг.
Ищем инженера, который займется интеропом Kotlin и Swift
Одно из главных направлений развития Kotlin Multiplatform – хороший интероп с iOS экосистемой. Сейчас интероп Kotlin со Swift работает только через Objective-C. Мы хотим это улучшить, в том числе за счет интеропа напрямую со Swift. В команду, которая занимается этой задачей, мы ищем сильного инженера с iOS бэкграундом.
Какие основные требования у вакансии (сразу предупреждаю, что опыта разработки языков и рантаймов мы не ожидаем):
💻Сильный бэкграунд в любых нативных языках (C++/Swift/Objective-C/Rust)
🤔Базовое понимание того, как работают виртуальные машины, рантаймы и операционные системы.
Вакансия с релокацией: Нидерланды, Германия, Кипр, Сербия или Армения. Отправляйте резюме, а если будут вопросы – пишите напрямую мне (@etolstoy).
*️⃣А если вы работали в платформенных командах, занимались инфрой, сборками и CI/CD, то вот еще одна кайфовая вакансия в тему.
Одно из главных направлений развития Kotlin Multiplatform – хороший интероп с iOS экосистемой. Сейчас интероп Kotlin со Swift работает только через Objective-C. Мы хотим это улучшить, в том числе за счет интеропа напрямую со Swift. В команду, которая занимается этой задачей, мы ищем сильного инженера с iOS бэкграундом.
Какие основные требования у вакансии (сразу предупреждаю, что опыта разработки языков и рантаймов мы не ожидаем):
💻Сильный бэкграунд в любых нативных языках (C++/Swift/Objective-C/Rust)
🤔Базовое понимание того, как работают виртуальные машины, рантаймы и операционные системы.
Вакансия с релокацией: Нидерланды, Германия, Кипр, Сербия или Армения. Отправляйте резюме, а если будут вопросы – пишите напрямую мне (@etolstoy).
*️⃣А если вы работали в платформенных командах, занимались инфрой, сборками и CI/CD, то вот еще одна кайфовая вакансия в тему.
This media is not supported in your browser
VIEW IN TELEGRAM
DocC туториалы по Composable Architecture
Если вы хотите вкатиться в ТСА, но смотреть кучу видеоуроков не ваш формат, то попробуйте новый интерактивный туториал на DocC, в котором разбирается создание новой фичи, работа с сайд-эффектами и покрытие всего тестами.
Если вы хотите вкатиться в ТСА, но смотреть кучу видеоуроков не ваш формат, то попробуйте новый интерактивный туториал на DocC, в котором разбирается создание новой фичи, работа с сайд-эффектами и покрытие всего тестами.