🎨 8 отличных библиотек для SwiftUI
Споры насчёт актуальности использования #SwiftUI в Production продолжаются, как и статьи на тему проблем в этом прекрасном фрейморвке. Но сейчас не об этом.
Держите 8 классных проектов, которые предоставляют расширенную обёртку вокруг SwiftUI.
Есть даже SwiftUI реализация для UICollectionView.
https://medium.com/better-programming/8-amazing-swiftui-libraries-to-use-in-your-next-project-52efaf211143
Споры насчёт актуальности использования #SwiftUI в Production продолжаются, как и статьи на тему проблем в этом прекрасном фрейморвке. Но сейчас не об этом.
Держите 8 классных проектов, которые предоставляют расширенную обёртку вокруг SwiftUI.
Есть даже SwiftUI реализация для UICollectionView.
https://medium.com/better-programming/8-amazing-swiftui-libraries-to-use-in-your-next-project-52efaf211143
This media is not supported in your browser
VIEW IN TELEGRAM
🧩 Интерактивный гайд по RX
Набрёл на потрясающий интерактивный гайд по #Rx. В статье используется JS, но суть от этого не меняется. Добавлены примеры демо на stackblitz, поэтому можно обновлять код и поиграться.
Будет очень полезно для тех, кто только изучает или не до конца понял концепт реактивного программирования.
https://medium.com/angular-in-depth/learn-to-combine-rxjs-sequences-with-super-intuitive-interactive-diagrams-20fce8e6511
Набрёл на потрясающий интерактивный гайд по #Rx. В статье используется JS, но суть от этого не меняется. Добавлены примеры демо на stackblitz, поэтому можно обновлять код и поиграться.
Будет очень полезно для тех, кто только изучает или не до конца понял концепт реактивного программирования.
https://medium.com/angular-in-depth/learn-to-combine-rxjs-sequences-with-super-intuitive-interactive-diagrams-20fce8e6511
В прошлом году, в процессе beta тестирования iOS 13, мир увидел аж 8 бета версий. Это при том, что iOS 13 преподносилась как большой фикс-релиз. Поэтому я не удидивился, когда вышел анонс о том, что Apple менят подход к разработке новых операционных систем начиная с iOS 14. Новый подход предполагал, что многие недоработанные фичи просто будут выключены (кэп).
Ну а пока Apple осваиет feature флаги, рекомендую прочитать две интересные статьи.
Первая о том, почему классический gitflow устарел: оригинал и перевод.
Вторая о trunk based development, переход на который может помочь сильно улучшить ваши рабочие процессы: разработку, ревью, доставку фич в прод и многие другие. А здесь детали про feature flags в рамках tbd.
Ну а пока Apple осваиет feature флаги, рекомендую прочитать две интересные статьи.
Первая о том, почему классический gitflow устарел: оригинал и перевод.
Вторая о trunk based development, переход на который может помочь сильно улучшить ваши рабочие процессы: разработку, ревью, доставку фич в прод и многие другие. А здесь детали про feature flags в рамках tbd.
🧙♀️ Useful (and obscure!) Foundation types in Swift
7 неочевидных классов #Foundation, которые могут быть полезны. Примеры доступны по ссылке. Ниже тезисные описания.
1. NSScanner
Синтактический анализатор строк.
2. NSCache
Апгрейтнутый словарь. Может избежать переполнения памяти. Имеет thread safety из коробки.
3. NSByteCountFormatter
Форматирует и локализует байты:
4. NSDataDetector
Ещё один сканер, который может искать ссылки, телефоны и другие данные во входном тексте.
5. CFBinaryHeap
Двоичная куча.
6. NSOrderedSet
Упорядоченный set. Доступ O(1), но при этом объекты упорядочены, в отличии от обычных хэш таблиц.
7. NSCountedSet
Неупорядоченная коллекция для подсчёта количества вхождений объекта. Удобная штука при решении алгоритмических задачек.
https://swiftrocks.com/useful-obscure-foundation-types-in-swift
7 неочевидных классов #Foundation, которые могут быть полезны. Примеры доступны по ссылке. Ниже тезисные описания.
1. NSScanner
Синтактический анализатор строк.
2. NSCache
Апгрейтнутый словарь. Может избежать переполнения памяти. Имеет thread safety из коробки.
3. NSByteCountFormatter
Форматирует и локализует байты:
1024 * 1024
=> 1 MB
4. NSDataDetector
Ещё один сканер, который может искать ссылки, телефоны и другие данные во входном тексте.
5. CFBinaryHeap
Двоичная куча.
6. NSOrderedSet
Упорядоченный set. Доступ O(1), но при этом объекты упорядочены, в отличии от обычных хэш таблиц.
7. NSCountedSet
Неупорядоченная коллекция для подсчёта количества вхождений объекта. Удобная штука при решении алгоритмических задачек.
https://swiftrocks.com/useful-obscure-foundation-types-in-swift
⭐️ ReactorKit: фреймворк для организации архитектуры проектов на RX
Очень часто в проектах, где используют #rx, реактивный код размазан по всему приложению. Иногда это является аргументов в пользу отказа от реактивного подхода в целом.
Года полтора назад наткнулся на отличный фреймворк, который решает эту и некоторые другие проблемы, предоставляя декларативный подход к организации кода. За это время они сильно эволюционировали и продолжают развиваться.
Основные задачи, которые ReactorKit решает:
* Тестирование;
* Инкапсуляция;
* Низкий порог входа;
* Декларативный подход к организации кода для команды.
https://github.com/ReactorKit/ReactorKit
Очень часто в проектах, где используют #rx, реактивный код размазан по всему приложению. Иногда это является аргументов в пользу отказа от реактивного подхода в целом.
Года полтора назад наткнулся на отличный фреймворк, который решает эту и некоторые другие проблемы, предоставляя декларативный подход к организации кода. За это время они сильно эволюционировали и продолжают развиваться.
Основные задачи, которые ReactorKit решает:
* Тестирование;
* Инкапсуляция;
* Низкий порог входа;
* Декларативный подход к организации кода для команды.
https://github.com/ReactorKit/ReactorKit
🔀 Паттерн стратегия в 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.