iOS App Security: Best Practices
Поддерживаем безопасность в iOS приложениях. Некоторые примеры и способы из статьи:
👉 Apple’s App Sandbox. Каждое приложение в отдельной песочнице
👉 Data Protection API. Встроенное шифрование файлов приложения с 4 уровнями защиты
👉 Keychain. Защищаем чувствительные данные
👉 App Transport Security (ATS) блокирует незащищенные соединения (HTTP)
👉 SSL Pinning
👉 Push-нотификации с помощью Apple’s APNS services
👉 Apple’s CloudKit для хранения данных без бэкенда
👉 Не забывайте убирать принты в коде 😄
👉 CryptoKit - библиотека для шифрования
👉 Обфускация кода на случай установки приложения на джейлбрейкнутый девайс
#security
Поддерживаем безопасность в iOS приложениях. Некоторые примеры и способы из статьи:
👉 Apple’s App Sandbox. Каждое приложение в отдельной песочнице
👉 Data Protection API. Встроенное шифрование файлов приложения с 4 уровнями защиты
👉 Keychain. Защищаем чувствительные данные
👉 App Transport Security (ATS) блокирует незащищенные соединения (HTTP)
👉 SSL Pinning
👉 Push-нотификации с помощью Apple’s APNS services
👉 Apple’s CloudKit для хранения данных без бэкенда
👉 Не забывайте убирать принты в коде 😄
👉 CryptoKit - библиотека для шифрования
👉 Обфускация кода на случай установки приложения на джейлбрейкнутый девайс
#security
👍5👎1
Участвует ли Apple в современной ИИ-революции?
Аргументы, почему Apple не отстаёт в ИИ гонке 🤖
👉 Старший вице-президент по машинному обучению и стратегии развития искусственного интеллекта Джон Джаннандреа собрал в Apple лучшую команду из лучших спецов по ИИ. Говорят что у Apple даже есть своя секретная научная лаборатория базирующаяся близ Кембриджского университета
👉 Apple с 2017 года начала встраивать в свои чипы Neural Engine, являющийся встроенным ИИ-ускорителем
👉 И самое главное, что за последние примерно 12 лет Apple скупила уже около 30 стартапов и небольших компаний развивающих ИИ-проекты и AR/VR-проекты использующие ИИ
Больше ссылок по теме:
"Почему Apple может запустить свой поисковик и зачем это нужно компании"
"Так Apple делает свой автомобиль или нет?"
#AI
Аргументы, почему Apple не отстаёт в ИИ гонке 🤖
👉 Старший вице-президент по машинному обучению и стратегии развития искусственного интеллекта Джон Джаннандреа собрал в Apple лучшую команду из лучших спецов по ИИ. Говорят что у Apple даже есть своя секретная научная лаборатория базирующаяся близ Кембриджского университета
👉 Apple с 2017 года начала встраивать в свои чипы Neural Engine, являющийся встроенным ИИ-ускорителем
👉 И самое главное, что за последние примерно 12 лет Apple скупила уже около 30 стартапов и небольших компаний развивающих ИИ-проекты и AR/VR-проекты использующие ИИ
Больше ссылок по теме:
"Почему Apple может запустить свой поисковик и зачем это нужно компании"
"Так Apple делает свой автомобиль или нет?"
#AI
👍5👎3
Подборка видео на выходные 😎
📺 Watch this before you get the M2 Max Macbook Pro for coding (8 мин)
📺 UIKit или SwiftUI в 2022? (31 мин)
📺 How to Make a Searchable Map View in SwiftUI for Beginners – Step by Step (2023) (45 мин)
📺 Build a SwiftUI ChatGPT macOS App | OpenAI API | Menu Bar (14 мин)
В комментариях делитесь видео по разработке, которые понравились вам и будут полезны другим
#подборкавидео
📺 Watch this before you get the M2 Max Macbook Pro for coding (8 мин)
📺 UIKit или SwiftUI в 2022? (31 мин)
📺 How to Make a Searchable Map View in SwiftUI for Beginners – Step by Step (2023) (45 мин)
📺 Build a SwiftUI ChatGPT macOS App | OpenAI API | Menu Bar (14 мин)
В комментариях делитесь видео по разработке, которые понравились вам и будут полезны другим
#подборкавидео
👍5👎2
Лучшие техники ревью кода
👉 Создайте чек-лист для проверки кода
👉 Ограничьте количество строк кода для ревью за один раз. Это необходимо для того, чтобы обзор проходил с одинаковой эффективностью.
👉 Применяйте средства автоматизации. PVS-Studio (выявляет опечатки, мертвый код, потенциальные уязвимости), SonarQube (проверяет ошибки, соответствие стандартам кодирования, технический долг), AppRefactoring (выявляет дубликаты и пересечения фрагментов кода, предоставляя информацию для уникализации кода), Codacy (выявляет ошибки в коде, проблемы безопасности) и другие
👉 Дайте положительную обратную связь на кодревью
#процессы
👉 Создайте чек-лист для проверки кода
👉 Ограничьте количество строк кода для ревью за один раз. Это необходимо для того, чтобы обзор проходил с одинаковой эффективностью.
👉 Применяйте средства автоматизации. PVS-Studio (выявляет опечатки, мертвый код, потенциальные уязвимости), SonarQube (проверяет ошибки, соответствие стандартам кодирования, технический долг), AppRefactoring (выявляет дубликаты и пересечения фрагментов кода, предоставляя информацию для уникализации кода), Codacy (выявляет ошибки в коде, проблемы безопасности) и другие
👉 Дайте положительную обратную связь на кодревью
#процессы
👍7
How to write README file for the iOS project
Что должно быть в хорошем Readme?
👉 Название и предложение, коротко описывающее суть проекта
👉 Description - короткое описание проекта, цель и ключевые фичи
👉 Как запустить проект, включая все его зависимости и возможные проблемы
👉 Как использовать проект, документация и примеры
👉 Используемая архитектура и обоснование ее выбора
👉 Описание структуры проекта
👉 Как запустить тесты
👉 Как задеплоить проект, если есть такая возможность
👉 Менеджер зависимостей и как с ним работать, список библиотек с обоснованием их выбора
👉 Workflow: как заводить PR и репортить баги
👉 Тулза, использовавшаяся для дизайна
👉 Ссылка на доску с задачами и описание взаимодействия
👉 Ссылка на API и краткое описание работы с сетью
#documentation
Что должно быть в хорошем Readme?
👉 Название и предложение, коротко описывающее суть проекта
👉 Description - короткое описание проекта, цель и ключевые фичи
👉 Как запустить проект, включая все его зависимости и возможные проблемы
👉 Как использовать проект, документация и примеры
👉 Используемая архитектура и обоснование ее выбора
👉 Описание структуры проекта
👉 Как запустить тесты
👉 Как задеплоить проект, если есть такая возможность
👉 Менеджер зависимостей и как с ним работать, список библиотек с обоснованием их выбора
👉 Workflow: как заводить PR и репортить баги
👉 Тулза, использовавшаяся для дизайна
👉 Ссылка на доску с задачами и описание взаимодействия
👉 Ссылка на API и краткое описание работы с сетью
#documentation
👍12🔥1
Our 1 Mistake in iOS App Modularization That Slows our Xcode Build process
👉 Не всегда поможет замена MacBook на более мощную версию
👉 Проверяйте процесс сборки. Xcode 14 имеет встроенную функцию визуализации
👉 Иногда проблема медленной сборки более специфична для вашей кодовой базы или даже архитектурного уровня, как это произошло в случае из статьи (UIFramework - bottleneck)
👉 Всегда старайтесь сделать модульную структуру как можно более горизонтальной на каждом уровне, чтобы не создавать узких горлышек в процессе сборки
#build
👉 Не всегда поможет замена MacBook на более мощную версию
👉 Проверяйте процесс сборки. Xcode 14 имеет встроенную функцию визуализации
👉 Иногда проблема медленной сборки более специфична для вашей кодовой базы или даже архитектурного уровня, как это произошло в случае из статьи (UIFramework - bottleneck)
👉 Всегда старайтесь сделать модульную структуру как можно более горизонтальной на каждом уровне, чтобы не создавать узких горлышек в процессе сборки
#build
👍4
KMM глазами iOS-разработчика
В KMM есть свои нюансы, которые описаны в статье. Но нет блокеров, которые заставили задуматься об отказе от KMM. Зато вот какие профиты для бизнеса были получены:
👉 Экономия времени разработки (зависит от проекта).
Экономия будет больше, если в проектах много бизнес-логики находится на мобильном клиенте: офлайн-first решения
👉 Экономия времени переделок при изменении только бэкенда/логики без изменения UI — почти 50%
👉 Время погружения разработчиков iOS в KMM с 0 до реализации комплексных фичей — около 4 месяцев
👉 Bus factor — доработать KMM-логику могут не только iOS-разработчики, но и Android
#crossplatform
В KMM есть свои нюансы, которые описаны в статье. Но нет блокеров, которые заставили задуматься об отказе от KMM. Зато вот какие профиты для бизнеса были получены:
👉 Экономия времени разработки (зависит от проекта).
Экономия будет больше, если в проектах много бизнес-логики находится на мобильном клиенте: офлайн-first решения
👉 Экономия времени переделок при изменении только бэкенда/логики без изменения UI — почти 50%
👉 Время погружения разработчиков iOS в KMM с 0 до реализации комплексных фичей — около 4 месяцев
👉 Bus factor — доработать KMM-логику могут не только iOS-разработчики, но и Android
#crossplatform
🔥6👍2👎1
Running tasks in parallel
Учимся запускать задачи параллельно с помощью old-school техник и фреймворков, а также новой structured concurrency API.
Складываем числа от 0 до миллиарда с 8 worker'ами с помощью:
👉 concurrentPerform
👉 operation queues
👉 structured concurrency
👉 task groups
#swift
Учимся запускать задачи параллельно с помощью old-school техник и фреймворков, а также новой structured concurrency API.
Складываем числа от 0 до миллиарда с 8 worker'ами с помощью:
👉 concurrentPerform
👉 operation queues
👉 structured concurrency
👉 task groups
#swift
🔥7👎1🤩1
Что нового в Swift 5.7: Regex (4 мин)
Swift Regex очень удобен благодаря таким фичам, как билдеры или уже готовые парсеры. Способы использования:
👉 Regex-литералы. Нам больше не нужно использовать двойные escape-символы и беспокоиться о do-catch, как при работе с
👉 Run-time конструкции. Эта фича может очень пригодиться для полей поиска в редакторах или консольных утилит
👉 Regex-билдеры - структурированная форма написания регулярных выражений, доступная в Swift
На скринах примеры этих способов. В комментариях прикреплю демонстрацию преобразования Regex в Xcode
#swift
Swift Regex очень удобен благодаря таким фичам, как билдеры или уже готовые парсеры. Способы использования:
👉 Regex-литералы. Нам больше не нужно использовать двойные escape-символы и беспокоиться о do-catch, как при работе с
NSRegularExpression
👉 Run-time конструкции. Эта фича может очень пригодиться для полей поиска в редакторах или консольных утилит
👉 Regex-билдеры - структурированная форма написания регулярных выражений, доступная в Swift
На скринах примеры этих способов. В комментариях прикреплю демонстрацию преобразования Regex в Xcode
#swift
👍6👎1
20 уроков, которые я вынес из 20 лет работы программистом
И вот некоторые из них:
👉 Я до сих пор многого не знаю.Чем быстрее вы придете к этой мысли, тем скорее сумеете выбраться из синдрома самозванца и начнете находить радость в самообразовании и обучении других
👉 Лучший код – это отсутствие кода или хотя бы необходимости его поддерживать
👉 ПО – это не конечная цель, а способ ее достижения
👉 В конечном счете, любая система – отстой, смиритесь
👉 Нам нужно меньше искать 10x-программистов и больше избегать 0.1x-программистов
👉 Не путайте скромность с невежеством. Разговаривайте с окружающими, просите у них совета и обратной связи. Вы об этом не пожалеете
#softskills
И вот некоторые из них:
👉 Я до сих пор многого не знаю.Чем быстрее вы придете к этой мысли, тем скорее сумеете выбраться из синдрома самозванца и начнете находить радость в самообразовании и обучении других
👉 Лучший код – это отсутствие кода или хотя бы необходимости его поддерживать
👉 ПО – это не конечная цель, а способ ее достижения
👉 В конечном счете, любая система – отстой, смиритесь
👉 Нам нужно меньше искать 10x-программистов и больше избегать 0.1x-программистов
👉 Не путайте скромность с невежеством. Разговаривайте с окружающими, просите у них совета и обратной связи. Вы об этом не пожалеете
#softskills
👍15👎1
Подборка видео на выходные 😎
📺 After 13 months of building a Website, I switched to an App (7 мин)
📺 Better Swift Closures Explained – Swift Tips (2023) – iOS (6 мин)
📺 📱Заработок на мобильных приложениях iOS и Android! Как делать 30 000$ в месяц?💰 (66 мин)
📺 Как создать кликер в Xcode | SwiftUI (3 мин)
В комментариях делитесь видео по разработке, которые понравились вам и будут полезны другим
#подборкавидео
📺 After 13 months of building a Website, I switched to an App (7 мин)
📺 Better Swift Closures Explained – Swift Tips (2023) – iOS (6 мин)
📺 📱Заработок на мобильных приложениях iOS и Android! Как делать 30 000$ в месяц?💰 (66 мин)
📺 Как создать кликер в Xcode | SwiftUI (3 мин)
В комментариях делитесь видео по разработке, которые понравились вам и будут полезны другим
#подборкавидео
🔥3👍1👎1
Парсинг ответов на BLE-команды на языке Swift на примере GoPro
Общий алгоритм работы с BLE-ответом:
1️⃣ Получаем ответ от Bluetooth‑устройства
2️⃣ Если ответ простой, то получаем результат. Иначе проверяем, сколько в нем пакетов
3️⃣ Если один, сохраняем полезные данные
4️⃣ Иначе по маске определяем, сколько полезных байт должно прийти в ответ на данную команду, с какого байта они начинаются, и сохраняем их
5️⃣ Повторяем, пока не получим нужно количество байт
6️⃣ Затем приступаем к его парсингу
7️⃣ Нужно разделить общий ответ на отдельные ответы на каждую команду
8️⃣ На выходе получаем готовый словарь с id настройки (или статуса) в виде ключа и текущим состоянием этой настройки (или статуса) в виде значения
#bluetooth
Общий алгоритм работы с BLE-ответом:
1️⃣ Получаем ответ от Bluetooth‑устройства
2️⃣ Если ответ простой, то получаем результат. Иначе проверяем, сколько в нем пакетов
3️⃣ Если один, сохраняем полезные данные
4️⃣ Иначе по маске определяем, сколько полезных байт должно прийти в ответ на данную команду, с какого байта они начинаются, и сохраняем их
5️⃣ Повторяем, пока не получим нужно количество байт
6️⃣ Затем приступаем к его парсингу
7️⃣ Нужно разделить общий ответ на отдельные ответы на каждую команду
8️⃣ На выходе получаем готовый словарь с id настройки (или статуса) в виде ключа и текущим состоянием этой настройки (или статуса) в виде значения
#bluetooth
👍6😱2👎1