uz
Feedback
iOS Dev

iOS Dev

Kanalga Telegram’da o‘tish

👨‍💻Автор: Виктор Грушевский (@Viktorianec) ⚒️ База: https://boosty.to/ios_dev | 🤖 @iOSIQBot | https://iosiq.ru 🍏Канал об iOS-разработке, алгоритмах и архитектурах ⭐️ Подготовка к собесам ⭐️ Код. Много кода. #ios #mobile #swift

Ko'proq ko'rsatish
8 002
Obunachilar
+424 soatlar
+477 kunlar
+8230 kunlar
Postlar arxiv
iOS Dev
8 002
Что скрывают сертификаты для Code Signing? Подписание кода является основополагающей технологией для всех платформ Apple. Например, знаете ли вы, что provisioning profile объединяет пять критериев: кто, что, где, когда и как. Что касается вопроса «кто?», то в TN3125 описывается, как именно каждый профиль включает сертификат для каждого разработчика. Но в нём нет подробного описания того, что такое сертификат. Например, в реальном мире сертификат — это документ, в котором эмитент подтверждает некоторые факты о предмете. Например, в свидетельстве о рождении: 🔘 Эмитентом является региональный орган регистрации. 🔘 Субъект (или же тема) — это вы. 🔘 Факты — это ваше имя, дата рождения, родители и так далее. Эта система основана на том факте, что реальные сертификаты подделать непросто: они печатаются на красивой бумаге, используются специальные штампы, сургучные печати и так далее. Цифровой сертификат преследует ту же цель, что и настоящий. Однако он не может использовать красивую бумагу для предотвращения подделок, что логично. Вместо этого цифровой сертификат основан на криптографии с открытым ключом. Для подписи кода Apple используется стандарт цифровых сертификатов X.509. Сертификат X.509 содержит пять частей информации: 🔘 Реквизиты эмитента. 🔘 Подробности темы. 🔘 Открытый ключ субъекта. 🔘 Обязательные факты, например действительный диапазон дат. 🔘 Необязательные факты, известные как расширения. Эмитент подписывает эту информацию своим закрытым ключом, а затем объединяет ее в сертификат (более подробно - вот тут). У себя я также разобрал понятия .der и .pem, цепочку доверия, Certificate signing request, что происходит при переподписывании кода в App Store, а также путаницу в экосистеме Apple. 😃 iOS Dev • 🐱 Разбор сертификатов

iOS Dev
8 002
Сегодня пятница, у многих выходной и я, надеюсь, что у вас будет две минуты свободного времени Примерно раз в год я собираю обратную связь о своём канале и о том, что вам нравится или не нравится для того, чтобы прокачивать контент в правильном направлении. К сожалению, за это время появилось множество тех, кто копирует материалы отсюда 1 в 1. Иногда удачно, иногда нет, но это касается не только подачи каких-то вещей, но и оформления канала. Конечно, это ещё один повод искать правильные направления развития, но мне нужна ваша помощь. 🐾 Пройдите опрос (полностью анонимный) и помогите сделать выводы. 😃 iOS Dev • 🐱 Доступ к алгоритмам

