Warning: Undefined array key 0 in /var/www/tgoop/function.php on line 65

Warning: Trying to access array offset on value of type null in /var/www/tgoop/function.php on line 65
2172 - Telegram Web
Telegram Web
📱 Создание больших приложений на SwiftUI
Нет ничего более спорного чем архитектура. Выбор архитектуры зависит от типа приложения. Данная статья представляет из себя гайд по решению базовых вопросов при работе с MV паттернами. Статья описывает не только теорию, но и содержит очень много практических примеров. Особенно ценным мне показался комплексный подход к решению, автор не только знакомит с концепциями, но и в деталях показывает какие проблемы могут возникнуть и к какому решению пришел он. Только часть топиков из статьи:
🟡Модульная архитектура
🟡Понимание структуры MV - паттернов
🟡Отличие концепции View и экрана
🟡Концепция виртуального DOM в React и SwiftUI
🟡Проблемы с традиционным подходом MVVM в SwiftUI
🟡Использование Store в качестве агрегатных модели
🟡Использование @EnvironmentObject
🟡Использование кэширования
🟡Модули и их роль
🟡Навигация в SwiftUI
🟡Отображение ошибок
🟡Форматирование данных
🟡Методы написания тестов
🟡Проблемы с тестированием реализации
🟡E2E-тестирование
🟡Интеграционное тестирование
🟡Модульное тестирование и доступ к данным
🟡Тестирование пользовательского интерфейса
🟡Баланс между модульными и пользовательскими тестами

Возникает логичный вопрос, откуда такое рвение делиться знаниями? В конце ссылка на авторский платный курс за 150$, но статья и сама по себе хороша
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🐥 ignoredByLayout() — Как применить геометрические эффекты, не нарушая макет
ignoredByLayout — недооцененный API в SwiftUI. Мало информации, необычные сценарии использования. Идем в документацию:
🔵Возвращает эффект, который применяется только при отрисовке
🔵Отключает изменения макета во время трансформации
🔵View игнорирует преобразование при вычислениях макета

Понятнее не стало, разбираемся в природе ignoredByLayout на практике:
🟢Визуальное преобразование не меняется.
🟢Система игнорирует геометрическое преобразование.
🟢Свойства геометрии передаются без изменений.

В статье приводится сразу несколько практических сценариев использования, сам я никогда не сталкивался с ними, но теперь готов к встрече.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
🧑‍✈️ Режим агента и поддержка MCP в Copilot для Xcode
Если вы до сих пор не попробовали Copilot, самое время! В актуальном релизе появился режим агента и поддержка MCP 😍. Copilot может выполнять многоступенчатые задачи, такие как анализ кодовой базы и выполнение команд терминала. А режим агента позволяет Copilot выполнять итерацию по собственному коду, обнаруживать и исправлять ошибки.

Режим агента:
🔵Семантическое понимание: Copilot интерпретирует запрос и анализирует кодовую базу.
🔵Предложение по плану: Copilot разбивает задачу на этапы и формулирует план действий.
🔵Выполнение плана: Copilot запрашивает подтверждение для выполнения действий.
🔵Задача выполнена: Copilot проверяет работу и предоставляет сводную информацию о изменениях.

Поддержка MCP:
🟣Model Context Protocol (MCP) позволяет моделям ИИ взаимодействовать с внешними инструментами через единый интерфейс.
🟣Copilot поддерживает MCP, что расширяет его возможности в Xcode.
🟣Настройка локальных серверов MCP возможна через файл конфигурации.
🟣Инструменты MCP можно вызывать непосредственно в режиме агента с помощью естественного языка.
Please open Telegram to view this post
VIEW IN TELEGRAM
🐥 Swift Enums vs Structs - Выбор лучшего инструмента для работы
Не самое типичное сравнение, не классы и структуры, а структуры и перечисления.
🔘Перечисления идеально подходят для конечного состояния, обеспечивают безопасность во время компиляции, switch, подходят для четко определенного набора состояний.
🔘Структуры расширяемые и гибкие. Подходят для расширяемости и добавления дополнительных вариантов, особенно полезны для стилей и конфигураций. Позволяют создавать пользовательские значения.
🔘Выбирать одно не обязательно, можно совмещать для упрощения работы. Перечисления могут содержать множество вычисляемых свойств, что может быть утомительно, а структуры использовать перечисления для ограничения количества доступных состояний.

Преимущества перечислений
🟢Обеспечивают безопасность и ясность для управления состоянием
🟢Полная проверка во время компиляции
🟢Взаимоисключающие состояния
🟢 Сопоставление шаблона с соответствующими значениями

