Как создать крутые визуальные эффекты в приложении с минимальными усилиями? Metal
Хочу посоветовать вам доклад, который, наконец, доступен на ютуб, в день когда его заблокировали в РФ
Еще год назад в SwiftUI 5 случилось обновление, которое упростило использование Metal-шейдеров — того самого инструмента для графических фич. Это крутое нововведение, на мой взгляд, осталось незамеченным. В докладе разбираются возможности Metal и приводятся примеры применения Metal в повседневных задачах.
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
Почему Metal перестал быть страшным — Игорь Белов, Т-Банк
Доклад посвящен нововведению в SwiftUI 5, которое упрощает использование Metal-шейдеров и позволяет создавать мощные визуальные эффекты для приложений с минимальными усилиями. Несмотря на свою значимость, нововведение получило ограниченное внимание на WWDC…
🔥7❤1
Swift Algorithms - это Swift Package с полезными алгоритмами для работы с коллекциями, позволяя вам находить комбинации и перестановки, создавать случайную выборку и многое другое. Несмотря на то что это официальный пакет Apple для работы со Swift коллекциями про него мало кто знает и почти никто не использует. В статье, Винсент, предпринял попытку показать удобство использования данного пакета на примере 5 простых алгоритмов:
chunks(ofCount:)
- метод позволяет сделать разбивку на страницы. Вы можете использовать его для разделения коллекции на фрагменты заданного размера или на основе предиката.randomSample()
- функция позволяет вам взять случайную выборку из последовательности. Если вам когда-либо приходилось внедрять случайную выборку самостоятельно, вы знаете, как легко ошибочно внести смещение в выборку. Поэтому возможность полагаться на официальную реализацию весьма приветствуется!indexed()
- работает очень похоже на функцию enumerated(), за исключением того, что, в то время как функция enumerated() возвращает увеличивающееся количество элементов, функция indexed() возвращает фактические индексы элементов. Это означает, что вы, в свою очередь, можете безопасно использовать эти индексы для индексации исходной коллекции без риска вызвать сбой во время выполнения.min(count:), max(count:)
- очень полезны, если вам когда-либо понадобится извлечь только N наименьших или наибольших элементов из большой последовательности.compacted, firstNonNil, uniqued
- решают очень простую и распространенную проблему работы с коллекциями, но оттестированы и оптимизированыОт себя хочу добавить, очень странно что Apple решили не добавлять Algorithms в свой стандартный набор фреймворков, поставляемых с системой. Как мне кажется, это бы сильно забустило использование этих алгоритмов и улучшило общую стабильность платформы. Может быть в iOS 19 Algorithms станут частью системы, а SwiftUI отдельным пакетом
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤9👍4🔥2🤔1
Безопасность и конфиденциальность приложений
Небольшой обзор как не нужно делать безопасность на iOS
Наткнулся я на выходных на статью про "Базовые практики безопасности для iOS приложений" и в целом, статья не плохая
🟢 Используйте HTTPS и SSL/TLS 😏
🟢 Шифруйте данные пользователей 🧠
🟢 Используйте ATS 🍿
🔴 Реализуйте биометрическую аутентификацию
Приведен пример как не нужно делать. Точнее показан только первый шаг, который является необходимым но не достаточным. После этого необходимо читать данные из Keychain которые зашифрованы с биометрией.
Какой вывод можно сделать из этой истории? Не доверяйте SMM-ым статьям в блогах образовательных платформ и всегда проверяйте информацию в первоисточниках:
🟢 Шпаргалка по безопасности OWASP
🟢 Как тестировать и ломать Local Authentication
🟢 Как правильно реализовывать Local Authentication
Небольшой обзор как не нужно делать безопасность на iOS
Наткнулся я на выходных на статью про "Базовые практики безопасности для iOS приложений" и в целом, статья не плохая
Приведен пример как не нужно делать. Точнее показан только первый шаг, который является необходимым но не достаточным. После этого необходимо читать данные из Keychain которые зашифрованы с биометрией.
Какой вывод можно сделать из этой истории? Не доверяйте SMM-ым статьям в блогах образовательных платформ и всегда проверяйте информацию в первоисточниках:
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥1
Результаты ужегодного опроса разработчиков на Stackoverflow
Мои хайлайты:
🟢 65к человек приняли участие
🟢 48к человек указали свою зарплату
🟢 В опросе зарплат спрашивали суммарный годовой доход, с учетом всех бонусов до вычета налогов
🟢 Опрос не запускали на РФ и Китай 😭
🟢 Swift обошел Objective-C по средней зарплате разработчиков
🟢 Относительно прошлого года средние зарплаты Swift и Objective-C разработчиков упали
🟢 Большая часть разработчиков уже используют ChatGPT в своей работе
🟢 4.9% опрошенных используют Swift (~3200), 2.3% Objective-C (~1500)
🟢 Xcode используют 10%, почему-то больше чем Swift+Obj-C
🟢 SQLite популярнее MS SQL
🟢 Teams (56%) популярнее Slack (49%), а Mattermost почти никто не использует (4%)
🟢 Количество тех кто использует Mac для работы равно тем кто использует в быту. Винда более популярна в быту, чем для работы
Мои хайлайты:
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6🔥1
5 преимуществ использования системных компонент
Очень полезная статья, напоминающая нам о важности использования системных компонентов. Используя системные компоненты, мы получаем бонусом доступность, удобство для пользователей и производительность. Часто, видя новый элемент в дизайне, разработчик создает новый уникальный компонент, забывая рассмотреть возможность кастомизации нативных компонентов. Особенно это актуально для UIKit, в котором учтено и оптимизировано очень многое:
🟢 Доступность. Системные компоненты поддерживают не только динамический шрифт и VoiceOver но и такие кейсы как шрифты с написанием справа-налево, изменение контраста и инверсию цветов и многое другое
🟢 Использование системных компонентов может ускорить процесс проектирования и сэкономить время, особенно при реализации личных проектов
🟢 Согласованный дизайн с системными компонентами может привести к повышению производительности приложения и увеличению конверсий
Мне лично использование правильных системных компонент много раз позволяло закрыть задачу доработки одной строкой, вместо того чтобы реализовывать все с нуля. Несмотря на то что системные компоненты содержат ошибки, самописные компоненты содержает еще больше ошибок
Очень полезная статья, напоминающая нам о важности использования системных компонентов. Используя системные компоненты, мы получаем бонусом доступность, удобство для пользователей и производительность. Часто, видя новый элемент в дизайне, разработчик создает новый уникальный компонент, забывая рассмотреть возможность кастомизации нативных компонентов. Особенно это актуально для UIKit, в котором учтено и оптимизировано очень многое:
Мне лично использование правильных системных компонент много раз позволяло закрыть задачу доработки одной строкой, вместо того чтобы реализовывать все с нуля. Несмотря на то что системные компоненты содержат ошибки, самописные компоненты содержает еще больше ошибок
Please open Telegram to view this post
VIEW IN TELEGRAM
SwiftLee
App design: 5 benefits of using system components
Discover the crucial role of system components in app design for enhanced accessibility and user experience.
👍4
Typealias: что это такое и когда его использовать
Каждый раз встречая код с набором полей одного типа задаюсь вопросом: "Почему разработчики не используют typealias?" Псевдонимы есть даже в C (typedef). Typealias обеспечивает более семантический контекст для существующих типов, улучшая читаемость кода и передавая более четкие сообщения читателям
🟢 Typealias предоставляют более семантический контекст для существующих типов, улучшая читаемость кода.
🟢 Они полезны для создания типов, зависящих от предметной области, улучшения читаемости замыканий и кортежей, предоставления более коротких имен для связанных типов, вложенных типов и группировки нескольких протоколов.
🟢 Чрезмерное использование псевдонимов типов может привести к путанице, поэтому разработчикам следует использовать их разумно.
🟢 Псевдонимы типов не создают новых типов, а служат псевдонимами для существующих типов, улучшая семантику кода.
🟢 Псевдонимы типов можно использовать для перепрофилирования существующих типов в различных доменах или сценариях, чтобы донести более четкие сообщения до читателей.
Каждый раз встречая код с набором полей одного типа задаюсь вопросом: "Почему разработчики не используют typealias?" Псевдонимы есть даже в C (typedef). Typealias обеспечивает более семантический контекст для существующих типов, улучшая читаемость кода и передавая более четкие сообщения читателям
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8