iOS Dev
8 002
Swift Enums 🤝 Дизайн-системы Если вы работаете над крупными проектами, то наверняка встречали (или писали сами дизайн-систем
Swift Enums 🤝 Дизайн-системы Если вы работаете над крупными проектами, то наверняка встречали (или писали сами дизайн-системы). По факту чаще всего это библиотека, которая объединяет дизайн в переиспользуемые компоненты, цвета, шрифты, иконки и так далее, помогая обеспечить единый стиль во всех ваших продуктах. Или если ещё проще, они позволяют нам избежать изобретения велосипеда для каждого экрана. Грамотно спроектированная дизайн-система сэкономит часы (или сотни часов в будущем). 📖 В этом материале Джейкоб Бартлетт рассказывает о своём опыте создани разных систем и объясняет, почему в итоге остановился на использовании перечислений. 🛠 А вот здесь можно посмотреть на код для этого проекта. 😃 iOS Dev • 🐱 Доступ к необычным эффектам

iOS Dev
8 002
Алгоритмическая секция Это страшный термин, который многих может остановить от попыток пройти серию собеседований в крупные к
Алгоритмическая секция Это страшный термин, который многих может остановить от попыток пройти серию собеседований в крупные компании. Секция лайвкодинга это в том числе и психологическое испытание, непростое, но в то же время показывающее знания кандидата в необычных условиях. К этому тяжело подготовиться, а ещё тяжелее конкурировать, ведь есть целая категория ребят, которые занимаются олимпиадным программированием ещё со школы (или даже раньше). К счастью, чаще всего нам не нужно решать на работе олимпиадные задачи или участвовать в ICPC с целью выиграть золотые медали. Несмотря на это, подготовка никогда не помешает, ведь даже чтобы обработать тысячи айдишников юзеров с заданным условием и не повесить приложуху, иногда нужно тщательно всё взвесить. Поэтому я решил добавить в базу знаний алгоритмическую секцию, где будут не только популярные подходы и примеры алгоритмов на разные темы, но ещё и реальные задачи. Я уже добавил несколько разделов, и перенёс часть своих решённых задач в ноушн. ✅Заходите, доступ пока что можно получить эксклюзивно здесь. 😃 iOS Dev

iOS Dev
8 002
Как проверить число на чётность другим способом? Представим, нам нужно красить ячейку в зависимости от индекса, или, например, менять шрифт у каждого чётного элемента (или ещё тысяча возможных ситуаций). В таком случае мы, как и в большинстве языков, скорее всего будем использовать i % 2 == 0 (стандартный способ проверять остаток от деления). Но знаете ли вы, что для такой ситуации подойдёт и нативный вариант на Swift? x.isMultiple(of: 2) вернёт true если x чётный и false, если x нечётный. Кстати, в Apple рассмотрели и корнер-кейсы, например: x.isMultiple(of: 0)вернёт true, если x это 0 и false в любом другом случае. 🤩 Век живи — век учись, как говорится. 🔗 Напоминаю, что больше таких примеров есть в моём бусти. 😃 iOS Dev

iOS Dev
8 002
Разбор ошибок начинающих iOS-разработчиков Александра Башкирова указывает на несколько популярных ошибок начинающих iOS-разра
Разбор ошибок начинающих iOS-разработчиков Александра Башкирова указывает на несколько популярных ошибок начинающих iOS-разработчиков. 1️⃣ В первой части затронут раздел вёрстки и связанных с ней возможных проблем. 2️⃣ Во второй уделено внимание проблемам с написанием кода, в частности, избыточного форс-анрапа, работе с guard/switch и даже разбираются проблемы с утечками памяти (✅я писал о том, что к этому может приводить, и что можно предпринять). 📖 Статья, которую можно смело рекомендовать новичкам к прочтению доступна на хабре. 😃 iOS Dev

iOS Dev
8 002
iOS IQ: Обновления и новости Я продолжаю работать над базой знаний iOS и делюсь обновлением за выходные. Прозводительность пр
iOS IQ: Обновления и новости Я продолжаю работать над базой знаний iOS и делюсь обновлением за выходные. Прозводительность приложений (вопросы с собеседований на размышление) Когда приложение реагирует на жесты и касания в режиме реального времени, всё хорошо. Но приложения с зависаниями или дёрганым поведением на экране разрушают эту иллюзию. Что можно сделать, чтобы это не происходило? А если вы столкнулись, то как реагировать? Эта тема безгранична, и именно с этим мы боремся на работе над нашими задачами. 🚦Узнать о том, какие шаги можно предпринять, можно здесь. Наконец появился блок по коду и непосредственно разработке В части алгоритмов я вынес карточки с примерами кода в зависимости от сложности, и нарисовал наглядно графики для каждой. Разобрал акронимы (все же знают их значение?): SOLID, DRY, KISS, YAGNI. И добавил бонус с разбором алгоритма сортировки в Swift. Подписывайтесь, я продолжаю разбирать важные темы и делиться своими знаниями (и важными исследованиями) вот тут.

iOS Dev
8 002
Работа с вёрсткой в SwiftUI: интерактивный помощник Оказывается, есть целый сайт, где энтузиасты объясняют как быть с лэйаутом в SwiftUI с помощью примеров. Уже сейчас покрыты темы с Alignment, HStacks, Aspect Ratio, Padding и так далее. Будет полезен новичкам (и тем, кто иногда забывает, на что влияет тот или иной параметр). 💡Вообще, это было бы актуально не только для SwiftUI, но и для некоторых штук в UIKit, как с UIStackView, например. 📖 Посмотреть на доступные варианты (и поперетаскивать элементы) можно здесь. 😃 iOS Dev

iOS Dev
8 002
Подготовка к собеседованиям Любое собеседование — это важный этап, который должен быть диалогом между кандидатом и собеседующ
Подготовка к собеседованиям Любое собеседование — это важный этап, который должен быть диалогом между кандидатом и собеседующим. Для кандидата, конечно же, это стресс. Но его можно попробовать сделать управляемым. Всегда плюс, когда человек может пояснить, почему он принимает то или иное решение, почему выбирает вот эту архитектуру и как именно некоторые участки кода могут повлиять на производительность. Мы не можем подготовиться к собеседованию на 100%, у каждой компании свои требования и правила. У многих может быть и 3 (и иногда 6-7 этапов), но при должной концентрации и грамотном распределении сил вы сможете показать ваш пул знаний, даже не ответив на все заданные вопросы. 🧠 Сегодня я анонсирую новый раздел в для тех, кто поддерживает канал. На хабре пару лет назад я делился одним из возможных пулов вопросов, сегодня этот раздел будет дополнен, расширен, но до окончательной огранки ему пока далеко. Здесь уже есть три основных категории: собесы в формате видео (лучшее на просторах интернета), истории реальных собеседований в бигтехе и огромный список ресурсов для подготовки. 🔗 Получить доступ ко всем ресурсам можно здесь. 😃 iOS Dev

iOS Dev
8 002
Разбор архитектурных заблуждений в iOS Алексей, iOS-разработчик из тинькова, поднял восхитительно опасную, но при этом не мен
Разбор архитектурных заблуждений в iOS Алексей, iOS-разработчик из тинькова, поднял восхитительно опасную, но при этом не менее интересную тему. Вот несколько тезисов, с которыми лично сложно не согласиться: 1️⃣ С точки зрения коммерческой разработки наилучшая архитектура — та, что максимально снижает затраты на разработку в долгосрочной перспективе. Этого подхода я стараюсь придерживаться и в нашей команде. MVC, MVVM, VIPER — это архитектурные шаблоны (больше вот тут). Часто одного шаблона попросту недостаточно. Например, сететой слой, пуши или как говорит Алексей, обработка диплинков - MVC-подобные паттерны про это не сообщают. 2️⃣ Разработка — это не только написание кода. Мы создаём код, но его чтение, понимание, а также процессы в команде — занимают львиную долю времени. 3️⃣ В UI логику не держим или? С выходом AsyncImage сама Apple показала, что можно доверить загрузку картинок и UI-слою. 4️⃣ Вывод: при планировании архитектуры больше внимания стоит уделять не простоте написания, а простоте чтения кода и внесения изменений. Меня радует, что даже в крупных командах (около 80 человек) не пытаются писать код ради кода. Наша задача — решать сложные вопросы с помощью программирования, но помните, что слишком много оптимизации на ранних стадиях — может оказаться не лучшим способом. Будет здорово, если ещё кто-то прочитает про правило трёх. 📖 Обсуждение статьи.А о правиле трёх (и других моментах) можно прочесть в моём закрытом ноушне. 😃 iOS Dev

iOS Dev
8 002
Спасибо всем, кто подписался на бусти всего за один день, это отличный катализатор к развитию премиум-материалов в лучшем дос
Спасибо всем, кто подписался на бусти всего за один день, это отличный катализатор к развитию премиум-материалов в лучшем доступном виде. При работе над своими рабочим проектом и контентом для канала за годы у меня накопилось огромное количество материала, которым я так и не поделился здесь. Иногда это слишком узкие знания, иногда мне кажется, что порог входа может быть выше ожидаемого. Так или иначе, но знания должны быть структурированы. За прошедший месяц я начал наполнять свой отдельный Notion избранными исследованиями, подборками и самым разным контентом. Кроме этого, пообщавшись со Львом, выяснил, что Notion — формат, которым пользуются и другие блогеры. Поэтому решение выглядит верным. Я уже разбил структуру на блоки, которые мне кажутся важными: подготовка к собеседованиям, разбор полётов (узкие, но при этом необходимые темы для роста, и даже выделил отдельную подборку для эффектов). Кто читает канал давно, тот знает, что иногда я реализую клёвые штуки (c загадками Да Винчи). ☕️ Пока что подписка по стоимости захода в кофейню. А в качестве бонуса всем, кто подпишется хотя бы на 6 месяцев на Мастер, доступ будет навсегда (а может и не только им, кто знает). 😃 iOS Dev

iOS Dev
8 002
Как сделать сompletionHandler намного безопаснее? Прежде, чем посмотреть на результат исследования, взгляните на первый скрин
Как сделать сompletionHandler намного безопаснее? Прежде, чем посмотреть на результат исследования, взгляните на первый скриншот, и подумайте, что здесь можно сделать лучше. 📖 Винсент справедливо отмечает, что при использовании оператора defer гарантированно вызовется completionHandler непосредственно в конце функции. И именно поэтому возможно юзать result, поскольку к тому времени у него 100% будет значение. 😃 iOS Dev

iOS Dev
8 002
Как сделать сompletionHandler намного безопаснее? 😃 iOS Dev
Как сделать сompletionHandler намного безопаснее? 😃 iOS Dev

iOS Dev
8 002
📌 Важная новость На протяжении долгого времени в нашем канале я делился самыми разными вещами (и хардкорными, и доступными для новичков). Каждый автор контента знает, что если разбираться в коде (а я не допускал ни одного поста без предварительной проверки), требуется приличное количество времени, которого не так уж и много. Особенно при условии, что вы фулл-тайм разработчик. Включал викторины, уникальные истории и старался рассказать о новостях, используя призму своего опыта. В этом канале не было какой-то странной или непонятной рекламы (а вещей, которым я не доверяю, всё также не будет в дальнейшем). При этом периодически у меня спрашивают, можно ли как-то поблагодарить за контент или поддержать творчество. Отвечу сразу на эти вопросы: теперь такая возможность есть. 🐱 Сегодня я анонсирую iOS IQ, мой аккаунт на бусти — концентрированные знания в доступном виде. И, поскольку я не люблю донаты ради донатов, а при этом постоянно поддерживаю разработчиков советами и решением нетривиальных задач, это это будет регулярно обновляемый контент с понятными ответами на сложные вещи. Я долго думал об уровнях поддержки, но остановился на трёх: База, Мастер и Архитектор. Каждый из них обладает своими плюсами, но даже начального будет достаточно. Если вам нравится контент канала, вам удобен такой стиль изложения и вы хотели бы расставить точки над i в понятии iOS, то я буду рад каждому. А ещё небольшой бонус, каждому из тех, кто меня поддержит — будет доступна возможность комментирования постов в канале iOS Dev. Уже сегодня. Авторов с практическим опытом не так много, а контента — ещё меньше. Поэтому приходите, и получайте контент в удобном для вас виде. И кстати, если пока не готовы поддержать творчество финансово, подписывайтесь всё равно. ❤️❤️❤️❤️❤️➡️На бусти. Уверен, что смогу вас удивить. 😃 iOS Dev

iOS Dev
8 002
📌 Подборка полезных материалов про SwiftData По использованию SwiftData уже появилось множество статей и примеров использования, поэтому я решил вынести некоторые из них в специальный список, с помощью которого можно ориентироваться по многим интересующим вопросам. ➡️Отслеживание изменений данных в SwiftData. ➡️Архитектурный дизайн SwiftData и возможности миграции. ➡️Вопросы и ответы про SwiftData и CoreData. ➡️ Удаление данных в SwiftData. Видео и обзорные туториалы 📺 Видеокурс по SwiftData. 📺 Официальное видео от Apple с примером использования. 📖 Кто ты, SwiftData — большая статья с обзором концепций SwiftData от Андрея Зонова на хабре. 📖 SwiftData на примерах (создание проекта, контейнеров, моделей данных и связей, разбор архитектуры). 📖 Руководство по SwiftData для начинающих. Практические примеры 🛠 Пример реализации todo-приложения на github. 🛠 FaceFacts - приложение, используюещее SwiftUI и SwiftData с исходным кодом. 🛠 Приложение для коллекционирования сниппетов кода. 🛠 Создаём приложение для заметок. 😃 iOS Dev

iOS Dev
8 002
Гибкая обработка ошибок в Swift Полезно знать несколько способов обработки, чтобы выбрать лучший подход в зависимости от конт
Гибкая обработка ошибок в Swift Полезно знать несколько способов обработки, чтобы выбрать лучший подход в зависимости от контекста приложения. 📖 Вот тут можно познакомиться с типами, ключевыми словами и вариантами обработки кастомных ошибок. 😃 iOS Dev

iOS Dev
8 002
Делегирование в Swift: определение и примеры Паттерн «делегат» уже давно занимает одно из важнейших мест на платформах Apple.
Делегирование в Swift: определение и примеры Паттерн «делегат» уже давно занимает одно из важнейших мест на платформах Apple. Делегирование используется для всего, начиная от обработки событий таблицы с помощью UITableViewDelegate и заканчивая изменением поведения кэша с помощью NSCacheDelegate. Основная цель паттерна — позволить объекту общаться со своим владельцем в свободном (можно сказать, что отсоединённом) виде. Не требуя от объекта знать конкретный тип его владельца, мы можем писать код, который гораздо проще повторно использовать и поддерживать. Хотя это довольно простая в использовании концепция, у новичков могут быть вопросы по использованию. 📖 Рекомендую ознакомиться с этой статьёй, чтобы узнать больше о примерах использования (и возможных минусах). 😃 iOS Dev