Преимущества структур
🟢Обеспечивают расширяемость для будущих случаев
🟢Система настройки или стилизации
🟢Разрешение пользовательских изменений
🟢Сохранение сложного состояния с несколькими свойствами

Как выбрать? Перечисления подходят для конечного, четко определенного набора состояний. Структуры подходят для расширяемости и гибкости. Выбор зависит от важности безопасности во время компиляции или гибкости во время выполнения и вашей готовности к бойлерплейту и бесконечным switch.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🧑‍💻 iOS 26 на подходе
Судя по слухам, на WWDC нас ожидает серьезный сюрприз от Apple не только в дизайне iOS но и в нейминге. Apple изменит подход к названию своих операционных систем, iOS 26 вместо iOS 19. Аналогично будут названы macOS 26, iPadOS 26, watchOS 26, tvOS 26 и visionOS 26.

У меня один вопрос, почему 26? Не 20, не 25 в 2025г. Удивительный мир маркетинга
Please open Telegram to view this post
VIEW IN TELEGRAM
📱 Кэширование в SwiftUI
Кэширование решает почти любую проблему, кроме пролемы инвалидации кеша 😉. Некоторые фреймворки предоставляют встроенные классы для кэширования, в статье рассматриваются разные стратегии их использования

NSCache
🔵NSCache — изменяемая коллекция для временного хранения данных
🔵Поддерживает автоматическое удаление объектов при заполнении памяти
🔵Работает без блокировки в разных потоках

CacheManager
🔵Использование наблюдательного объекта для совместного использования кэша в разных View
🔵Пример создания наблюдательного объекта CacheManager с использованием NSCache
🔵Пример реализации делегата кэширования в CacheManager

Управление кэшами в SwiftUI
🔵Использование NSCache для кэширования объектов
🔵Определение имени кэша для управления несколькими экземплярами
🔵Использование CacheManager
Please open Telegram to view this post
VIEW IN TELEGRAM
📱 Разбираемся в работе Diff движка SwiftUI
Мантра этого канала - понимание механизмов работы - ключ к работе в удовольствие. Чем меньше магии в движках и фреймворках, которые мы используем - тем предсказуемее итоговый результат. Сегодня рассмотрим движок сравнения SwiftUI. Суть любого декларативного фреймворка состоит в рендеринге только при изменении. SwiftUI использует Value-Type для View, чтобы это обеспечить. При изменении состояния SwiftUI создает новое дерево View. Повторное использование View возможно при совпадении типа, положения и идентификатора.

Пример приложения: Список пассажиров
🔵Пассажиры идентифицируются UUID
🔵При перетасовке массива SwiftUI перестраивает View
🔵Идентификаторы важны для сопоставления "вьюх"

Подводные камни
🔴Использование UUID() приводит к перестройке каждого представления
🔴Использование .id(\.self) с типами значений может вызвать путаницу

Советы и напоминания
🟢Используйте Identifiable модели данных
🟢Создавайте View строк Equatable
🟢Используйте os_signpost для отладки
🟢Намеренно передавайте значения среды
🟢Используйте Transaction для группировки изменений
🟢Используйте .debounce для кнопок
Please open Telegram to view this post
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
🧑‍💻 В 2024 году продажи App Store в США превысили 400 миллиардов долларов
Очень любопытный отчет в предверии WWDC от Apple. В нем отчетливо видно желание компании оправдаться за комиссии и регуляции, объясняя как им тяжело живется. Целеполагание отчета предлагаю обсудить в комментариях, пока по самым интересным фактам:
🟢В 2024 году объем продаж в App Store превысил 400 миллиардов долларов
🟢Более 90% продаж были без комиссии для Apple
🟢За последние пять лет число разработчиков увеличилось более чем в два раза
🟢Большая часть роста обеспечена физическими товарами, рекламой и услугами, продаваемыми через iOS приложения, без комиссии (примерно $277 млрд за 2024, транзакции для Amazon, DoorDash, Uber, Instacart и др.)

Глобальный охват и безопасность
🟢Разработчики из США добились успеха в 175 странах благодаря единой платежной и коммерческой системе App Store
🟢Приложения из США вошли в топ-5 самых скачиваемых на 170 из 175 витрин App Store
🟢App Store остается безопасной торговой площадкой благодаря тщательному процессу проверки и защите конфиденциальности

Поддержка разработчиков
🟢Apple продолжает инвестировать в функции App Store, такие как App Store Connect и StoreKit
🟢Программа для малого бизнеса App Store поддерживает новаторские приложения от небольших разработчиков
🟢Центр разработчиков Apple в Купертино предлагает инструменты и ресурсы для улучшения приложений

