Реализация модульной архитектуры на примере Spotify
В каждом крупном проекте при увеличении количества требований архитектура приложения подвергается испытаниям.
Даже если используются модули, могут возникнуть проблемы с такими вещами, как классы с кучей параметров, неявные зависимости, нединамичность и увеличение времени сборки.
📺 В этом докладе объясняется, как практика модульной архитектуры Spotify может быть использована при росте проекта и как при этом попробовать сохранить тестируемость и скорость сборки независимо от размера.
😃 iOS Dev
В каждом крупном проекте при увеличении количества требований архитектура приложения подвергается испытаниям.
Даже если используются модули, могут возникнуть проблемы с такими вещами, как классы с кучей параметров, неявные зависимости, нединамичность и увеличение времени сборки.
📺 В этом докладе объясняется, как практика модульной архитектуры Spotify может быть использована при росте проекта и как при этом попробовать сохранить тестируемость и скорость сборки независимо от размера.
Please open Telegram to view this post
VIEW IN TELEGRAM
Разбор и разрешение мерж-конфликтов (продолжение работы с Git)
В большинстве случаев при понимании принципов работы Git вы уже будете готовы к подобным проблемам.
Но если вы видите это в первый или второй раз, то не всегда понятно, что делать в таких ситуациях.
📖 Вот тут можно познакомиться с основными причинами мерж-конфликтов и посмотреть на варианты их разрешения.
😃 iOS Dev
В большинстве случаев при понимании принципов работы Git вы уже будете готовы к подобным проблемам.
Но если вы видите это в первый или второй раз, то не всегда понятно, что делать в таких ситуациях.
📖 Вот тут можно познакомиться с основными причинами мерж-конфликтов и посмотреть на варианты их разрешения.
Please open Telegram to view this post
VIEW IN TELEGRAM
SwiftUI LazyVGrid и LazyHGrid: обзор возможностей
🤩 В отличие от обычных сеток,
Они отлично подходят, например, для галереи изображений (где необходимо представить данные в нескольких строках или столбцах, адаптируясь к различным размерам и ориентации экрана).
📖 В этом обзоре приводятся примеры использования и опции кастомизации.
😃 iOS Dev
LazyVGrid
и LazyHGrid
предлагают более динамичные и гибкие способы отображения контента. Они отлично подходят, например, для галереи изображений (где необходимо представить данные в нескольких строках или столбцах, адаптируясь к различным размерам и ориентации экрана).
📖 В этом обзоре приводятся примеры использования и опции кастомизации.
Please open Telegram to view this post
VIEW IN TELEGRAM
‼️ Альтернативные магазины приложений уже доступны для разработчиков!
Apple анонсировала долгожданные изменения в политике распространения приложений для ЕС.
Для разработчиков появились новые варианты распространения приложений и создания своих сторов.
Обещают более 600 новых API и расширенную аналитику, сниженную комиссию и новые способы оплаты внутри приложений.
🛠 Разработчики могут попробовать опции уже в бете 17.4, доступной сегодня.
💻 Для пользователей ЕС магазины будут доступны с марта 2024 года.
😃 iOS Dev
Apple анонсировала долгожданные изменения в политике распространения приложений для ЕС.
Для разработчиков появились новые варианты распространения приложений и создания своих сторов.
Обещают более 600 новых API и расширенную аналитику, сниженную комиссию и новые способы оплаты внутри приложений.
🛠 Разработчики могут попробовать опции уже в бете 17.4, доступной сегодня.
💻 Для пользователей ЕС магазины будут доступны с марта 2024 года.
Please open Telegram to view this post
VIEW IN TELEGRAM
В соответствии с изменениями DMA (законе о цифровых рынках), Apple расширит аналитику, доступную для приложений разработчиков как в ЕС, так и по всему миру.
Обещают, что через API App Store Connect будет доступно более 50 новых видов отчетов для анализа эффективности, среди которых:
1️⃣ Engagement — доп. инфа о количестве пользователей в App Store, которые взаимодействуют с приложением разработчика или делятся им.
2️⃣ Commerce — информация о загрузках, продажах и выручке, предзаказах и транзакциях In-App Purchase.
3️⃣ App usage — покажут новые отчёты о крашах, активных девайсах, инсталлах, удалениях и так далее.
4️⃣ Frameworks usage — о взаимодействии юзеров с с PhotoPicker, Widgets и CarPlay.
Кстати, появится Analytics Reports API для доступа к этим отчётам (может и я добавлю в Starly
📖 Дополнительные детали будут в марте.
Please open Telegram to view this post
VIEW IN TELEGRAM
Реализация эффектов ScrollView в iOS 17
🤩 В iOS 17 у нас появились новые возможности анимации.
Существует ряд атрибутов, которые можно изменять при скролле: размер, видимость, а ещё можно поработать со вращением элементов.
📖 Вот тут можно посмотреть, как работать с такими эффектами, но важно учитывать, что слишком большого количества анимаций следует избегать.
😃 iOS Dev
Существует ряд атрибутов, которые можно изменять при скролле: размер, видимость, а ещё можно поработать со вращением элементов.
📖 Вот тут можно посмотреть, как работать с такими эффектами, но важно учитывать, что слишком большого количества анимаций следует избегать.
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Шикарный эффект с использованием SpriteKit
Конечно, при должном умении Metal может удивить даже самых скилловых разработчиков, но и на SpriteKit можно делать красоту.
🤩 Как, например, это сделал Toni Lijic в гифке, которую вы видите.
🛠 Приятный бонус для подписчиков нашего канала — исходный код, где показано, как это можно настроить.
😃 iOS Dev
Конечно, при должном умении Metal может удивить даже самых скилловых разработчиков, но и на SpriteKit можно делать красоту.
🛠 Приятный бонус для подписчиков нашего канала — исходный код, где показано, как это можно настроить.
Please open Telegram to view this post
VIEW IN TELEGRAM
Так ли плохи курсы?
Ключевой момент любого обучения в том, какую долю времени и под какой нагрузкой вы занимаетесь самостоятельно.
В ВУЗе львиную долю процесса занимает поиск инструментов и то, как вы приспосабливаетесь к незнакомым глобальным направлениям (например, начертательная геометрия или электротехника).
Безусловно, социализация, да и в целом вырабатываемые навыки общения это огромный плюс по сравнению с курсами, которые чаще всего происходят в онлайне.
Несмотря на это, при значимой базе преподавателей и тех, кто непосредственно формирует учебный план, некоторые курсы могут дать фору по количеству концентрированного материала по сравнению с двумя (иногда и тремя) семестрами в университетах.
Основной минус при этом — отсутствие государственной аккредитации (очень часто), и обучение одной ветви навыков.
Поэтому, например, для того, чтобы узнать что-то новое в интересующем направлении — короткий спринт обучения будет с более высоким приоритетом.
И в этом случае выбор между курсами (в том числе онлайновыми) и 4 годами обучения (минимум) очевиден.
Однако если вы только в начале пути, даже средний ВУЗ будет лучшим вариантом, так как преподаватели там улучшали свою учебную программу годами, если не десятилетиями.
И даже программирование микроконтроллеров на ассемблере это не зря и не так страшно, так как именно в этом случае и можно понять, как многое работает под капотом на самом деле.
😃 iOS Dev • 🐱 Доступ к алгоритмам
Ключевой момент любого обучения в том, какую долю времени и под какой нагрузкой вы занимаетесь самостоятельно.
В ВУЗе львиную долю процесса занимает поиск инструментов и то, как вы приспосабливаетесь к незнакомым глобальным направлениям (например, начертательная геометрия или электротехника).
Безусловно, социализация, да и в целом вырабатываемые навыки общения это огромный плюс по сравнению с курсами, которые чаще всего происходят в онлайне.
Несмотря на это, при значимой базе преподавателей и тех, кто непосредственно формирует учебный план, некоторые курсы могут дать фору по количеству концентрированного материала по сравнению с двумя (иногда и тремя) семестрами в университетах.
Основной минус при этом — отсутствие государственной аккредитации (очень часто), и обучение одной ветви навыков.
Поэтому, например, для того, чтобы узнать что-то новое в интересующем направлении — короткий спринт обучения будет с более высоким приоритетом.
И в этом случае выбор между курсами (в том числе онлайновыми) и 4 годами обучения (минимум) очевиден.
Однако если вы только в начале пути, даже средний ВУЗ будет лучшим вариантом, так как преподаватели там улучшали свою учебную программу годами, если не десятилетиями.
И даже программирование микроконтроллеров на ассемблере это не зря и не так страшно, так как именно в этом случае и можно понять, как многое работает под капотом на самом деле.
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Интеграция интерактивных 2D/3D-объектов в iOS-приложение
В этой статье Степан из SimbirSoft разбирает, как можно реализовать интерактивный логотип целыми тремя способами (от плоского изображения к объёмному объекту).
Полезно ещё и потому, что здесь отличный пример работы с жестами.
🛠 Код проекта доступен здесь.
📖 Ознакомиться с материалом можно на хабре.
😃 iOS Dev
В этой статье Степан из SimbirSoft разбирает, как можно реализовать интерактивный логотип целыми тремя способами (от плоского изображения к объёмному объекту).
Полезно ещё и потому, что здесь отличный пример работы с жестами.
🛠 Код проекта доступен здесь.
📖 Ознакомиться с материалом можно на хабре.
Please open Telegram to view this post
VIEW IN TELEGRAM
Во втором полугодии 2023 года зарплаты выросли в большей части языков программирования.
При этом, для Swift-разработчиков в медиане всё осталось по-старому, произошло только незначительное снижение на 2%, до 245 000 ₽.
В среднем больше всего в компаниях платят в Авито (медиана 325 000 ₽), в пятёрке также Лаборатория Касперского и VK.
📖 Больше аналитики доступно здесь.
⏳ А вот тут можно сравнить размеры зарплат полугодовой давности.
Please open Telegram to view this post
VIEW IN TELEGRAM
Пока сообщество обсуждает новый язык пикл (ему в будущем ещё будет уделено должное внимание) и особенности Vision Pro, я хочу рассказать о действительно крутой инновации, которая может кардинально изменить процесс создания скриншотов.
В общем, в бете Xcode 15.3 появилась опция создания скрина прямо в режиме превью (как же долго мы это ждали).
Для этого достаточно перейти в
Editor > Canvas > Export Preview Screenshot
(или можно скопировать напрямую, не верю, что Apple и это сделала). Супер-удобно (и да, сохранить можно сразу в нужном разрешении).Please open Telegram to view this post
VIEW IN TELEGRAM
Подробное описание диспетчеризации в Swift
Понимание, как Swift выполняет вызовы функций — один из необходимых навыков в нашей работе.
Как и следует из определения, Method Dispatch — это то, как программа выбирает, какие инструкции нужно выполнить при вызове метода, и это то, что происходит каждый раз, когда вызывается тот или иной метод.
Знание видов и характеристик важно для повышения производительности кода.
Поэтому хорошо бы разбираться в том, чем, например, отличается Static dispatch от Dynamic dispatch.
Кстати, диспетчеризация методов добавляет уникальности Swift: если большинство языков поддерживают несколько подходов к диспетчеризации, то Swift поддерживает их все (⚪️ ).
📖 Делюсь потрясающим разбором типов диспетчеризаций, примеров и отличий.
Из этой статьи вы также узнаете, зачем для Realm (которая сейчас называется Atlas Device SDK) для свойств объектов нужно добавлять
😃 iOS Dev • 🐱 Доступ к алгоритмам
Понимание, как Swift выполняет вызовы функций — один из необходимых навыков в нашей работе.
Как и следует из определения, Method Dispatch — это то, как программа выбирает, какие инструкции нужно выполнить при вызове метода, и это то, что происходит каждый раз, когда вызывается тот или иной метод.
Знание видов и характеристик важно для повышения производительности кода.
Поэтому хорошо бы разбираться в том, чем, например, отличается Static dispatch от Dynamic dispatch.
Кстати, диспетчеризация методов добавляет уникальности Swift: если большинство языков поддерживают несколько подходов к диспетчеризации, то Swift поддерживает их все (
📖 Делюсь потрясающим разбором типов диспетчеризаций, примеров и отличий.
Из этой статьи вы также узнаете, зачем для Realm (которая сейчас называется Atlas Device SDK) для свойств объектов нужно добавлять
@objc dynamic
.Please open Telegram to view this post
VIEW IN TELEGRAM
Делегирование в Swift: определение и примеры
Паттерн «делегат» уже давно занимает одно из важнейших мест на платформах Apple.
Делегирование используется для всего, начиная от обработки событий таблицы с помощью
Основная цель паттерна — позволить объекту общаться со своим владельцем в свободном (можно сказать, что отсоединённом) виде.
Не требуя от объекта знать конкретный тип его владельца, мы можем писать код, который гораздо проще повторно использовать и поддерживать.
Хотя это довольно простая в использовании концепция, у новичков могут быть вопросы по использованию.
📖 Рекомендую ознакомиться с этой статьёй, чтобы узнать больше о примерах использования (и возможных минусах).
😃 iOS Dev • 🐱 Доступ к алгоритмам
Паттерн «делегат» уже давно занимает одно из важнейших мест на платформах Apple.
Делегирование используется для всего, начиная от обработки событий таблицы с помощью
UITableViewDelegate
и заканчивая изменением поведения кэша с помощью NSCacheDelegate
. Основная цель паттерна — позволить объекту общаться со своим владельцем в свободном (можно сказать, что отсоединённом) виде.
Не требуя от объекта знать конкретный тип его владельца, мы можем писать код, который гораздо проще повторно использовать и поддерживать.
Хотя это довольно простая в использовании концепция, у новичков могут быть вопросы по использованию.
📖 Рекомендую ознакомиться с этой статьёй, чтобы узнать больше о примерах использования (и возможных минусах).
Please open Telegram to view this post
VIEW IN TELEGRAM
Гибкая обработка ошибок в Swift
Полезно знать несколько способов обработки, чтобы выбрать лучший подход в зависимости от контекста приложения.
📖 Вот тут можно познакомиться с типами, ключевыми словами и вариантами обработки кастомных ошибок.
😃 iOS Dev • 🐱 Доступ к алгоритмам
Полезно знать несколько способов обработки, чтобы выбрать лучший подход в зависимости от контекста приложения.
📖 Вот тут можно познакомиться с типами, ключевыми словами и вариантами обработки кастомных ошибок.
Please open Telegram to view this post
VIEW IN TELEGRAM
По использованию SwiftData уже появилось множество статей и примеров использования, поэтому я решил вынести некоторые из них в специальный список, с помощью которого можно ориентироваться по многим интересующим вопросам.
Видео и обзорные туториалы
📺 Видеокурс по SwiftData.
📺 Официальное видео от Apple с примером использования.
📖 Кто ты, SwiftData — большая статья с обзором концепций SwiftData от Андрея Зонова на хабре.
📖 SwiftData на примерах (создание проекта, контейнеров, моделей данных и связей, разбор архитектуры).
📖 Руководство по SwiftData для начинающих.
Практические примеры
🛠 Пример реализации todo-приложения на github.
🛠 FaceFacts - приложение, используюещее SwiftUI и SwiftData с исходным кодом.
🛠 Приложение для коллекционирования сниппетов кода.
🛠 Создаём приложение для заметок.
Please open Telegram to view this post
VIEW IN TELEGRAM
На протяжении долгого времени в нашем канале я делился самыми разными вещами (и хардкорными, и доступными для новичков).
Каждый автор контента знает, что если разбираться в коде (а я не допускал ни одного поста без предварительной проверки), требуется приличное количество времени, которого не так уж и много. Особенно при условии, что вы фулл-тайм разработчик.
Включал викторины, уникальные истории и старался рассказать о новостях, используя призму своего опыта.
В этом канале не было какой-то странной или непонятной рекламы (а вещей, которым я не доверяю, всё также не будет в дальнейшем).
При этом периодически у меня спрашивают, можно ли как-то поблагодарить за контент или поддержать творчество.
Отвечу сразу на эти вопросы: теперь такая возможность есть.
И, поскольку я не люблю донаты ради донатов, а при этом постоянно поддерживаю разработчиков советами и решением нетривиальных задач, это это будет регулярно обновляемый контент с понятными ответами на сложные вещи.
Я долго думал об уровнях поддержки, но остановился на трёх: База, Мастер и Архитектор.
Каждый из них обладает своими плюсами, но даже начального будет достаточно.
Если вам нравится контент канала, вам удобен такой стиль изложения и вы хотели бы расставить точки над i в понятии iOS, то я буду рад каждому.
А ещё небольшой бонус, каждому из тех, кто меня поддержит — будет доступна возможность комментирования постов в канале iOS Dev.
Уже сегодня.
Авторов с практическим опытом не так много, а контента — ещё меньше.
Поэтому приходите, и получайте контент в удобном для вас виде. И кстати, если пока не готовы поддержать творчество финансово, подписывайтесь всё равно на бесплатный уровень.
Уверен, что смогу вас удивить.
Please open Telegram to view this post
VIEW IN TELEGRAM
boosty.to
iOS Dev IQ - Алгоритмы, код, решение непростых вопросов
В этом аккаунте вы увидите уникальные подборки, разборы кода и сложные термины простым и понятным языком.
Что вас ждёт внутри?
🏅Подборки лучших материалов для подготовки.
🧠 Непростые темы с собеседований (задачи, разбор полётов). 👨💻 Личная эффективность…
Что вас ждёт внутри?
🏅Подборки лучших материалов для подготовки.
🧠 Непростые темы с собеседований (задачи, разбор полётов). 👨💻 Личная эффективность…
Please open Telegram to view this post
VIEW IN TELEGRAM
iOS Dev
Как сделать сompletionHandler намного безопаснее? 😃 iOS Dev • 🐱 Доступ к алгоритмам
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Спасибо всем, кто подписался на бусти всего за один день, это отличный катализатор к развитию премиум-материалов в лучшем доступном виде.
При работе над своими рабочим проектом и контентом для канала за годы у меня накопилось огромное количество материала, которым я так и не поделился здесь.
Иногда это слишком узкие знания, иногда мне кажется, что порог входа может быть выше ожидаемого. Так или иначе, но знания должны быть структурированы.
За прошедший месяц я начал наполнять свой отдельный Notion избранными исследованиями, подборками и самым разным контентом. Кроме этого, Notion - формат, которым пользуются и другие блогеры.
Поэтому решение выглядит верным.
Я уже разбил структуру на блоки, которые мне кажутся важными: подготовка к собеседованиям, разбор полётов (узкие, но при этом необходимые темы для роста, и даже выделил отдельную подборку для эффектов).
Кто читает канал давно, тот знает, что иногда я реализую клёвые штуки (c загадками Да Винчи).
☕️ Пока что подписка по стоимости захода в кофейню.
😃 iOS Dev • 🐱 Доступ к алгоритмам
При работе над своими рабочим проектом и контентом для канала за годы у меня накопилось огромное количество материала, которым я так и не поделился здесь.
Иногда это слишком узкие знания, иногда мне кажется, что порог входа может быть выше ожидаемого. Так или иначе, но знания должны быть структурированы.
За прошедший месяц я начал наполнять свой отдельный Notion избранными исследованиями, подборками и самым разным контентом. Кроме этого, Notion - формат, которым пользуются и другие блогеры.
Поэтому решение выглядит верным.
Я уже разбил структуру на блоки, которые мне кажутся важными: подготовка к собеседованиям, разбор полётов (узкие, но при этом необходимые темы для роста, и даже выделил отдельную подборку для эффектов).
Кто читает канал давно, тот знает, что иногда я реализую клёвые штуки (c загадками Да Винчи).
☕️ Пока что подписка по стоимости захода в кофейню.
Please open Telegram to view this post
VIEW IN TELEGRAM
Разбор архитектурных заблуждений в iOS
Алексей, iOS-разработчик из тинькова, поднял восхитительно опасную, но при этом не менее интересную тему.
Вот несколько тезисов, с которыми сложно не согласиться:
1️⃣ С точки зрения коммерческой разработки наилучшая архитектура — та, что максимально снижает затраты на разработку в долгосрочной перспективе.
Этого подхода я стараюсь придерживаться и в нашей команде. MVC, MVVM, VIPER — это архитектурные шаблоны (больше вот тут). Часто одного шаблона попросту недостаточно.
Например, сететой слой, пуши или как говорит Алексей, обработка диплинков - MVC-подобные паттерны про это не сообщают.
2️⃣ Разработка — это не только написание кода.
Мы создаём код, но его чтение, понимание, а также процессы в команде — занимают львиную долю времени.
3️⃣ В UI логику не держим или?
С выходом AsyncImage сама Apple показала, что можно доверить загрузку картинок и UI-слою.
4️⃣ Вывод: при планировании архитектуры больше внимания стоит уделять не простоте написания, а простоте чтения кода и внесения изменений.
Меня радует, что даже в крупных командах (около 80 человек) не пытаются писать код ради кода.
Наша задача — решать сложные вопросы с помощью программирования, но помните, что слишком много оптимизации на ранних стадиях — может оказаться не лучшим способом.
Будет здорово, если ещё кто-то прочитает про правило трёх.
📖 Обсуждение статьи.
✅ А о правиле трёх (и других моментах) можно прочесть в моём закрытом ноушне.
😃 iOS Dev • 🐱 Доступ к алгоритмам
Алексей, iOS-разработчик из тинькова, поднял восхитительно опасную, но при этом не менее интересную тему.
Вот несколько тезисов, с которыми сложно не согласиться:
1️⃣ С точки зрения коммерческой разработки наилучшая архитектура — та, что максимально снижает затраты на разработку в долгосрочной перспективе.
Этого подхода я стараюсь придерживаться и в нашей команде. MVC, MVVM, VIPER — это архитектурные шаблоны (больше вот тут). Часто одного шаблона попросту недостаточно.
Например, сететой слой, пуши или как говорит Алексей, обработка диплинков - MVC-подобные паттерны про это не сообщают.
2️⃣ Разработка — это не только написание кода.
Мы создаём код, но его чтение, понимание, а также процессы в команде — занимают львиную долю времени.
3️⃣ В UI логику не держим или?
С выходом AsyncImage сама Apple показала, что можно доверить загрузку картинок и UI-слою.
4️⃣ Вывод: при планировании архитектуры больше внимания стоит уделять не простоте написания, а простоте чтения кода и внесения изменений.
Меня радует, что даже в крупных командах (около 80 человек) не пытаются писать код ради кода.
Наша задача — решать сложные вопросы с помощью программирования, но помните, что слишком много оптимизации на ранних стадиях — может оказаться не лучшим способом.
Будет здорово, если ещё кто-то прочитает про правило трёх.
📖 Обсуждение статьи.
Please open Telegram to view this post
VIEW IN TELEGRAM