Подборка видео на выходные 😎
📺 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
Эволюция архитектуры приложения Facebook для iOS
Facebook для iOS (FBiOS) — старейшая мобильная кодовая база в Meta. После многих лет изменений она не похожа на типичную кодовую базу iOS:
👉 Она полна C++, Objective-C(++) и Swift
👉 Имеет десятки динамически загружаемых библиотек (dylib) и так много классов, что их невозможно загрузить в Xcode сразу
👉 Apple SDK практически не используется в чистом виде — все было обернуто или заменено собственной абстракцией
👉 В приложении активно используется генерация кода с помощью Buck - кастомной системы сборки
👉 Без интенсивного кэширования собственной системой сборки пришлось бы провести целый рабочий день в ожидании сборки приложения
Подробнее об этапах эволюции - в статье.
#architecture
Facebook для iOS (FBiOS) — старейшая мобильная кодовая база в Meta. После многих лет изменений она не похожа на типичную кодовую базу iOS:
👉 Она полна C++, Objective-C(++) и Swift
👉 Имеет десятки динамически загружаемых библиотек (dylib) и так много классов, что их невозможно загрузить в Xcode сразу
👉 Apple SDK практически не используется в чистом виде — все было обернуто или заменено собственной абстракцией
👉 В приложении активно используется генерация кода с помощью Buck - кастомной системы сборки
👉 Без интенсивного кэширования собственной системой сборки пришлось бы провести целый рабочий день в ожидании сборки приложения
Подробнее об этапах эволюции - в статье.
#architecture
😱4👎2👍1
В iOS и iPadOS 16.4 появятся веб пуш-уведомления
Согласно новому сообщению в блоге WebKit, бета-версии iOS и iPadOS 16.4 от Apple позволят веб-приложениям Safari на домашнем экране отправлять push-уведомления.
Уведомления от веб-приложений работают точно так же, как уведомления от других приложений. Они отображаются на экране блокировки, в Центре уведомлений и на сопряженных Apple Watch.
#ios
Согласно новому сообщению в блоге WebKit, бета-версии iOS и iPadOS 16.4 от Apple позволят веб-приложениям Safari на домашнем экране отправлять push-уведомления.
Уведомления от веб-приложений работают точно так же, как уведомления от других приложений. Они отображаются на экране блокировки, в Центре уведомлений и на сопряженных Apple Watch.
#ios
👍9😢4
Swift Regex Tutorial: Getting Started
Недавно был пост Regex в Swift 5.7. А вот и туториал по данной теме на английском языке:
👉 Что такое регулярки в целом
👉 Как изменилась работа с ними в Swift 5.7
👉 Как захватывать части строк, которые вы ищете
👉 Как использовать
👉 Как загрузить плохо отформатированный текстовый файл в модель
👉 Как обрабатывать несостыковки в данных
#swift #tutorial
Недавно был пост Regex в Swift 5.7. А вот и туториал по данной теме на английском языке:
👉 Что такое регулярки в целом
👉 Как изменилась работа с ними в Swift 5.7
👉 Как захватывать части строк, которые вы ищете
👉 Как использовать
RegexBuilder
, чтобы собирать сложные регулярки, которые легко понимать👉 Как загрузить плохо отформатированный текстовый файл в модель
👉 Как обрабатывать несостыковки в данных
#swift #tutorial
👍5