iOS Dev
Open in Telegram
👨💻Автор: Виктор Грушевский (@Viktorianec) ⚒️ База: https://boosty.to/ios_dev | 🤖 @iOSIQBot | https://iosiq.ru 🍏Канал об iOS-разработке, алгоритмах и архитектурах ⭐️ Подготовка к собесам ⭐️ Код. Много кода. #ios #mobile #swift
Show more7 880
Subscribers
-224 hours
-17 days
-5230 days
Posts Archive
7 880
Бесплатные курсы по мобильной разработке и аналитике для студентов
Узнайте про Python, мобильную разработку и анализ данных.
Просто подайте заявку на сайте Т-Образования.
Преподаватели-эксперты поделятся с вами актуальными знаниями, которые пригодятся для карьеры в ИТ.
🔗 Выберите курс и проходите его в удобном темпе
7 880
Растягивание аудиофайла до нужной длины в Swift
Такая фича может быть полезной для устранения проблем синхронизации (например, при переводе исходного файла и генерации субтитров).
📖 Том Локхорст и Матейс Кадейк рассказывают, почему комбинации AVMutableComposition и AVAudioUnitTimePitch недостаточно. И описывают способ с дублированием конкретных фрагментов аудио в рассчитанных точках.
В рамках хакатона от RevenueCat я делал небольшую утилиту для генерации сабов, поэтому данный подход может оказаться весьма полезным. Да и для пополнения пула знаний решение довольно любопытное.
🛠 Код примера доступен на GitHub.
😃 iOS Dev
7 880
Создание кастомного Segmented Control в SwiftUI
Хотя многие примеры модификатора
matchedGeometryEffect() посвящены анимации, он может применяться и в других контекстах, например для создания своих контролов.
📖 Наталья Панферова в своем блоге рассказывает о простом способе использования этого модификатора для создания собственного компонента со слайд-анимацией.
😃 iOS Dev7 880
Полезные советы для Advent of Code на Swift
Каждый декабрь Эрик Вастл публикует Advent of Code — увлекательный набор заданий по написанию алгоритмов.
Каждый день с 1 по 25 декабря публикуется по одной задаче.
Задачи появляются постепенно, начиная с самых простых и постепенно усложняются.
🔗 Здесь есть несложная инструкция, как присоединиться к Swift-лидерборду.
А на скриншоте несколько советов, как упростить решение задач, используя Swift Algorithms.
😃 iOS Dev
7 880
Новогодняя анимация на SwiftUI+AppKit
Интересное решение придумал разработчик, чтобы добавить немного атмосферы в последний месяц этого года.
🤩 Оказывается, что такой эффект можно создать для мака, что и доказывает Simon B. Støvring.
Интересно, кто-то из читателей нашего канала сможет повторить такой эффект?
😃 iOS Dev
7 880
Реализация поисковых подсказок в SwiftUI
🔎 Модификатор
searchSuggestions(_:) - это полезная фича, которая улучшает работу поиска в приложениях для iOS.
В сочетании с отслеживанием истории поиска можно создать интуитивно понятный интерфейс, который поможет пользователям быстро найти то, что они ищут (и легко вернуться к ранее просмотренным элементам).
📖 В этом материале рассказано, как внедрить такую фичу в своё приложение поэтапно:
1️⃣ Реализация фильтрации поиска в режиме реального времени.
2️⃣ Внедрение подсказок.
3️⃣ Отслеживание истории поиска.
4️⃣ Создание удобной навигации.
😃 iOS Dev7 880
Пример интеграции Natural Language: анализ текста и генерация градиента на основе результата
ℹ️ Natural Language — это фреймворк, предоставляющий набор инструментов для анализа и обработки текста.
Его можно использовать, например, для определения языка, поиска сходства между фрагментами и т. д.
📖 В своей статье Артем Новичков рассматривает особенности использования фреймворка, приводит примеры и показывает возможное применение с использованием MeshGradient (в канале есть несколько разборов).
🛠 Код примера доступен на GitHub.
😃 iOS Dev
7 880
Оптимизация процесса компиляции и выполнения тестов в Xcode
⏳ Компиляция проектов Xcode может занимать много времени (особенно после очистки кэша).
При этом время компиляции обычно растет динамически вместе с увеличением проекта, а скорость сборок часто повышается только за счёт обновления аппаратного обеспечения, что само по себе крайне дорогостоящий процесс.
На протяжении многих лет в Tuist вкладывали средства в решение этой проблемы, используя наиболее оригинальный и экономически эффективный подход с помощью фич Xcode.
📖 В этой статье разработчики из Tuist объясняют, что именно может замедлять скорость сборки проектов, какие шаги можно предпринять и почему превьюхи в SwiftUI могут отвалиться из-за проблем билд-системы самого Xcode.
😃 iOS Dev
7 880
Подборка экспериментальных анимаций на SwiftUI с кодом
😎 Майкл Ли - дизайнер, который любит делать прототипы с необычными подходами.
Недавно он заопенсорсил всю коллекцию (и обещает продолжать её наполнять).
🛠 Ознакомиться с примерами можно на Github.
😃 iOS Dev
7 880
Об анатомии крэшей на iOS «по-взрослому»
Давид Чупреев из команды Core iOS ОК на хабре постарался раскрыть тему крашей, и в фундаментальной статье описал, откуда они берутся и, что самое главное, как с ними взаимодействовать.
📖 В этом материале затрагиваются не только технические азы, но и структура краш-репорта, виды исключений, а также принцип работы PLCrashReporter.
🔗 А в нашем канале недавно был ещё один разбор «9 уровней зла» от падения фрейм-рейта до компрометации системы в целом.
😃 iOS Dev
7 880
Black Friday для iOS Dev
🎆 Нашёл замечательный ресурс на Github со всеми скидками для разработчиков (тут есть и Proxyman, и RocketSlim, и многое другое). Целых 5 000 звёзд.
И дополню своими (кстати, сегодня выложил решения сложных задач с CodeRun, одна из них с любопытным подходом):
💰 -30% на бусти (работает для старых, актуальных и новых подписчиков) на всю неделю.
⭐️ -30% в телеграм.
Вот, что вас там ждёт:
Подготовка к собеседованиям: - Мок-собесы с публичным доступом (сейчас несколько десятков на русском и английском языках). - Вопросы для подготовки по секциям (сотни примеров на разные темы) - Частные узкие темы (с поиском проблем в коде). - System Design. Мои советы и большая подборка материалов. Алгоритмы: - Сложность алгоритмов. - Разбор десятков задач с контестов (в том числе и от яндекса). - Популярные методы решения задач (с примерами). Архитектуры: - Все паттерны проектирования банды четырёх. Общая информация и примеры реализации на Swift. - Архитектурные заблуждения. - Реализация в реальных приложениях. Необычные эффекты: В этом разделе я делюсь анимациями, подходами к созданию и десятками примеров. Инструментарий. Полезные советы при работе с Xcode, терминалом и симулятором.📱Скидка на ReviewBuddy (больше о приложении) 📱Приложение iOS IQ - бесплатно (так будет всегда).
7 880
Интеграция Live Activity и Dynamic Island в iOS: подробное руководство
📖 В масштабной статье описаны этапы, позволяющие, эффективно интегрировать Live Activities и Dynamic Island в приложение для iOS.
Плюс в том, что рассмотрен каждый шаг: от ограничений дизайна до обработки обновлений.
📺 Также материал доступен и в формате видео.
😃 iOS Dev
7 880
Есть ли место творчеству в разработке?
Многие романтизируют нашу профессию, но так ли это на самом деле, большой вопрос.
В некоторых рекламах показывают программистов, которые пьют чашку кофе, за окном льёт дождь, а яблочко на ноутбуке (прошли времена) светится и озаряет надеждой на светлое будущее. В реальности же всё немного иначе.
Чаще всего разработка — это совокупность многих ограничений: ТЗ, дизайн, жёсткая архитектура, процесс код-ревью и тестирование — повторить несколько раз. В зависимости от уровня компании между каждым этапом могут быть свои прослойки, в том числе согласования, многократные изменения и смещения приоритетов.
Когда-то давным-давно я запомнил важную истину: код, который вы пишете на работе, вам не принадлежит. Казалось бы, банальная фраза, но она сильно меняет мировоззрение. Наша задача — в первую очередь закрывать потребности бизнеса и получать за это справедливое вознаграждение.
В мифическом человеко-месяце Брукса есть глава, посвященная радостям ремесла. Я не помню детали, так как читал её в университете, но суть в том, что программисты радуются самому процессу разработки и решению сложных, запутанных вещей. Выброс дофамина, который мы получаем, когда сложные вещи наконец компилятся, бустит общее состояние, а возможность делать вещи, полезные остальным, выступает путеводной звездой.
На мой взгляд, выгорание человека как специалиста происходит в первую очередь от отсутствия понимания, что именно нужно сделать. И от монотонности одного и того же, что справедливо не только для программирования. Поэтому в сфере, когда вы решаете новые задачи, расширяя функциональность, гибкость мышления будет только развиваться.
Я общался со многими людьми, которые менторят людей (а ещё ведут блоги о разработке, но не программируют сами, что интересно), видел множество ребят, которые разочаровывались в программировании спустя два месяца после попадания в профессию, и видел выгоревших профессионалов с десятилетним опытом по причинам, озвученным в абзаце выше.
Несмотря на это, количество людей, которые стремятся попасть внутрь магического IT все также высоко. Приведу пример, за последние несколько месяцев я общался со своими коллегами из топовых компаний, и по нашим суммарным внутренним метрикам количество продолжает расти, в начале года на одну вакансию в среднем было 12 отзывов, сейчас около 40 (это уже после того, как HR делятся резюме кандидатов), об этом нужно помнить.
Творческая ли наша профессия?
Если вы умеете находить радость в условиях жёстких ограничений и кайфуете от того, что вашим продуктом будут пользоваться тысячи людей, безусловно.
Если вы готовы постоянно учиться, следить за новыми технологиями и у вас в компании можно юзать новые фреймворки, а не поддерживать 12 ось, то да.
Если вы не боитесь сложных вызовов, когда на Stackoverflow отсутствуют ответы, а ChatGPT ещё не обучился, конечно.
Но когда вы в очередной раз столкнётесь с багом, который не воспроизводится или ваше приложение зареджектят потому что луна опять не в той фазе, или же проект надо будет перевести на Swift 7 спустя несколько лет, а для этого надо будет обновить треть кодовой базы — перечитайте этот пост.
😃 iOS Dev
7 880
Подробное объяснение работы с Environment в SwiftUI
Автор статьи считает, что SwiftUI буквально произвёл революцию в разработке приложений благодаря декларативному синтаксису и реактивной обработке данных, тем самым упростив создание динамичных и отзывчивых пользовательских интерфейсов.
В основе фреймворка лежит обертка свойств
@Environment (и связанные с этим инструменты).
📖 В статье подробно описаны различные механизмы от классических протоколов @EnvironmentObject и ObservableObject до относительно новых макросов @Observable и @Bindable.
А ещё уделено внимание производительности и сложным иерархиям вью в приложении.
😃 iOS Dev7 880
TextEditor в SwiftUI: возможности, ограничения и советы
Работа с текстом — пожалуй, одна из самых частых и важных задач в нашей разработке.
В проектах, например, может быть поле для комментариев, создание заметок или даже полноценный редактор.
В SwiftUI есть возможность использования TextEditor. И пусть он не такой мощный, как UITextView, его вполне достаточно для большинства случаев использования.
📖 В этом материале разбираются не только примеры использования (например, как сделать свою функцию find/replace), но и приводится простой пример реализации.
😃 iOS Dev
7 880
Эффект переливающегося стикера на Metal+Swift
Крутые анимации всегда сложны, а довести задуманное до конца уже неплохо.
🤩 Нашел блестящую (в прямом и переносном смыслах) реализацию фойл-эффекта. Кстати, автор пишет, что пытался повторить то, что можно встретить в самых разных карточках, например, в покемонах.
Использовано сразу несколько шейдеров и модификаций внутри.
📖 Бонусом идёт репозиторий с кодом (из коробки доступно для настройки несколько параметров).
✅А здесь ещё больше сложных анимаций и эффектов.
😃 iOS Dev
7 880
Обнаружение лиц на изображениях с помощью фреймворка Vision
Распознавание лиц может оказаться полезным инструментом для многих приложений.
Например в системном «Фото» от Apple это используется для организации специальной коллекции.
В 18 оси для разработчиков появилась возможность использовать новый запрос
FaceObservation, который упрощает работу с такими задачами.
📖 Доступное объяснение и пример использования есть в этой статье.
😃 iOS Dev7 880
Большое обновление App Store Connect — версия 2.0
🎉 Apple обновили приложение (надеюсь, теперь не будет постоянного дропа сессий, как раньше), можно подписаться на уведомления о фичеринге и не только.
А ещё появился целый раздел, в котором можно напрямую номинировать своё приложение на фичеринг (среди типов добавление контента, улучшение функциональности или в целом запуск).
📖 Узнать больше о номинациях и новых доступных ресурсах можно здесь.
😃 iOS Dev
7 880
Что такое краш в iOS: детальный разбор
Конечно, факт того, что краш - это завершение работы приложения, является очевидным.
Джейкоб Бартлетт рассматривает природу сбоев с другого угла, ведь на самом деле система вызывает краш, чтобы сохранить устройство в безопасности.
📖 Делюсь отличной статьёй, в которой сложная тема рассмотрена с юмором (и даже приведены 9 уровней зла от падения фрейм-рейта до компрометации системы в целом).
Рассмотрены сбои не только в рантайме, но и в ядре XNU, а ещё указано, почему краши - далеко не самое худшее, что может произойти с девайсом.
😃 iOS Dev
7 880
Вакансия iOS-разработчика в VK Видео
VK ищут сотрудника в команду, которая создаёт продукты в области обработки и передачи видео, алгоритмы машинного обучения и компьютерного зрения, а также видео-конференц-связь для пользователей компании.
Задачи, которые нужно будет решать:
🔘Разработка приложения ВКонтакте и VK Видео для iOS и tvOS.
🔘Создание важных инструментов: загрузчик и редактор видео.
🔘Участие во всех этапах разработки — от проектирования до запуска.
Что ждут от кандидата:
🔘Отличное знание Swift и платформы iOS в целом, уровня middle+ и выше.
🔘Опыт работы с Objective-C или готовность его изучить.
🔘Знание классических алгоритмов и структур данных.
🔗 Откликнуться можно здесь.
