🧚♀️ Pure Functions в Swift
Наш любимый Джон Сандел выпустил новую статью про Pure Functions в Swift.
Интересно почитать в субботу вечером.
swiftbysundell.com/posts/pure-functions-in-swift
(Время чтения ~ 8 минут)
Наш любимый Джон Сандел выпустил новую статью про Pure Functions в Swift.
Интересно почитать в субботу вечером.
swiftbysundell.com/posts/pure-functions-in-swift
(Время чтения ~ 8 минут)
Swift by Sundell
Pure functions in Swift | Swift by Sundell
Pure functions might seem like a mostly theoretical concept at first, but they have the potential to give us some very real, practical benefits — from increased reuse and testability, to more predictable code. This week, let’s take a look at how pure functions…
🦴 Если вы не слышали про новую уязвимость почти всех процессоров Intel, выходящих с 2011 года, которую обнаружили вчера, то вот вам все подробности:
vc.ru/tech/67324-chto-izvestno-o-novoy-krupnoy-uyazvimosti-v-processorah-intel-i-kak-zashchititsya-ot-zombieload-i-drugih-atak
(Время чтения ~ 7 минут)
🙊 Apple также объясняет необходимость отключить многопоточность для обеспечения полноценной защиты, но предупреждает о падении скорости:
support.apple.com/en-us/HT210108
vc.ru/tech/67324-chto-izvestno-o-novoy-krupnoy-uyazvimosti-v-processorah-intel-i-kak-zashchititsya-ot-zombieload-i-drugih-atak
(Время чтения ~ 7 минут)
🙊 Apple также объясняет необходимость отключить многопоточность для обеспечения полноценной защиты, но предупреждает о падении скорости:
support.apple.com/en-us/HT210108
vc.ru
Что известно о новой крупной уязвимости в процессорах Intel и как защититься от ZombieLoad и других атак — Техника на vc.ru
Проблема касается всех CPU, выпущенных после 2011 года, а инженеры Google и Apple считают, что для полной защиты от атак нужно отключить технологию многопоточности Hyper-Threading, что может снизить производительность на 40%.
🦜 UiKeyCommand
UIKeyCommand позволяет добавить шорткаты для клавиатуры в приложение. Кроме iPad их можно добавить и для iPhone, это делается быстро и работает в симуляторе.
avanderlee.com/swift/uikeycommand-keyboard-shortcuts/
(Время чтения ~ 5 минут)
UIKeyCommand позволяет добавить шорткаты для клавиатуры в приложение. Кроме iPad их можно добавить и для iPhone, это делается быстро и работает в симуляторе.
avanderlee.com/swift/uikeycommand-keyboard-shortcuts/
(Время чтения ~ 5 минут)
🧖♂️ Немного про SwiftUI
🙉 Быстро рассказывают про реализацию модальных окон, алертов и ActionSheet'ов внутри SwiftUI.
mecid.github.io/2019/07/24/alerts-actionsheets-modals-and-popovers-in-swiftui/
(Время чтения ~ 4 минуты)
🙉 Быстро рассказывают про реализацию модальных окон, алертов и ActionSheet'ов внутри SwiftUI.
mecid.github.io/2019/07/24/alerts-actionsheets-modals-and-popovers-in-swiftui/
(Время чтения ~ 4 минуты)
🤹♂️ Последнее время мы писали мало, но тут есть разработчики с разным опытом.
⛷ Если ты оказался в этом чате случайно или только начинаешь заниматься iOS разработкой, Skillbox поможет в этом.
После прохождения курса:
🔷 Ты научишься всему, что необходимо для полноценной работы, сразу после выпуска.
🔷 Создашь конкурентоспособное портфолио для старта в карьере.
🔷 Получишь возможность трудоустройства.
🔷 Будешь создавать самые доходные на мобильном рынке игры и приложения.
Для первых 20 студентов скидка 20%. Есть рассрочка.
Есть шанс поменять жизнь полностью.
Программа курса и остальные подробности по ссылке 👉 clc.to/Ji_lhg
⛷ Если ты оказался в этом чате случайно или только начинаешь заниматься iOS разработкой, Skillbox поможет в этом.
После прохождения курса:
🔷 Ты научишься всему, что необходимо для полноценной работы, сразу после выпуска.
🔷 Создашь конкурентоспособное портфолио для старта в карьере.
🔷 Получишь возможность трудоустройства.
🔷 Будешь создавать самые доходные на мобильном рынке игры и приложения.
Для первых 20 студентов скидка 20%. Есть рассрочка.
Есть шанс поменять жизнь полностью.
Программа курса и остальные подробности по ссылке 👉 clc.to/Ji_lhg
🐥 Collection Diffing
В Swift 5.1 появилась альтернатива
https://fivestars.blog/code/swift-5-1-collection-diffing.html
В Swift 5.1 появилась альтернатива
reloadData()
и IGListKit
. В статье рассказывается не только про сам Collection Diffing
, но и про как она реализована внутри.https://fivestars.blog/code/swift-5-1-collection-diffing.html
🌘 Темная сторона iOS
Видео с CodeFest 2019 о процессе и результатах воплощения тёмной темы в приложении для iOS внутри VK.
vk.com/tech?w=wall-147415323_4462
Видео с CodeFest 2019 о процессе и результатах воплощения тёмной темы в приложении для iOS внутри VK.
vk.com/tech?w=wall-147415323_4462
VK
VK Tech
Тёмную тему в приложении ВКонтакте регулярно используют более 40% пользователей iPhone. Но прежде чем приложение перешло «на тёмную сторону», в нём пришлось обновить более трёхсот экранов, подружить архитектуру с дизайном и фронтендом, добавить цветовые схемы…
🚀 Упрощаем реактивный код
🏠Обзор всех стадий развития реактивной архитектуры: от попыток соединить функциональный стиль с UIKit до продакшен UDF решения
https://link.medium.com/Ux5RhYO0r0
(Время чтения ~ 9 минут)
🏠Обзор всех стадий развития реактивной архитектуры: от попыток соединить функциональный стиль с UIKit до продакшен UDF решения
https://link.medium.com/Ux5RhYO0r0
(Время чтения ~ 9 минут)
Medium
Simplifying RxSwift code
The overview of reactive architecture evolution, since the first pod ‘RxSwift’ till a few years of reactive programming.
🦊 FunCorp проводит конкурс мобильной разработки с призовым фондом в 550 000 рублей.
Принять участие может любой желающий. Авторы лучших работ получат денежные призы и подарки от FunCorp и реальную возможность присоединиться к их команде!
Нужно создать iOS-приложение и показать свое видение игровой аналитики.
Используя API популярной игровой площадки Steam, необходимо создать несколько экранов на основе открытых данных.
Что будут оценивать:
- продуктовое решение по отображению данных и навигации;
- техническое решение по архитектуре приложения;
- отсутствие визуальных и логических ошибок;
- God mode решения и дополнительные фичи;
Присылайте выполненные задания с 18 ноября по 8 декабря.
Результаты будут объявлены 12 декабря.
1 место - 300 000 р.
2 место - 150 000 р.
3 место - 100 000 р.
Подробности и задания тут: https://bit.ly/330s4I8
Чат для вопросов: https://t.me/funcodechallenge
Принять участие может любой желающий. Авторы лучших работ получат денежные призы и подарки от FunCorp и реальную возможность присоединиться к их команде!
Нужно создать iOS-приложение и показать свое видение игровой аналитики.
Используя API популярной игровой площадки Steam, необходимо создать несколько экранов на основе открытых данных.
Что будут оценивать:
- продуктовое решение по отображению данных и навигации;
- техническое решение по архитектуре приложения;
- отсутствие визуальных и логических ошибок;
- God mode решения и дополнительные фичи;
Присылайте выполненные задания с 18 ноября по 8 декабря.
Результаты будут объявлены 12 декабря.
1 место - 300 000 р.
2 место - 150 000 р.
3 место - 100 000 р.
Подробности и задания тут: https://bit.ly/330s4I8
Чат для вопросов: https://t.me/funcodechallenge
💓 Onboarding
Ребята собрали в одном месте свежие 70+ видео онбордингов топовых приложений с подпиской.
producthunt.com/posts/ui-ux-onboarding-ios-best-practices
Ребята собрали в одном месте свежие 70+ видео онбордингов топовых приложений с подпиской.
producthunt.com/posts/ui-ux-onboarding-ios-best-practices
Product Hunt
Qonversion - Product Information, Latest Updates, and Reviews 2024 | Product Hunt
Mobile subscription analytics for app makers to power revenue growth.
📦 Dependency Injection in Swift
Исчерпывающая статья про DI в Swift. С разбором наиболее частых ошибок и вариантов организации зависимостей в проекте.
Конечно же, с примерами. 🙃
https://medium.com/better-programming/modern-dependency-injection-in-swift-952286b308be
Исчерпывающая статья про DI в Swift. С разбором наиболее частых ошибок и вариантов организации зависимостей в проекте.
Конечно же, с примерами. 🙃
https://medium.com/better-programming/modern-dependency-injection-in-swift-952286b308be
Medium
Modern Dependency Injection in Swift
Tips, techniques, and strategies for getting the most from your dependency-injection system in iOS applications
Ребят, всем привет. Пытаюсь переосмыслять формат канала. Мне кажется, что шэринг ссылок не очень практичен, особенно если учесть, что все вы заняты повседневными задачами и в потоке можете не успевать прочитать статью или даже запланировать её для чтения. В связи с этим, есть несколько идей, как можно изменить подход к подаче контента в канале. Но мне нужна ваша помощь. Подготовил небольшой опрос, займёт не более минуты. Заполните, плиз.
https://forms.gle/MUUCiomx2RtPfE5b7
https://forms.gle/MUUCiomx2RtPfE5b7
🎨 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