iOS Dev
Open in Telegram
👨💻Автор: Виктор Грушевский (@Viktorianec) ⚒️ База: https://boosty.to/ios_dev | 🤖 @iOSIQBot | https://iosiq.ru 🍏Канал об iOS-разработке, алгоритмах и архитектурах ⭐️ Подготовка к собесам ⭐️ Код. Много кода. #ios #mobile #swift
Show more7 985
Subscribers
+124 hours
-167 days
+3030 days
Posts Archive
7 985
Продвинутые трюки lldb для Swift: внедрение и изменение кода на лету
Хотя в Xcode мы можем добавлять брейкпоинты кликом по строке с кодом, у
lldb есть несколько фишек, не представленных в пользовательском интерфейсе.
Они могут варьироваться от создания методов «на лету» до изменения регистров процессора без необходимости его перекомпиляции, и знание этих команд может значительно улучшить ваш опыт отладки.
И пусть дизассемблирование и запись в память крайне редкое занятие, для повышения производительности можно использовать некоторые более сложные приемы работы с lldb.
📖 Хороший разбор возможностей, вспомогательных методов и их сочетания с брейкпоинтами можно прочесть здесь.
Кстати, если вы захотите создать собственную команду lldb, обратите свой взор сюда 😎.
😃 iOS Dev7 985
Как выйти из внешнего цикла?
Чтобы выйти из нужного цикла, можно добавить любую специальную метку к такому циклу и использовать
break с этой меткой.
Как показывает практика, о таких вещах можно не знать и спустя 5 лет разработки (я тоже не использовал такой способ).
😃 iOS Dev7 985
Макрос #Predicate в Swift 5.9: фильтрация и поиск
Это новый макрос, появившийся в Swift 5.9 и Xcode 15 и позволяющий фильтровать или искать данные в коллекции.
🧑💻 Его можно рассматривать как замену старомодному
NSPredicate, к которому мы привыкли со времен Objective-C.
Хотя многие из нас будут использовать макросы, не заботясь о том, какой год генерируется внутри, но полезно узнать и о деталях.
📖 Вот тут хороший разбор того, как можно использовать #Predicate и взгляд на базовую реализацию.
📖 А здесь я писал о ключевых словах в предикатах и логических операциях.
😃 iOS Dev7 985
Как сейчас выглядят собеседования изнутри?
На хабре вышел интересный обзор процесса собеседований.
И пусть речь в этой статье о .Net, но посмотреть на взаимодействие автора и техлида любопытно.
В обзоре рассмотрены причины, почему рекрутинг такой как есть, почему сложно преодолеть порог входа для новичков и вновь сделан упор на небходимость базы.
Тема оказалась острой, чему есть подтверждение в количестве комментариев под статьёй.
📖 Процесс собеседований сейчас.
😃 iOS Dev
7 985
Новый инструмент для создания анимаций: Lottielab
Можно импортировать или создать свои нуля. Экспорт доступен в формате Lottie, Gif или MP4 на любую платформу.
🤩 Их проект на ProductHunt (к слову, занявший первое место по итогам дня).
🔗 Ссылка на сам продукт (пока он в бете — бесплатно, дальше пока неизвестно).
😃 iOS Dev
7 985
Переходы в Swift с эффектом искажения и использованием Metal Shaders
Итоговый шейдер является результатом экспериментов, так как цель состояла в том, чтобы использовать положительное значение для перехода вставки и отрицательное — для удаления.
📖 В этом материале Павел Зак разбирается с
.distortionEffect и приводит пример его использования.
😃 iOS Dev7 985
SwiftSyntax: Разбор и генерация исходного кода Swift
SwiftSyntax представляет собой набор библиотек, позволяющих анализировать, проверять, генерировать и корректировать исходный код
Swift.
Изначально он был разработан компанией Apple, а сейчас это поддерживаемый опенсорс со множеством авторов.
SwiftSyntax создает абстрактное синтаксическое дерево (AST) исходного кода, которое позволяет взаимодействовать с высокоуровневым, безопасным и эффективным API.
Чтобы лучше познакомиться с его структурой, посмотрите на этот сайт, разработанный @kishikawakatsumi.
Кстати, на базе набора этих либ построены Swift parser, swift-format, и Swift macros.
📖 Пример работы с SwiftSyntax хорошо описан здесь.
⭐️ Сам репозиторий с 2 400 звёзд вот тут.
😃 iOS Dev7 985
Лучшие практики для обратной связи при работе в команде
За свою карьеру я поработал в нескольких компаниях с разными стилями менеджмента и разными подходами.
Конечно, все мы стремимся к лучшему для себя, но есть базовые принципы, которые могут помочь повысить вашу личную производительность и тем самым повлиять на рост всей команды. Следствием этого будет и успех проекта.
Мне близки мысли Фила Йейтса (инженера с 17-летним опытом).
Обратная связь — это не просто указание на то, что неправильно или правильно, а начало диалога, способствующего пониманию, обучению и росту. К сожалению, многие об этом забывают.
Поэтому вот несколько советов от Фила, которые можно взять на вооружение:
👍 Будьте конкретны. Вместо того чтобы сказать: «Вы хорошо поработали», скажите: «То, как вы отладили эту сложную проблему в коде, впечатляет».
👍 Будьте своевременны. Детали будут свежи в памяти и позволят немедленно извлечь уроки, но нужно учесть готовность собеседника к разговору.
👍 Сосредоточьтесь на действии, а не на человеке. Это поможет сфокусироваться на самой проблеме.
👍 Чаще используйте «Я» Это выразит вашу точку зрения, а не обвинения или предположения в адрес собеседника.
👍 Устройте двусторонний разговор. Это способствует пониманию и заинтересованности.
👍 Будьте конструктивны. Важно не зацикливаться на ошибках, а стремиться к улучшению в следующий раз.
👍 Баланс между позитивным и конструктивным.
👍 Учитывайте точку зрения собеседника. У каждого может своё понимание проблемы.
👍 Будьте искренними и уважительными. Обратная связь должна быть честной и уважительной. Избегайте лести или критики.
Важно учитывать, что обратная связь не заканчивается после разговора. Можно обсудить план по улучшению ситуации, предоставление ресурсов или поддержки, проанализировать прогресс или признать улучшения.
😃 iOS Dev
7 985
Важные советы для разработчиков всех уровней от Бьёрна Страуструпа (создателя C++)
Для успешной карьеры необходимо развиваться всесторонне и не стоит зацикливаться на одном навыке (или фреймворке). Кроме этого:
🔘 Мы не знаем будущего, а наша карьера — долгосрочная вещь. Важно быть гибкими и жить не только одной работой.
🔘 Если вы напишете лучший код, мир не изменится только благодаря этому. Важно слушать остальных (в том числе и потенциальных пользователей), уметь общаться, а также доносить свои идеи.
🔘 Не нужно жалеть о потраченном времени на другие направления. Например, история может дать понимание о некоторых ограничениях, а математика обострит ваш ум, поэтому во всём нужно искать баланс.
🔘 Широкий набор навыков, приобретённых во время обучения, можно будет применить позже, когда придёт время. И для этого совсем необязательно знать две дюжины языков, как сам Бьёрн.
😃 iOS Dev
7 985
Стерпятся — слюбятся: как заставить Swift и Objective-C работать в одном SDK
📖 В новой статье на Хабре описывается методика совместного использования Objective-C и Swift в SDK.
Авторы рассматривают различные подходы, объясняют, почему стандартный способ оказался непригодным, и рассказывают, что они смогли получить в результате.
👨💻 Эта информация будет полезна разработчикам SDK, работающим с обоими языками, а также тем, кто планирует перейти с Objective-C на Swift.
😃 iOS Dev
7 985
Swift 6: подготовка ваших проектов Xcode к будущему
📁 Команда разработчиков Swift поделилась своими приоритетными направлениями на 2023 год и ранее выпустила подробный отчет о пути к Swift 6.
Оба документа описывают видение будущего Swift и помогают подготовиться к миграции проекта.
📖 В этом материале описаны шаги, которые можно предпринять для адаптации ваших проектов к предстоящим изменениям.
😃 iOS Dev
7 985
Подводные камни тестирования кода в Swift Concurrency
Swift Concurrency — мощнейший инструмент, который в том числе позволяет выполнять задачи с разным приоритетом.
🔘 Несмотря на это, периодически могут возникать сложности и непростые для тестирования кейсы.
📖 В исследовании Александр Пиманов и Камиль Ишмуратов разбираются в причинах, рассказывают о порядке выполнения задач и знакомят с протоколом
Executor.
📖 Рекомендую к ознакомлению и этот пост: Swift Concurrency — вещи, о которых вам не говорят.
😃 iOS Dev7 985
Как проверить, нужно ли вам указывать причину для использования UserDefaults (и не только)
Осень уже скоро, а вместе с ней и новые требования к API, используемых в проектах.
Для privacy manifest (больше на wwdc notes) потребуется вносить инфу, с какой целью используется некоторые категории фреймворков.
📖 Для поиска таких API Марко Эйдингер написал скрипт, но рекомендует для начала вынести результаты в текстовый файл.
😃 iOS Dev
7 985
Поиск неиспользуемого кода с помощью Periphery
Принцип работы этого инструмента в следующем. Сначала собирается проект, затем для каждого файла с исходным кодом
Periphery строит свое внутреннее графовое представление проекта.
И уже после завершения индексации анализируется граф для выявления неиспользуемого кода.
В долгосрочной перспективе использование Peiphery позволит тратить меньше времени на компиляцию (что логично, меньше кода) и избавит от лишнего шума в кодовой базе.
📖 Пример использования Periphery.
🛠 Ссылка на сам инструмент на Github.
😃 iOS Dev7 985
🚀 TradingView ищет iOS Tech Lead.
Современный стек и подходы
UIKit, SwiftUI, Combine, async-await, iOS 15+
Комфортное место работы
Удаленка или офис в Тбилиси, Санкт-Петербурге и Ростове-на-Дону, а также помощь с релокейтом
Крутой международный продукт
Top-1 по доходу в категории финансовых приложений. Мобильная аудитория – 10 млн. MAU.
Наши решения используют Чикагская и Бразильская биржи, S&P Global, Forbes, Revolut, Interactive Brokers, Тинькофф, БКС, Открытие, Twitter.
Как откликнуться? 🏃♂️
Пиши @janemanolis, если обладаешь сильными навыками проектирования и глубоким пониманием iOS платформы.
👉Подробнее в вакансии
7 985
Улучшение времени сборки приложений и SPM-пакетов
Прежде, чем приступать к подобным оптимизациям, важно определить цели. Например, что мы хотим улучшить, только ли «чистые билды» или же инкрементальные сборки.
Timing Summary и Recent Build TimeLine — важнейшие инструменты в Xcode для измерения времени компиляции.
Кроме этого, можно использовать флаги для вывода предупреждений в тех местах, компиляция которых занимает больше, чем хотелось бы:
-Xfrontend -warn-long-function-bodies=<milliseconds>
-Xfrontend -warn-long-expression-type-checking=<milliseconds>
📖 В этом исследовании можно посмотреть, что возможно ускорить и какие именно настройки в Xcode могут нам в этом помочь.
😃 iOS Dev7 985
Загляните в канал Романа, который прошел путь от iOS разработчика до топ-менеджера международной компании.
Автор пишет о создании пет-проектов, управлении командой, iOS разработке, переходе из инженера в менеджеры.
Интересные статьи:
Хайп на алгоритмах
Поиск ниши для приложения
Как развить критический взгляд
IT это легко или сложно?
👉Подробнее в канале iOS Enjoyer
7 985
Исследование MeasurementFormatter и пример его применения
Иногда из-за разниц подходов к измерениям в метрической и, например, американской системах код может выглядеть не очень приятно.
Тогда на помощь может прийти
MeasurementFormatter.
📖 Вот тут есть хорошее объяснение, когда его лучше использовать, и приводится пример для разных локалей.
😃 iOS Dev7 985
Одно из моих любимых приложений, которое я поддерживаю продолжительное время (уже более трёх лет) — трекер сбережений/долгов/целей.
Раз за разом я стараюсь прокачивать его, используя фишки Apple. Иногда это виджеты, иногда — приложение для часов.
Помню, как запилил туда кросс-интеграцию европейских банков для сверки курсов (и авто-конвертации валют в выбранную).
Так вот, сегодня один из тех дней, когда я выкатил большое масштабное обновление на ProductHunt.
👍 И рассчитываю на вашу поддержку там (комментарий или просто upvote было бы очень круто).
➡️ Помочь своим голосом можно здесь.
😃 iOS Dev
Available now! Telegram Research 2025 — the year's key insights 
