🔀 Паттерн стратегия в Swift
Подготовил перевод статьи про реализацию паттерна стратегия.
В общих чертах #strategy #pattern – шаблон из группы поведенческих паттернов проектирования, который определяет семейство схожих алгоритмов, помещает каждый из них в отдельный класс и позволяет использовать их во время выполнения приложения (в runtime).
Короче говоря: инкапсуляция в классы, переиспользование и возможность менять поведение в runtime.
Сценарии использования
1. Разные способы детать одно и то же;
2. Альтерантива наследованию;
3. Альтерантива ветвлению логики: if/else
Пример
Хотим печатать логи, при этом необходимо иметь возможность использовать разные стили: в верхнем регистре, нижнем или использовать особое форматирование ошибок.
При реализации паттерна стратегия необходимо выделить несколько сущностей:
What
Протокол, который определяет желаемое действие, в нашем случае писать лог.
Who
Объект, который содержит стратегию и будет её исползовать.
How
Конкретная реализация стратегии, то есть конкретное действие.
Пример использования:
В статье также представлены другие примеры, такие как форма валидации, настройка ячеек и другие.
https://medium.com/flawless-app-stories/strategy-pattern-in-swift-1462dbddd9fe
Подготовил перевод статьи про реализацию паттерна стратегия.
В общих чертах #strategy #pattern – шаблон из группы поведенческих паттернов проектирования, который определяет семейство схожих алгоритмов, помещает каждый из них в отдельный класс и позволяет использовать их во время выполнения приложения (в runtime).
Короче говоря: инкапсуляция в классы, переиспользование и возможность менять поведение в runtime.
Сценарии использования
1. Разные способы детать одно и то же;
2. Альтерантива наследованию;
3. Альтерантива ветвлению логики: if/else
Пример
Хотим печатать логи, при этом необходимо иметь возможность использовать разные стили: в верхнем регистре, нижнем или использовать особое форматирование ошибок.
При реализации паттерна стратегия необходимо выделить несколько сущностей:
What
Протокол, который определяет желаемое действие, в нашем случае писать лог.
protocol LoggerStrategy {
func log(_ message: String)
}
Who
Объект, который содержит стратегию и будет её исползовать.
struct Logger {
let strategy: LoggerStrategy
func log(_ message: String) {
strategy.log(message)
}
}
How
Конкретная реализация стратегии, то есть конкретное действие.
struct CapitalizedStrategy: LoggerStrategy {
func log(_ message: String) {
print(message.capitalized)
}
}
Пример использования:
var logger = Logger(strategy: CapitalizedStrategy())
logger.log("my first strategy") // My First Strategy
В статье также представлены другие примеры, такие как форма валидации, настройка ячеек и другие.
https://medium.com/flawless-app-stories/strategy-pattern-in-swift-1462dbddd9fe
А по ссылке очень красивый ресурс с подробным описанием всех паттернов проектирования, одних только иллюстраций достаточно, чтобы изучить их.
https://refactoring.guru/ru/design-patterns/creational-patterns
https://refactoring.guru/ru/design-patterns/creational-patterns
😇 Сегодня постов много, сорри, но к нам пришла очень крутая подборка.
@slutsker вручную отобрал более 60 материалов для углублённого изучения разработки для iOS, отлично подходит для составления индивидуальных планов обучения junior, middle и senior разработчиков.
💙
https://www.notion.so/iOS-study-DataSource-by-Slava-Slutsker-3f79ba2c51ce45e9b32eae4666585e9d
@slutsker вручную отобрал более 60 материалов для углублённого изучения разработки для iOS, отлично подходит для составления индивидуальных планов обучения junior, middle и senior разработчиков.
💙
https://www.notion.so/iOS-study-DataSource-by-Slava-Slutsker-3f79ba2c51ce45e9b32eae4666585e9d
Forwarded from Mobile Subscriptions
Ценообразование
Правильный прайсинг – одна из самых важных составляющих успешного приложения, которое зарабатывает на подписках.
По ссылке таблица из 100 самых популярных приложений с подписками в US сторе. Эти компании провели сотни A/B тестов, чтобы прийти к правильной комбинации: длительность/стоимость подписки.
Выбирайте приложения из интересующей вас категории и используйте как ориентир при установке цен в вашем приложении.
Правильный прайсинг – одна из самых важных составляющих успешного приложения, которое зарабатывает на подписках.
По ссылке таблица из 100 самых популярных приложений с подписками в US сторе. Эти компании провели сотни A/B тестов, чтобы прийти к правильной комбинации: длительность/стоимость подписки.
Выбирайте приложения из интересующей вас категории и используйте как ориентир при установке цен в вашем приложении.
🍿 Reddit-клиент на SwiftUI
По ссылке лайв-кодинг сессия на Podlodka Crew с реализацией макета на #swiftui.
Вадим Булавин за 1.5 часа делает Reddit-клиент. Отличный способ на деле за короткий отрезок времени посмотреть особенности применения.
https://www.youtube.com/watch?v=_fO-vx6rm1M
По ссылке лайв-кодинг сессия на Podlodka Crew с реализацией макета на #swiftui.
Вадим Булавин за 1.5 часа делает Reddit-клиент. Отличный способ на деле за короткий отрезок времени посмотреть особенности применения.
https://www.youtube.com/watch?v=_fO-vx6rm1M
YouTube
Лайвкодинг: Реализуем макет на SwiftUI / Вадим Булавин
Понравилось видео и хочешь узнать что-то еще про iOS и SwiftUI? Забирай весь плейлист на https://is.gd/kChYnl или купи билет на следующий сезон конференции https://is.gd/auKynm
Подпишись на канал – каждую неделю мы выкладываем новые видео про то, как устроена…
Подпишись на канал – каждую неделю мы выкладываем новые видео про то, как устроена…
🛫 VIPER deprecated, или Clean Architecture в SwiftUI
Отличная статья, которая описывает особенности построения архитектуры для приложений на SwiftUI.
Rounter не нужен, Presenter вообще превратился в пустой класс.
Этому сообществу нужен новый герой.
🦸♂️
https://medium.com/swlh/clean-architecture-for-swiftui-6d6c4eb1cf6a
Отличная статья, которая описывает особенности построения архитектуры для приложений на SwiftUI.
Rounter не нужен, Presenter вообще превратился в пустой класс.
Этому сообществу нужен новый герой.
🦸♂️
https://medium.com/swlh/clean-architecture-for-swiftui-6d6c4eb1cf6a
🎻 10 самых популярных iOS библиотек в 2020
Кликбейтный заголовок, но, как мне кажется, изучение этих библиотек покроет 99% знаний, которые требуются iOS разработчику. Причём изучение не в плане апишки, а исходных кодов. Здесь и сложные анимации, работа с сетью, мультипоточность во всём своем многообразии, сложные алгоритмы и многое другое.
Берите одну либу на месяц и перекопайте исходники каждой. Через год будете отказываться от работы в Гугл. 😐
https://infinum.com/the-capsized-eight/top-10-most-useful-iOS-libraries
Кликбейтный заголовок, но, как мне кажется, изучение этих библиотек покроет 99% знаний, которые требуются iOS разработчику. Причём изучение не в плане апишки, а исходных кодов. Здесь и сложные анимации, работа с сетью, мультипоточность во всём своем многообразии, сложные алгоритмы и многое другое.
Берите одну либу на месяц и перекопайте исходники каждой. Через год будете отказываться от работы в Гугл. 😐
https://infinum.com/the-capsized-eight/top-10-most-useful-iOS-libraries
💂♀️Оптимизация времени запуска приложения и поиск проблем с помощью Instruments
Небольшая статья с разбором Instruments на реальном примере оптимизации приложения.
https://medium.com/flawless-app-stories/optimizing-app-launch-detecting-performance-issues-using-instruments-bca421da43b
Небольшая статья с разбором Instruments на реальном примере оптимизации приложения.
https://medium.com/flawless-app-stories/optimizing-app-launch-detecting-performance-issues-using-instruments-bca421da43b
Medium
Optimizing App Launch & detecting performance issues using Instruments
A few years back I joined the top 1 online classifieds company in the world…
Будете покупать мак с чипом M1?
Anonymous Poll
20%
Непременно!
74%
Нет, подожду годик, другой, пока всё стабилизируется
6%
Что это?
Unowned vs Weak
Небольшая статья, которая поможет разобрать все особенности применения unowned и weak на примерах.
https://medium.com/flawless-app-stories/unowned-vs-weak-614ac71ac516
Небольшая статья, которая поможет разобрать все особенности применения unowned и weak на примерах.
https://medium.com/flawless-app-stories/unowned-vs-weak-614ac71ac516
Medium
Unowned vs Weak
Weak and unowned are used to solve leaked memory and retain cycles.Both do not increase the retain count.
Forwarded from Mobile Subscriptions
🎉 Шикарная новость для разработчиков мобильных приложений!
Apple снизит App Store комиссию с 30% до 15% для компаний, зарабатывающих менее $1 млн в год.
Программа запускается 1 января 2021 года и будет основываться на данных 2020 года.
Больше деталей => https://techcrunch.com/2020/11/18/apple-to-reduce-app-store-fees-for-small-businesses-with-under-1-million-in-revenues
Apple снизит App Store комиссию с 30% до 15% для компаний, зарабатывающих менее $1 млн в год.
Программа запускается 1 января 2021 года и будет основываться на данных 2020 года.
Больше деталей => https://techcrunch.com/2020/11/18/apple-to-reduce-app-store-fees-for-small-businesses-with-under-1-million-in-revenues
Кидайте эту статью своей API команде, если они просят отправлять header с префиксом X. Например, X-Auth-Token
Этот префикс был как стандарт много лет назад. Но уже лет 8 как deprecated и не рекомендуется к использованию.
https://tonyxu.io/posts/2018/http-deprecate-x-prefix/
Этот префикс был как стандарт много лет назад. Но уже лет 8 как deprecated и не рекомендуется к использованию.
https://tonyxu.io/posts/2018/http-deprecate-x-prefix/
tonyxu.io
Why we need to deprecate x prefix for HTTP headers? - Tony Xu Blog
In June, 2012, Internet Engineering Task Force released a new RFC(RFC-6648), recommending deprecation of X- prefix.
Что будет выведено?
Anonymous Quiz
8%
1. In Protocol; In Protocol
6%
2. In Protocol; In Struct
43%
3. In Struct; In Protocol
44%
4. In Struct; In Struct
Знание Method Dispatch крайне важно для понимания последовательности вызовов методов в Swift.
Отличный доклад на CocoaHeads об этом.
https://www.youtube.com/watch?v=kolL8r7Tz2w
Через неделю повторим тест с другими вариантами 😉
Отличный доклад на CocoaHeads об этом.
https://www.youtube.com/watch?v=kolL8r7Tz2w
Через неделю повторим тест с другими вариантами 😉
YouTube
Swift Method Dispatch – Сергей Турсунов
CocoaHeads @ FunCorp митап, 25 августа
Доклад: «Swift Method Dispatch», Сергей Турсунов, vk.com
Слайды по ссылке: https://bit.ly/2N5gMOW
Доклад: «Swift Method Dispatch», Сергей Турсунов, vk.com
Слайды по ссылке: https://bit.ly/2N5gMOW
🕵️♀️ Безопасность в iOS приложениях
Отличная статья про лучшие практики безопасности в iOS приложениях.
Вопрос достаточно важный, не стоит относится к нему по остаточному принципу. Особоенно если у вас крупный проект.
https://quickbirdstudios.com/blog/ios-app-security-best-practices/
Отличная статья про лучшие практики безопасности в iOS приложениях.
Вопрос достаточно важный, не стоит относится к нему по остаточному принципу. Особоенно если у вас крупный проект.
https://quickbirdstudios.com/blog/ios-app-security-best-practices/
QuickBird Studios
iOS App Security: Best Practices
In this article, we focus on iOS App Security and show you concrete techniques on how to improve security in your iOS apps.