Невозможно всё знать
В университете, когда я писал свою кандидатскую диссертацию несколько лет назад (пусть и не вышел на защиту в итоге, перейдя полностью в коммерческую разработку), мой научный руководитель поделился важной мыслью, которую я добавил в свой арсенал знаний и очень бережно вспоминаю её, когда сталкиваюсь со сложными задачами.
Вкратце: весь объём знаний, всё, что придумало человечество на данный момент можно представить в виде круга. Всё, что есть — технологии, идеи и накопленный опыт внутри. И наша задача (тех, кто пытается создать что-то новое), это не выпрыгнуть из него, не изобрести телепорт или какую-то качественно новую технологию, а всего лишь добавить одну точку на окружности. Одну — за которую можно зацепиться всем другим исследователям, которые добавят свои маленькие точки, и дальше может пройти большое количество времени, но принцип станет понятным. С помощью таких маленьких шагов вперёд всегда можно видеть чуть большую картину, а это означает, что и большее количество перспектив.
В разработке также, особенно когда мы сталкиваемся с широким полем неизвестности.
Как-то я боролся с багом, связанным с CallKit: была проблема исчезающего звука на втором входящем вызове на заблокированном экране телефона (только вдумайтесь в исходные условия), и только благодаря тому, что когда-то я читал про работу с аудиосессиями и создавал несколько плееров, я понимал несколько вариантов развития событий, и, соответственно возможных решений.
Иногда в разработке вы можете столкнуться с задачами, на которые не то, что нет ответов на StackOverflow, но будет только один вопрос (и тот ваш, заданный пару лет назад, как в известной шутке).
В таком случае придётся искать (и создавать что-то новое). Со стороны для тестировщиков (или для заказчика проекта, или для вашего ПМ) это будет выглядеть, как просто ещё один решённый баг. Но для вас — это маленькая победа, помните о ней. Из таких решённых задач и будет складываться тот пул знаний, который в будущем позволит вам легче справиться с более сложными вещами.
Что-то всегда будет ломаться. Объём, нагрузка, требования, новые SDK, новые технологии будут заставлять настраивать проект напильником (по этой причине стоит помнить о подводных камнях сторонних зависимостей).
Знать всё невозможно.
Но хочется вспомнить о словах человека, который придумал соцсеть с миллиардом (уже двумя) человек:
«Move fast and break things» (двигайтесь быстро и ломайте вещи)
И если у вас ничего не ломается, то возможно, ваш проект развивается недостаточно быстро?
😃 iOS Dev
В университете, когда я писал свою кандидатскую диссертацию несколько лет назад (пусть и не вышел на защиту в итоге, перейдя полностью в коммерческую разработку), мой научный руководитель поделился важной мыслью, которую я добавил в свой арсенал знаний и очень бережно вспоминаю её, когда сталкиваюсь со сложными задачами.
Вкратце: весь объём знаний, всё, что придумало человечество на данный момент можно представить в виде круга. Всё, что есть — технологии, идеи и накопленный опыт внутри. И наша задача (тех, кто пытается создать что-то новое), это не выпрыгнуть из него, не изобрести телепорт или какую-то качественно новую технологию, а всего лишь добавить одну точку на окружности. Одну — за которую можно зацепиться всем другим исследователям, которые добавят свои маленькие точки, и дальше может пройти большое количество времени, но принцип станет понятным. С помощью таких маленьких шагов вперёд всегда можно видеть чуть большую картину, а это означает, что и большее количество перспектив.
В разработке также, особенно когда мы сталкиваемся с широким полем неизвестности.
Как-то я боролся с багом, связанным с CallKit: была проблема исчезающего звука на втором входящем вызове на заблокированном экране телефона (только вдумайтесь в исходные условия), и только благодаря тому, что когда-то я читал про работу с аудиосессиями и создавал несколько плееров, я понимал несколько вариантов развития событий, и, соответственно возможных решений.
Иногда в разработке вы можете столкнуться с задачами, на которые не то, что нет ответов на StackOverflow, но будет только один вопрос (и тот ваш, заданный пару лет назад, как в известной шутке).
В таком случае придётся искать (и создавать что-то новое). Со стороны для тестировщиков (или для заказчика проекта, или для вашего ПМ) это будет выглядеть, как просто ещё один решённый баг. Но для вас — это маленькая победа, помните о ней. Из таких решённых задач и будет складываться тот пул знаний, который в будущем позволит вам легче справиться с более сложными вещами.
Что-то всегда будет ломаться. Объём, нагрузка, требования, новые SDK, новые технологии будут заставлять настраивать проект напильником (по этой причине стоит помнить о подводных камнях сторонних зависимостей).
Знать всё невозможно.
Но хочется вспомнить о словах человека, который придумал соцсеть с миллиардом (уже двумя) человек:
«Move fast and break things» (двигайтесь быстро и ломайте вещи)
И если у вас ничего не ломается, то возможно, ваш проект развивается недостаточно быстро?
Please open Telegram to view this post
VIEW IN TELEGRAM
224🔥48❤🔥16💯9 4👍2👌1
This media is not supported in your browser
VIEW IN TELEGRAM
Реализация приложения для игры в шахматы на SwiftUI
David v.Knobelsdorff недавно создал шахматное приложение от начала до конца с помощью SwiftUI и задокументировал весь процесс в своем блоге.
Это объёмный материал (аж из девяти частей), но его стоит прочитать, если вы интересуетесь шахматами или ищете хороший пример создания полноценного приложения на SwiftUI.
1️⃣ Мотивация и терминология.
2️⃣ Зачем нужны pgn-файлы и как с ними работать.
3️⃣ Реализация логики.
4️⃣ Создание набора компонентов.
5️⃣ База данных и кодирование ходов.
6️⃣ FSRS-алгоритм (тут можно почитать про него дополнительно).
7️⃣ Шахматные головоломки.
8️⃣ Использование локального шахматного движка.
9️⃣ Тестирование и выводы.
😃 iOS Dev
David v.Knobelsdorff недавно создал шахматное приложение от начала до конца с помощью SwiftUI и задокументировал весь процесс в своем блоге.
Это объёмный материал (аж из девяти частей), но его стоит прочитать, если вы интересуетесь шахматами или ищете хороший пример создания полноценного приложения на SwiftUI.
1️⃣ Мотивация и терминология.
2️⃣ Зачем нужны pgn-файлы и как с ними работать.
3️⃣ Реализация логики.
4️⃣ Создание набора компонентов.
5️⃣ База данных и кодирование ходов.
6️⃣ FSRS-алгоритм (тут можно почитать про него дополнительно).
7️⃣ Шахматные головоломки.
8️⃣ Использование локального шахматного движка.
9️⃣ Тестирование и выводы.
Please open Telegram to view this post
VIEW IN TELEGRAM
10 35👍14🔥4👏4✍1👌1💯1🏆1🎅1🎄1
Что такое краш в iOS: детальный разбор
Конечно, факт того, что краш - это завершение работы приложения, является очевидным.
Джейкоб Бартлетт рассматривает природу сбоев с другого угла, ведь на самом деле система вызывает краш, чтобы сохранить устройство в безопасности.
📖 Делюсь отличной статьёй, в которой сложная тема рассмотрена с юмором (и даже приведены 9 уровней зла от падения фрейм-рейта до компрометации системы в целом).
Рассмотрены сбои не только в рантайме, но и в ядре XNU, а ещё указано, почему краши - далеко не самое худшее, что может произойти с девайсом.
😃 iOS Dev
Конечно, факт того, что краш - это завершение работы приложения, является очевидным.
Джейкоб Бартлетт рассматривает природу сбоев с другого угла, ведь на самом деле система вызывает краш, чтобы сохранить устройство в безопасности.
📖 Делюсь отличной статьёй, в которой сложная тема рассмотрена с юмором (и даже приведены 9 уровней зла от падения фрейм-рейта до компрометации системы в целом).
Рассмотрены сбои не только в рантайме, но и в ядре XNU, а ещё указано, почему краши - далеко не самое худшее, что может произойти с девайсом.
Please open Telegram to view this post
VIEW IN TELEGRAM
17 21👍10👏4🔥3☃2❤🔥1🏆1🎄1
Большое обновление App Store Connect — версия 2.0
🎉 Apple обновили приложение (надеюсь, теперь не будет постоянного дропа сессий, как раньше), можно подписаться на уведомления о фичеринге и не только.
А ещё появился целый раздел, в котором можно напрямую номинировать своё приложение на фичеринг (среди типов добавление контента, улучшение функциональности или в целом запуск).
📖 Узнать больше о номинациях и новых доступных ресурсах можно здесь.
😃 iOS Dev
🎉 Apple обновили приложение (надеюсь, теперь не будет постоянного дропа сессий, как раньше), можно подписаться на уведомления о фичеринге и не только.
А ещё появился целый раздел, в котором можно напрямую номинировать своё приложение на фичеринг (среди типов добавление контента, улучшение функциональности или в целом запуск).
📖 Узнать больше о номинациях и новых доступных ресурсах можно здесь.
Please open Telegram to view this post
VIEW IN TELEGRAM
9 15🎉6🔥5🤩4⚡3🆒2☃1👍1💯1🎄1
Обнаружение лиц на изображениях с помощью фреймворка Vision
Распознавание лиц может оказаться полезным инструментом для многих приложений.
Например в системном «Фото» от Apple это используется для организации специальной коллекции.
В 18 оси для разработчиков появилась возможность использовать новый запрос
📖 Доступное объяснение и пример использования есть в этой статье.
😃 iOS Dev
Распознавание лиц может оказаться полезным инструментом для многих приложений.
Например в системном «Фото» от Apple это используется для организации специальной коллекции.
В 18 оси для разработчиков появилась возможность использовать новый запрос
FaceObservation
, который упрощает работу с такими задачами.📖 Доступное объяснение и пример использования есть в этой статье.
Please open Telegram to view this post
VIEW IN TELEGRAM
11👍16🔥8 8✍2❤🔥2👌2☃1⚡1
This media is not supported in your browser
VIEW IN TELEGRAM
Эффект переливающегося стикера на Metal+Swift
Крутые анимации всегда сложны, а довести задуманное до конца уже неплохо.
🤩 Нашел блестящую (в прямом и переносном смыслах) реализацию фойл-эффекта. Кстати, автор пишет, что пытался повторить то, что можно встретить в самых разных карточках, например, в покемонах.
Использовано сразу несколько шейдеров и модификаций внутри.
📖 Бонусом идёт репозиторий с кодом (из коробки доступно для настройки несколько параметров).
✅ А здесь ещё больше сложных анимаций и эффектов.
😃 iOS Dev
Крутые анимации всегда сложны, а довести задуманное до конца уже неплохо.
Использовано сразу несколько шейдеров и модификаций внутри.
📖 Бонусом идёт репозиторий с кодом (из коробки доступно для настройки несколько параметров).
Please open Telegram to view this post
VIEW IN TELEGRAM
13🔥40 10🤩7👍6🎅2 2⚡1✍1👌1💯1
TextEditor в SwiftUI: возможности, ограничения и советы
Работа с текстом — пожалуй, одна из самых частых и важных задач в нашей разработке.
В проектах, например, может быть поле для комментариев, создание заметок или даже полноценный редактор.
В SwiftUI есть возможность использования TextEditor. И пусть он не такой мощный, как UITextView, его вполне достаточно для большинства случаев использования.
📖 В этом материале разбираются не только примеры использования (например, как сделать свою функцию find/replace), но и приводится простой пример реализации.
😃 iOS Dev
Работа с текстом — пожалуй, одна из самых частых и важных задач в нашей разработке.
В проектах, например, может быть поле для комментариев, создание заметок или даже полноценный редактор.
В SwiftUI есть возможность использования TextEditor. И пусть он не такой мощный, как UITextView, его вполне достаточно для большинства случаев использования.
📖 В этом материале разбираются не только примеры использования (например, как сделать свою функцию find/replace), но и приводится простой пример реализации.
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍16 9🔥4🆒2✍1☃1👌1💯1🎄1
Подробное объяснение работы с Environment в SwiftUI
Автор статьи считает, что SwiftUI буквально произвёл революцию в разработке приложений благодаря декларативному синтаксису и реактивной обработке данных, тем самым упростив создание динамичных и отзывчивых пользовательских интерфейсов.
В основе фреймворка лежит обертка свойств
📖 В статье подробно описаны различные механизмы от классических протоколов
А ещё уделено внимание производительности и сложным иерархиям вью в приложении.
😃 iOS Dev
Автор статьи считает, что SwiftUI буквально произвёл революцию в разработке приложений благодаря декларативному синтаксису и реактивной обработке данных, тем самым упростив создание динамичных и отзывчивых пользовательских интерфейсов.
В основе фреймворка лежит обертка свойств
@Environment
(и связанные с этим инструменты). 📖 В статье подробно описаны различные механизмы от классических протоколов
@EnvironmentObject
и ObservableObject
до относительно новых макросов @Observable
и @Bindable
. А ещё уделено внимание производительности и сложным иерархиям вью в приложении.
Please open Telegram to view this post
VIEW IN TELEGRAM
6 18👍8🔥4👌3👏2🎉2💯2🎄2✍1
Есть ли место творчеству в разработке?
Многие романтизируют нашу профессию, но так ли это на самом деле, большой вопрос.
В некоторых рекламах показывают программистов, которые пьют чашку кофе, за окном льёт дождь, а яблочко на ноутбуке (прошли времена) светится и озаряет надеждой на светлое будущее. В реальности же всё немного иначе.
Чаще всего разработка — это совокупность многих ограничений: ТЗ, дизайн, жёсткая архитектура, процесс код-ревью и тестирование — повторить несколько раз. В зависимости от уровня компании между каждым этапом могут быть свои прослойки, в том числе согласования, многократные изменения и смещения приоритетов.
Когда-то давным-давно я запомнил важную истину: код, который вы пишете на работе, вам не принадлежит. Казалось бы, банальная фраза, но она сильно меняет мировоззрение. Наша задача — в первую очередь закрывать потребности бизнеса и получать за это справедливое вознаграждение.
В мифическом человеко-месяце Брукса есть глава, посвященная радостям ремесла. Я не помню детали, так как читал её в университете, но суть в том, что программисты радуются самому процессу разработки и решению сложных, запутанных вещей. Выброс дофамина, который мы получаем, когда сложные вещи наконец компилятся, бустит общее состояние, а возможность делать вещи, полезные остальным, выступает путеводной звездой.
На мой взгляд, выгорание человека как специалиста происходит в первую очередь от отсутствия понимания, что именно нужно сделать. И от монотонности одного и того же, что справедливо не только для программирования. Поэтому в сфере, когда вы решаете новые задачи, расширяя функциональность, гибкость мышления будет только развиваться.
Я общался со многими людьми, которые менторят людей (а ещё ведут блоги о разработке, но не программируют сами, что интересно), видел множество ребят, которые разочаровывались в программировании спустя два месяца после попадания в профессию, и видел выгоревших профессионалов с десятилетним опытом по причинам, озвученным в абзаце выше.
Несмотря на это, количество людей, которые стремятся попасть внутрь магического IT все также высоко. Приведу пример, за последние несколько месяцев я общался со своими коллегами из топовых компаний, и по нашим суммарным внутренним метрикам количество продолжает расти, в начале года на одну вакансию в среднем было 12 отзывов, сейчас около 40 (это уже после того, как HR делятся резюме кандидатов), об этом нужно помнить.
Творческая ли наша профессия?
Если вы умеете находить радость в условиях жёстких ограничений и кайфуете от того, что вашим продуктом будут пользоваться тысячи людей, безусловно.
Если вы готовы постоянно учиться, следить за новыми технологиями и у вас в компании можно юзать новые фреймворки, а не поддерживать 12 ось, то да.
Если вы не боитесь сложных вызовов, когда на Stackoverflow отсутствуют ответы, а ChatGPT ещё не обучился, конечно.
Но когда вы в очередной раз столкнётесь с багом, который не воспроизводится или ваше приложение зареджектят потому что луна опять не в той фазе, или же проект надо будет перевести на Swift 7 спустя несколько лет, а для этого надо будет обновить треть кодовой базы — перечитайте этот пост.
😃 iOS Dev
Многие романтизируют нашу профессию, но так ли это на самом деле, большой вопрос.
В некоторых рекламах показывают программистов, которые пьют чашку кофе, за окном льёт дождь, а яблочко на ноутбуке (прошли времена) светится и озаряет надеждой на светлое будущее. В реальности же всё немного иначе.
Чаще всего разработка — это совокупность многих ограничений: ТЗ, дизайн, жёсткая архитектура, процесс код-ревью и тестирование — повторить несколько раз. В зависимости от уровня компании между каждым этапом могут быть свои прослойки, в том числе согласования, многократные изменения и смещения приоритетов.
Когда-то давным-давно я запомнил важную истину: код, который вы пишете на работе, вам не принадлежит. Казалось бы, банальная фраза, но она сильно меняет мировоззрение. Наша задача — в первую очередь закрывать потребности бизнеса и получать за это справедливое вознаграждение.
В мифическом человеко-месяце Брукса есть глава, посвященная радостям ремесла. Я не помню детали, так как читал её в университете, но суть в том, что программисты радуются самому процессу разработки и решению сложных, запутанных вещей. Выброс дофамина, который мы получаем, когда сложные вещи наконец компилятся, бустит общее состояние, а возможность делать вещи, полезные остальным, выступает путеводной звездой.
На мой взгляд, выгорание человека как специалиста происходит в первую очередь от отсутствия понимания, что именно нужно сделать. И от монотонности одного и того же, что справедливо не только для программирования. Поэтому в сфере, когда вы решаете новые задачи, расширяя функциональность, гибкость мышления будет только развиваться.
Я общался со многими людьми, которые менторят людей (а ещё ведут блоги о разработке, но не программируют сами, что интересно), видел множество ребят, которые разочаровывались в программировании спустя два месяца после попадания в профессию, и видел выгоревших профессионалов с десятилетним опытом по причинам, озвученным в абзаце выше.
Несмотря на это, количество людей, которые стремятся попасть внутрь магического IT все также высоко. Приведу пример, за последние несколько месяцев я общался со своими коллегами из топовых компаний, и по нашим суммарным внутренним метрикам количество продолжает расти, в начале года на одну вакансию в среднем было 12 отзывов, сейчас около 40 (это уже после того, как HR делятся резюме кандидатов), об этом нужно помнить.
Творческая ли наша профессия?
Если вы умеете находить радость в условиях жёстких ограничений и кайфуете от того, что вашим продуктом будут пользоваться тысячи людей, безусловно.
Если вы готовы постоянно учиться, следить за новыми технологиями и у вас в компании можно юзать новые фреймворки, а не поддерживать 12 ось, то да.
Если вы не боитесь сложных вызовов, когда на Stackoverflow отсутствуют ответы, а ChatGPT ещё не обучился, конечно.
Но когда вы в очередной раз столкнётесь с багом, который не воспроизводится или ваше приложение зареджектят потому что луна опять не в той фазе, или же проект надо будет перевести на Swift 7 спустя несколько лет, а для этого надо будет обновить треть кодовой базы — перечитайте этот пост.
Please open Telegram to view this post
VIEW IN TELEGRAM
144❤🔥30 12🏆9👍5🤝4👏2🎄2 2⚡1✍1🔥1
Интеграция Live Activity и Dynamic Island в iOS: подробное руководство
📖 В масштабной статье описаны этапы, позволяющие, эффективно интегрировать Live Activities и Dynamic Island в приложение для iOS.
Плюс в том, что рассмотрен каждый шаг: от ограничений дизайна до обработки обновлений.
📺 Также материал доступен и в формате видео.
😃 iOS Dev
📖 В масштабной статье описаны этапы, позволяющие, эффективно интегрировать Live Activities и Dynamic Island в приложение для iOS.
Плюс в том, что рассмотрен каждый шаг: от ограничений дизайна до обработки обновлений.
📺 Также материал доступен и в формате видео.
Please open Telegram to view this post
VIEW IN TELEGRAM
7 23👍11⚡5🔥3👏2💯2☃1🎉1🤩1
Black Friday для iOS Dev
🎆 Нашёл замечательный ресурс на Github со всеми скидками для разработчиков (тут есть и Proxyman, и RocketSlim, и многое другое). Целых 5 000 звёзд.
И дополню своими (кстати, сегодня выложил решения сложных задач с CodeRun, одна из них с любопытным подходом):
💰 -30% на бусти (работает для старых, актуальных и новых подписчиков) на всю неделю.
⭐️ -30% в телеграм.
Вот, что вас там ждёт:
📱Скидка на ReviewBuddy (больше о приложении)
📱Приложение iOS IQ - бесплатно (так будет всегда).
И дополню своими (кстати, сегодня выложил решения сложных задач с CodeRun, одна из них с любопытным подходом):
Вот, что вас там ждёт:
Подготовка к собеседованиям:
- Мок-собесы с публичным доступом (сейчас несколько десятков на русском и английском языках).
- Вопросы для подготовки по секциям (сотни примеров на разные темы)
- Частные узкие темы (с поиском проблем в коде).
- System Design. Мои советы и большая подборка материалов.
Алгоритмы:
- Сложность алгоритмов.
- Разбор десятков задач с контестов (в том числе и от яндекса).
- Популярные методы решения задач (с примерами).
Архитектуры:
- Все паттерны проектирования банды четырёх. Общая информация и примеры реализации на Swift.
- Архитектурные заблуждения.
- Реализация в реальных приложениях.
Необычные эффекты:
В этом разделе я делюсь анимациями, подходами к созданию и десятками примеров.
Инструментарий. Полезные советы при работе с Xcode, терминалом и симулятором.
📱Скидка на ReviewBuddy (больше о приложении)
📱Приложение iOS IQ - бесплатно (так будет всегда).
Please open Telegram to view this post
VIEW IN TELEGRAM
22 12☃7👍7🎄2✍1🔥1💯1🏆1
Об анатомии крэшей на iOS «по-взрослому»
Давид Чупреев из команды Core iOS ОК на хабре постарался раскрыть тему крашей, и в фундаментальной статье описал, откуда они берутся и, что самое главное, как с ними взаимодействовать.
📖 В этом материале затрагиваются не только технические азы, но и структура краш-репорта, виды исключений, а также принцип работы PLCrashReporter.
🔗 А в нашем канале недавно был ещё один разбор «9 уровней зла» от падения фрейм-рейта до компрометации системы в целом.
😃 iOS Dev
Давид Чупреев из команды Core iOS ОК на хабре постарался раскрыть тему крашей, и в фундаментальной статье описал, откуда они берутся и, что самое главное, как с ними взаимодействовать.
📖 В этом материале затрагиваются не только технические азы, но и структура краш-репорта, виды исключений, а также принцип работы PLCrashReporter.
🔗 А в нашем канале недавно был ещё один разбор «9 уровней зла» от падения фрейм-рейта до компрометации системы в целом.
Please open Telegram to view this post
VIEW IN TELEGRAM
7 14👍8👏5☃2✍1🔥1🎉1💯1🎅1
This media is not supported in your browser
VIEW IN TELEGRAM
Подборка экспериментальных анимаций на SwiftUI с кодом
😎 Майкл Ли - дизайнер, который любит делать прототипы с необычными подходами.
Недавно он заопенсорсил всю коллекцию (и обещает продолжать её наполнять).
🛠 Ознакомиться с примерами можно на Github.
😃 iOS Dev
😎 Майкл Ли - дизайнер, который любит делать прототипы с необычными подходами.
Недавно он заопенсорсил всю коллекцию (и обещает продолжать её наполнять).
🛠 Ознакомиться с примерами можно на Github.
Please open Telegram to view this post
VIEW IN TELEGRAM
6 23☃7👍5🔥3💯3⚡2❤🔥1👏1🎄1
Оптимизация процесса компиляции и выполнения тестов в Xcode
⏳ Компиляция проектов Xcode может занимать много времени (особенно после очистки кэша).
При этом время компиляции обычно растет динамически вместе с увеличением проекта, а скорость сборок часто повышается только за счёт обновления аппаратного обеспечения, что само по себе крайне дорогостоящий процесс.
На протяжении многих лет в Tuist вкладывали средства в решение этой проблемы, используя наиболее оригинальный и экономически эффективный подход с помощью фич Xcode.
📖 В этой статье разработчики из Tuist объясняют, что именно может замедлять скорость сборки проектов, какие шаги можно предпринять и почему превьюхи в SwiftUI могут отвалиться из-за проблем билд-системы самого Xcode.
😃 iOS Dev
⏳ Компиляция проектов Xcode может занимать много времени (особенно после очистки кэша).
При этом время компиляции обычно растет динамически вместе с увеличением проекта, а скорость сборок часто повышается только за счёт обновления аппаратного обеспечения, что само по себе крайне дорогостоящий процесс.
На протяжении многих лет в Tuist вкладывали средства в решение этой проблемы, используя наиболее оригинальный и экономически эффективный подход с помощью фич Xcode.
📖 В этой статье разработчики из Tuist объясняют, что именно может замедлять скорость сборки проектов, какие шаги можно предпринять и почему превьюхи в SwiftUI могут отвалиться из-за проблем билд-системы самого Xcode.
Please open Telegram to view this post
VIEW IN TELEGRAM
12 14👍9👏3✍2☃1🔥1🎉1🎄1
This media is not supported in your browser
VIEW IN TELEGRAM
Пример интеграции Natural Language: анализ текста и генерация градиента на основе результата
ℹ️ Natural Language — это фреймворк, предоставляющий набор инструментов для анализа и обработки текста.
Его можно использовать, например, для определения языка, поиска сходства между фрагментами и т. д.
📖 В своей статье Артем Новичков рассматривает особенности использования фреймворка, приводит примеры и показывает возможное применение с использованием MeshGradient (в канале есть несколько разборов).
🛠 Код примера доступен на GitHub.
😃 iOS Dev
Его можно использовать, например, для определения языка, поиска сходства между фрагментами и т. д.
📖 В своей статье Артем Новичков рассматривает особенности использования фреймворка, приводит примеры и показывает возможное применение с использованием MeshGradient (в канале есть несколько разборов).
🛠 Код примера доступен на GitHub.
Please open Telegram to view this post
VIEW IN TELEGRAM
7 22⚡9🔥8👍7💯2😎2✍1☃1👏1🎄1 1
This media is not supported in your browser
VIEW IN TELEGRAM
Реализация поисковых подсказок в SwiftUI
🔎 Модификатор
В сочетании с отслеживанием истории поиска можно создать интуитивно понятный интерфейс, который поможет пользователям быстро найти то, что они ищут (и легко вернуться к ранее просмотренным элементам).
📖 В этом материале рассказано, как внедрить такую фичу в своё приложение поэтапно:
1️⃣ Реализация фильтрации поиска в режиме реального времени.
2️⃣ Внедрение подсказок.
3️⃣ Отслеживание истории поиска.
4️⃣ Создание удобной навигации.
😃 iOS Dev
🔎 Модификатор
searchSuggestions(_:)
- это полезная фича, которая улучшает работу поиска в приложениях для iOS. В сочетании с отслеживанием истории поиска можно создать интуитивно понятный интерфейс, который поможет пользователям быстро найти то, что они ищут (и легко вернуться к ранее просмотренным элементам).
📖 В этом материале рассказано, как внедрить такую фичу в своё приложение поэтапно:
1️⃣ Реализация фильтрации поиска в режиме реального времени.
2️⃣ Внедрение подсказок.
3️⃣ Отслеживание истории поиска.
4️⃣ Создание удобной навигации.
Please open Telegram to view this post
VIEW IN TELEGRAM
8 16👍8💯5✍3🆒2☃1🔥1👏1🏆1🎄1
This media is not supported in your browser
VIEW IN TELEGRAM
Новогодняя анимация на SwiftUI+AppKit
Интересное решение придумал разработчик, чтобы добавить немного атмосферы в последний месяц этого года.
🤩 Оказывается, что такой эффект можно создать для мака, что и доказывает Simon B. Støvring.
Интересно, кто-то из читателей нашего канала сможет повторить такой эффект?
😃 iOS Dev
Интересное решение придумал разработчик, чтобы добавить немного атмосферы в последний месяц этого года.
Интересно, кто-то из читателей нашего канала сможет повторить такой эффект?
Please open Telegram to view this post
VIEW IN TELEGRAM
7🎅26 11👍6☃5🔥3🎉2💯2👏1
Полезные советы для Advent of Code на Swift
Каждый декабрь Эрик Вастл публикует Advent of Code — увлекательный набор заданий по написанию алгоритмов.
Каждый день с 1 по 25 декабря публикуется по одной задаче.
Задачи появляются постепенно, начиная с самых простых и постепенно усложняются.
🔗 Здесь есть несложная инструкция, как присоединиться к Swift-лидерборду.
А на скриншоте несколько советов, как упростить решение задач, используя Swift Algorithms.
😃 iOS Dev
Каждый декабрь Эрик Вастл публикует Advent of Code — увлекательный набор заданий по написанию алгоритмов.
Каждый день с 1 по 25 декабря публикуется по одной задаче.
Задачи появляются постепенно, начиная с самых простых и постепенно усложняются.
А на скриншоте несколько советов, как упростить решение задач, используя Swift Algorithms.
Please open Telegram to view this post
VIEW IN TELEGRAM
7 20👍10🔥6👏2💯2 2⚡1👌1🎄1🆒1
This media is not supported in your browser
VIEW IN TELEGRAM
Создание кастомного Segmented Control в SwiftUI
Хотя многие примеры модификатора
📖 Наталья Панферова в своем блоге рассказывает о простом способе использования этого модификатора для создания собственного компонента со слайд-анимацией.
😃 iOS Dev
Хотя многие примеры модификатора
matchedGeometryEffect()
посвящены анимации, он может применяться и в других контекстах, например для создания своих контролов. 📖 Наталья Панферова в своем блоге рассказывает о простом способе использования этого модификатора для создания собственного компонента со слайд-анимацией.
Please open Telegram to view this post
VIEW IN TELEGRAM
7 15👍10🎄6❤🔥2🔥2💯2🎅2👏1🎉1
Растягивание аудиофайла до нужной длины в Swift
Такая фича может быть полезной для устранения проблем синхронизации (например, при переводе исходного файла и генерации субтитров).
📖 Том Локхорст и Матейс Кадейк рассказывают, почему комбинации AVMutableComposition и AVAudioUnitTimePitch недостаточно. И описывают способ с дублированием конкретных фрагментов аудио в рассчитанных точках.
В рамках хакатона от RevenueCat я делал небольшую утилиту для генерации сабов, поэтому данный подход может оказаться весьма полезным. Да и для пополнения пула знаний решение довольно любопытное.
🛠 Код примера доступен на GitHub.
😃 iOS Dev
Такая фича может быть полезной для устранения проблем синхронизации (например, при переводе исходного файла и генерации субтитров).
📖 Том Локхорст и Матейс Кадейк рассказывают, почему комбинации AVMutableComposition и AVAudioUnitTimePitch недостаточно. И описывают способ с дублированием конкретных фрагментов аудио в рассчитанных точках.
В рамках хакатона от RevenueCat я делал небольшую утилиту для генерации сабов, поэтому данный подход может оказаться весьма полезным. Да и для пополнения пула знаний решение довольно любопытное.
🛠 Код примера доступен на GitHub.
Please open Telegram to view this post
VIEW IN TELEGRAM
10 13👍9💯5🔥3☃2✍1👏1🙏1🎄1
Создание клона приложения Messages с помощью SwiftUI
📖 В статье автор делится своим подходом к вёрстке списка чатов, выборе аттачей и затрагивает особенности реализации баббла сообщений с помощью Path.
А посмотреть на реализацию эффекта отклеивания, как в нативном приложении, можно в этом посте.
😃 iOS Dev
📖 В статье автор делится своим подходом к вёрстке списка чатов, выборе аттачей и затрагивает особенности реализации баббла сообщений с помощью Path.
А посмотреть на реализацию эффекта отклеивания, как в нативном приложении, можно в этом посте.
Please open Telegram to view this post
VIEW IN TELEGRAM
10 15☃8👍7🔥3✍2 2👏1👌1🏆1🎄1