Мошеннические транзакции и стандарты Apple
🔴За последние пять лет совершено мошеннических транзакций на сумму более 9 миллиардов долларов
🔴В 2024 году отклонено 1,9 миллиона заявок на приложения из-за несоответствия стандартам Apple
Please open Telegram to view this post
VIEW IN TELEGRAM
🐥 Swift в Apple: перенос службы мониторинга паролей с Java
Очень полезная статья про миграцию с Java на Swift внутри серверной инфраструктуры Apple. Чем примечателен этот опыт? Менеджер облачных паролей в Apple это продакшн сервис с громадным количеством инстансов, репликацией данных и большим RPS. Понятное дело, что Apple вынуждены "догфутить" Swift on Server подходы, но тем интереснее реальный опыт:
🔵Swift активно используется для создания облачных сервисов в Apple.
🔵В прошлом году была перезаписана служба мониторинга паролей на Swift.
🔵Обновленная серверная часть обеспечивает повышение производительности на 40%.

Функции приложения Passwords
🔵Приложение помогает пользователям управлять паролями и ключами доступа.
🔵Мониторинг паролей предупреждает пользователей о утечках данных.
🔵Система мониторинга работает на базе инфраструктуры Linux и поддерживается Apple.

Причины перехода на Swift
🔴Необходимость повышения производительности сервиса мониторинга паролей.
🔴Java не соответствовала растущим требованиям и целям повышения эффективности.
🔴Поиск более эффективного языка для поддержки роста и снижения нагрузки на сервер.

Преимущества Swift
🟢Выразительный синтаксис и простота освоения.
🟢Повышение производительности для удовлетворения требований вычислительных нагрузок.
🟢Реализация основывается на Vapor.
🟢Возможность использовать те же криптографические библиотеки что и на клиентах.
🟢Безопасность типов в языке и асинхронность, упрощающие работу с параллелизмом.

Результаты и выводы
🟣Сокращение количества строк кода на 85%.
🟣Повышение пропускной способности на 40% при задержках менее 1 мс.
🟣Меньший объем памяти на инстансах и высвобождение ресурсов для других рабочих нагрузок.
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
📱 Создание формы звукового сигнала в реальном времени со SwiftUI
Даже не знаю, почему мне так нравятся такие статьи. Либо потому что самому нравится реализовывать анимационные задачки, либо благодаря подтверждению применимости фундаментального математического образования в программировании 😅. В любом случае максимально интересная статья:
🔵Основание для захвата микрофонного входа
🔵Создание класса для обработки аудиовхода
🔵Сбор аудиоданных в реальном времени
🔵Асинхронное выполнение быстрого преобразования Фурье (БПФ)
🔵Использование SwiftUI для отображения формы сигнала в реальном времени
🔵Визуализация значений БПФ в виде линейного графика
🔵Применение метода интерполяции и анимации для сглаживания кривых
🔵Выполнение дискретного преобразования Фурье (DFT)
🔵Вычисление величины каждой частотной составляющей
🔵Отображение результирующей формы сигнала
Please open Telegram to view this post
VIEW IN TELEGRAM
🧑‍💻 WWDC25
Сегодня начинается WWDC25, полезные ссылки:
🍏 Трансляция на сайте apple
🈸 Трансляция в приложении
🎞 Трансляция на youtube

Время UTC+3 московской тайм зоны:
20:00 Apple Keynote
23:00 Platforms State of the Union

Сессии будут доступны сразу и в приложении и на ютубе. Нас ждет самая насыщенная неделя для iOS разработчиков 🥂
Please open Telegram to view this post
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
🧑‍💻 2025 Apple Design Award winners
Пока все на низком старте, Apple опубликовала победителей премии Design Awards:

Приятно и весело:
🏆 CapWords - приложение для запоминания слов
🏆 Balatro - игра, мое личное открытие года

Инклюзивность:
🏆 Speechify - превращает текст в аудио
🏆 Art of Fauna - игра - пазл

Инновации:
🏆 Play - простое прототипирование
🏆 PBJ — The Musical - очаровательная сюжетная игра

Взаимодействие:
🏆 Taobao - реализовали отображение товаров на Apple Vision Pro
🏆 DREDGE - игра рыбалка по—Лавкрафтовски

Социальное взаимодействие:
🏆 Watch Duty: Wildfire Maps - карта пожаров
🏆 Neva - игра-история о последствиях ухудшения состояния окружающей среды

Визуал и графика:
🏆 Feather: Draw in 3D - инструмент моделирования в 2d и 3d
🏆 Infinity Nikki - Это страна чудес текстур, света и анимации, одна из самых красивых игр года
Please open Telegram to view this post
VIEW IN TELEGRAM
2025/06/30 12:06:45
Back to Top
HTML Embed Code: