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
- Telegram Web
Telegram Web
This media is not supported in your browser
VIEW IN TELEGRAM
Алгоритмы обработки видео в iOS 26

Одна из задач на моей работе — это интеграция и поддержка аудио и видеозвонков (p2p и конференций в том числе). Вообще, в этом моя команда прошла довольно большой путь, в том числе пробуя и PJSIP, и решения вроде LiveKit. А про CallKit, например, делился и реальными кейсами. К слову, в рамках теста и поддержки разных алгоритмов, я даже как-то влетел в призы в одном из конкурсов.

Было интересно последить за теми шагами, которые Apple предпринимает в улучшении работы с передачей видео (и добавлении эффектов).

Например, VTFrameProcessor, изначально доступный только в macOS 15.4, теперь появится и в iOS 26.

Но самое интересное для меня в новой сессии - улучшение поддержки передачи видео с низкой скоростью соединения. Появился способ, в котором можно повышать качество видоса в таких условиях с помощью VTLowLatencySuperResolutionScalerConfiguration (не мог не вспомнить мем из CSI).

📺 Рекомендую посмотреть эту сессию всем командам, которые реализуют видеозвонки (и в целом работают с видеоэффектами).

И сразу целых три (!) тестовых проекта (нужна бета оси и Xcode):

➡️ Работа с видео для low-latency конференций
➡️ Лайстрим видео и настройка сессии
➡️ Настройте процесса сжатия

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
22🔥1911👍732❤‍🔥22💯1
This media is not supported in your browser
VIEW IN TELEGRAM
Элегантное решение для растягивающегося заголовка в SwiftUI

Один из наиболее эффектно выглядящих и несложных в реализации элементов — сохранять позицию вью при скролле (чаще всего вместе с масштабированием).

📖 В этом способе, предложенном Натальей Парфёновой используется модификатор visualEffect (доступен с iOS 17).

Пример использования:
extension View {
func stretchy() -> some View {
visualEffect { effect, geometry in
let currentHeight = geometry.size.height
let scrollOffset = geometry.frame(in: .scrollView).minY
let positiveOffset = max(0, scrollOffset)

let newHeight = currentHeight + positiveOffset
let scaleFactor = newHeight / currentHeight

return effect.scaleEffect(
x: scaleFactor, y: scaleFactor,
anchor: .bottom
)
}
}
}


К слову, вот в этом проекте можно чекнуть и другие эффекты при скролле (+ работу с цветами, переходами и не только с помощью шейдеров и рендеринга текста).

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
1339👍22🔥126❤‍🔥5
От массивных SwiftUI-view к переиспользуемым компонентам: рут-подход к MVVM для модульных интерфейсов

📖 В этой статье Маттео Манфердини делится своим взглядом на массивные вью (и почему они являются проблемой).

1️⃣ Почему это причина многих архитектурных проблем.

2️⃣ Создание модульных (и переиспользуемых) вью.

3️⃣ Почему content-вьюхи должны быть связаны только с пользовательским интерфейсом приложения.

Здесь, кстати, автор рассматривает популярное заблуждение с его стороны:

Многие разработчики ошибочно полагают, что MVVM добавляет слишком много бойлерплейт-кода, так как считают что абсолютно для каждой вью должна быть своя viewmodel. Маттео добавляет, что viewmodel должна быть только у корневой вью.

4️⃣ Рут-вью как мост между контент-вьюхами и нижними слоями архитектуры приложения.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
8159👍9❤‍🔥4🔥2💯1
Универсальное руководство по использованию Foundation Models Framework

Foundation Models позволяет нам использовать мощные возможности генеративного ИИ на девайсах, включая понимание естественного языка, создание контента и многое другое, сохраняя при этом конфиденциальность и производительность благодаря работе исключительно на устройстве.

📖 В своём блоге Азам уже начал работу над изучением и поделился своим взглядом на основные концепции. Конечно же, статья будет дополняться, но уже сейчас можно посмотреть на базовые шаги по настройке.

Логически материал разделён на несколько блоков:

🔘Требования
🔘Управляемая генерация
🔘Добавление Foundation Models в приложение на SwiftUI
🔘Инструменты
🔘Работа с сохранением ответов (без повторной генерации)
🔘Производительность

Кроме этого, уже сейчас есть репа с примерами кода:

🛠 Генерация Summary для длинного текста
🛠 Планировщик поездок
🛠 Генератор шуток
🛠Создание рецептов с учётом ингредиентов

Напомню, что для теста нужна Tahoe, Xcode 26 и Apple Silicon.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
713🔥10❤‍🔥62👍1💯1😎1
Почему люди глупеют при использовании ИИ

Прочитал масштабную работу исследователей из MIT, посвященную важному эксперименту.

Ввводные данные: три группы людей, в которых писали эссе на разные темы. Первая юзала ChatGPT, вторая - поисковики, третья - решала самостоятельно.

У всех чекали активность мозговой деятельности в процессе.

🔘 Те, кто использовал ChatGPT - хуже всего вспоминали, о чём писали даже несколько минут назад. 80% не привели ни одной цитаты даже после первого эссе.

🔘 Стиль становился все более однобоким, критический подход применялся все меньше, и в итоге текст превращался буквально в одно и то же.

🔘 Даже после того, как просили перестать юзать ИИ-помощника - испытуемые все равно уступали другим группам по активности мозговой деятельности.

Кроме этого, была и побочка: люди перестали выходить за пределы тех советов, которых им предлагал бот.

Вопрос мышления, инноваций и подходов к нашей работе подвережен тем же проблемам. Важно изучать проблему с разных сторон, следить за тем, как ещё можно решить поставленную задачу.

Например, решая алгоритмические задачи, иногда достаточно интуитивного решения (не самого оптимального по скорости), прежде чем искать подсказки где-то ещё.

Пару дней назад глава Сбера произнёс важную мысль:

«Проблема в том, как бы нам не разучиться думать и как нам перестроить процесс образования так, чтобы дети не разучились считать, писать и решать элементарные задачки.»

Я писал про это полтора года назад и совсем недавно.

Пожалуйста, не верьте слепо всему, что видите. Всегда сохраняйте ясность мышления, как бы сложно это не было. Мы уже находимся в новой реальности, в которой ИИ будет так или иначе рядом (или буквально в качестве агентов), но несмотря на это всё также будет цениться инженерное мышление и способность сохранять ясность ума даже когда из каждого утюга говорят, что ИИ - серебряная пуля.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
23❤‍🔥29💯186👍4🔥3🏆3🫡221
Как выиграть Apple Design Award: Any Distance теперь опенсорс

Приложение Any Distance изначально было создано с целью поделиться красивыми графиками своих тренировок в социальных сетях. В итоге она превратилась в венчурный стартап, нацеленный на свержение Strava. И хотя этого не случилось, в 2023 году оно получило награду за оформление и графику.

📖 Daniel Kuntz пишет, почему оно в итоге стало опенсорсным (вкратце делится ошибками стартапа и недостатком сбора средств на развитие).

А ещё высказывается о том, что в SwiftIUI не так много полезных примеров в доках:
Apple покажет вам 100 способов составить простой TODO-лист, который компилятор едва ли сможет проверить за разумное время, но если вы захотите что-то более сложное, то дальше вы сами. А поскольку в SwiftUI мало кода в примерах, LLM не могут быть очень полезны за пределами шаблонов.


Даниэль также рассказывает, что потратил много времени на эксперименты с Metal, прежде чем получилось такое красивое (и производительное) приложение.

🛠 Фактически, это супер-эксклюзив на GitHub.

Напомню, что целую серию экспериментов с Metal и многое другое можно найти 💰 в бусти и ⭐️ прямо здесь.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
7👏1710❤‍🔥7👍4🔥3🤩1🏆1
Обзорный пост по WWDC25 (Swift, Память, Инструменты), включая полезные ссылки и инструменты

За последние пару недель в канале было множество постов и разборов самых интересных моментов с прошедшей конференции. По традиции я подготовил обзорный пост с лучшими и самыми интересными сессиями на мой взгляд. А также дополнил его полезными материалами и тулзами.

📼 Использование памяти в Swift 6.2 и возможности для повышения производительности
Про Stack, Heap, InlineArray и опасности unsafe pointers. Кстати, огромная подборка материалов, вопросов и разборов кейсов, связанных с памятью есть тут.


📼 Новый инструмент для оптимизации SwiftUI-приложений на WWDC25
В этой сессии можно посмотреть, как на примере реального приложения можно устранить эти проблемы с помощью нового инструмента SwiftUI, Time Profiler (а также Hangs и Hitches).


📼 Что нового в Swift?
Рассказывают про новые возможности языка, позволяющие улучшить подход к параллелизму и добиться максимальной производительности, когда это необходимо.


📼 Повышение качества приложения с помощью concurrency в Swift
О распараллеливании кода, разбор и фикс ошибок, связанных с гонками данных.


📼 Что изменилось в Xcode 26?
Можно узнать, как использовать LLM в процессе разработки. А также ознакомиться с улучшениями в редактировании и отладке, улучшенной производительностью и инструментами тестирования, а также с Swift Build - движком системы сборки с открытым исходным кодом, используемым в Xcode.


📼 Все изменения в UIKit
Обзор всех новых API. А про @Observable с примерами в UIKit можно почитать вот тут.


📼Про конфиденциальность и защиту данных
В этой сессии рассмотрены различные атаки, их влияние на существующие криптографические протоколы и способы защиты от них с помощью квантово-безопасной криптографии.


📼 Разбор нового фреймворка Foundation Models
Про использование Apple Intelligence на устройстве. Этот обзор охватывает буквально все шани: от создания структур данных на языке Swift до вызова инструментов для интеграции источников данных и сессий для управления контекстом.

А вот тут есть репозиторий с уже готовыми примерами.


➡️ А ещё есть ресурс, на котором можно попробовать поискать интересующий контент на WWDC по ключевым запросам.

А если вам понравилось WWDC (трансляция, анонсы и разборы), то вы можете:

❤️‍🔥Поставить лайк • 🚀Дать бустПодписаться на закрытую базу.

➡️ Подборка лучших сессий с WWDC 24
➡️ Подборка лучших сессий с WWDC 23

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
24🔥23106❤‍🔥2💯2👍1👏1👌1
Выбираем
Anonymous Poll
49%
UIKit
51%
SwiftUI
423🍓5🔥4🎉3👍21❤‍🔥11🫡11
iOS Dev
Выбираем
12🤣77😁10🔥7🍓3332
FaultOrdering — опенсорсный инструмент от Emerge tools для ускорения запуска iOS-приложения

Emerge Tools (которые недавно стали частью Sentry), вновь вернулись к интересной и сложной теме.

Первый совместный релиз с Sentry — это шаринг тулзы для генерации файлов порядка (order file).

В своей статье разработчики пишут, что и Spotify, и Snapchat, и AriBnb - все юзают ордер-файлы в своих приложениях.

Такие файлы нужны, чтобы указать линкеру инструкции, как сгруппировать критически важные для запуска символы.

По факту же просто текстовый файл, содержащий по одной строке на каждый символ в приложении. Например, файл порядка приложения Emerge Tools HackerNews содержит такие строки, как:

+[SentryAppStartTracker load]
+[SentryCrashDefaultMachineContextWrapper load]
_main
_$s10HackerNews0aB3AppVAC7SwiftUI0C0AAWl
_$s10HackerNews0aB3AppV7SwiftUI0C0AadEPxycfCTW
_$s10HackerNews0aB3AppVACycfCTf4d_n


В примере выше символы для Objective-C, C и Swift-кода, используемого во время запуска приложения. Соответственно, при увеличении количества отслеживаемых символов будет сокращаться время запуска приложения при использовании такого файла.

📖 В этом материале можно почитать, как FaultOrdering генерит такие файлы.

🛠 А вот тут можно чекнуть сам репозиторий.

Emerge Tools на вопрос самого профита по ускорению отвечают не совсем точно, но на практике они наблюдали, как время запуска приложений сокращалось на 20 %.

Напишите, используете ли вы такие методы для ускорения запуска. Или может знаете способы попроще?

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
69👍6🤯6💯32❤‍🔥2🔥2👏1
🤩 На Swift можно будет разрабатывать Android-приложения

На swift.org инициировано создание рабочей группы, целью которой будет поддержка Android в качестве официальной поддерживаемой платформы для Swift.

📖 Новая рабочая группа будет также заниматься следующим:

— Улучшать и развивать поддержку Android в официальном дистрибутиве Swift.
— Рекомендовать улучшения основных пакетов Swift, таких как Foundation и Dispatch (для лучшей работы с идиомами Android).
— Определять диапазон поддерживаемых уровней API Android и архитектур для интеграции со Swift.
— Выявление и рекомендация лучших практик для взаимодействия между Swift и Java SDK Android (и упаковки либ Swift с приложениями для Android)
— Разработка поддержки дебага приложений Swift на Android.
— Консультирование и помощь в добавлении поддержки Android в различные пакеты Swift сообщества.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
7🔥62👍99🤩5💯43❤‍🔥1
Channel photo updated
Реверс-инжиниринг Coding Intelligence в Xcode

В этом году в Xcode выкатили полноценную версию Coding Intelligence.

📖 В этом материале можно немного приоткрыть завесу того что происходит внутри и понять, как работает этот инструмент.

Для этого можно прочитать про реверс-инжиринг системных инструкций в Xcode и посмотреть на несколько типичных задач кодирования (вместе с соответствующими подсказками).

➡️ Напомню, что в канале есть и любопытный пост про то, что в целом происходит под капотом у ИИ (можно узнать, что такое токены, как LLM работает с контекстом, а также познакомиться с ключевыми концепциями трансформер-архитектуры).

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
716🔥8👍5❤‍🔥3😎2
iOS IQ — список доступных к изучению разделов

Уже продолжительное время я веду не только канал, но и делюсь неочевидными моменты в разработке, своим опытом в решении алгоритмов и задаю каверзные вопросы в приложении (и в разных секциях).

Напомню, что вы можете поддержать канал, подписавшись 💰 на бусти и ⭐️ прямо здесь.

Что можно получить сегодня?

➡️Несколько десятков пройденных алгоритмических задач с боевых конкурсов.
➡️Вопросы на чтение кода
➡️Многопоточность
➡️DispatchQueue: практические вопросы (две части)
➡️Swift Concurrency
➡️Память: ARC, side table, флаги, утечки
➡️UIKit (теория + практика, две части)
➡️Компилятор Swift
➡️Основы: URLSession, UICollectionView и многое другое.

А также:
➡️Множество необычных подходов к анимации (включая шейдеры).
➡️Разбор популярных архитектур (и их недостатков).
➡️Несколько кайфовых и интересных фактов об истории прототипирования в Apple.
➡️Как на самом деле работает Code Signing.
➡️Несколько трюков и фишек при работе c Xcode.

И это только небольшая часть того, что там есть.

iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
1111🔥8❤‍🔥5👍43🤩1
This media is not supported in your browser
VIEW IN TELEGRAM
Я люблю качественные игры (и даже был в офисе легендарного геймдизайнера).

Но вчерашнее событие из обычного резко вырвалось из привычного контекста.

Удалось попасть на закрытое мероприятие в Here at outernet, посвященное туру Death Stranding 2 (должны быть шутки про доставку, и как гений-Кодзима все предугадал на счет коронавируса). Оно нигде не стримилось, оттого и уникально.

И здесь был сам мистер Хидео!

А днем по счастливой случайности пересеклись с арт-директором не только Death Stranding, но и всей серии Metal Gear Solid Йодзи Синкава в японском кафе. Это его визуальный стиль можно распознать буквально с пары кадров.

На закрытом ивенте поговорили про технологию захвата движений и про то, как сложно бывает порой коннектить хороших людей в целом, и как много должно сойтись.

Не думал, что удастся сказать спасибо Кодзиме за его шедевры вживую, но жизнь интересная штука.

Кстати, в качестве специальных гостей приехали не только Кэролайн Полачек и Chvrches, но и сам Сэм Бриджес (он же Норман Ридус). И даже Лея Сейду украсила вечер своим присутствием.

🗓️ Магазин, посвященный игре, открылся 30 июня буквально на один день (прямо рядом с Tottenham court road station). Потратив 100 фунтов, можно было получить бонусом автограф или фото Йодзи. Что я выбрал, можно узнать в комментариях.

🕹️ Играйте в хорошие игры.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
17❤‍🔥53🤯16🔥10👍6🏆43🤩21
This media is not supported in your browser
VIEW IN TELEGRAM
Почему view обновляются в SwiftUI — простой совет для дебага

Есть подход, особенно полезный при отладке обновлений вьюх в SwiftUI, который заключается в вызове внутреннего метода Self._printChanges() из body (вместо вызова print).

Это позволяет узнать, какое именно свойство вызвало обновление (и записать эту инфу в консоль).

Кроме указания имен свойств, @self отмечает изменение значения view, а @identity - изменение идентичности вью.

Когда-то давно этот способ был приватным API, но сейчас его можно найти и в доках.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
10🔥531275👍42🤯1🙏1👌1
Работа с таймером в AlarmKit

Одним из фреймворков, представленных на WWDC, стал AlarmKit.

Для интеграции необходимо выполнить всего пару простых шагов (и добавить ключ NSAlarmKitUsageDescription).

📖 В этом туториале можно посмотреть на пример настройки проекта вместе с Live Activity (для локскрина и Dynamic Island) и познакомиться с возможностям конфигурации.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
513👍7🔥7❤‍🔥21💯1
Сколько iOS-разработчиков в вашей команде?
Anonymous Poll
24%
1
15%
2
11%
3
18%
4-5
12%
6-10
7%
11-20
3%
21-30
10%
> 30
🔥1311❤‍🔥432💯22👍1
Кто такой senior-разработчик

Тот, кто проработал больше 5 (10) лет? Тот, кто лучше всех знает, как устроен компилятор? Человек, который лучше всех пишет код?

А что вообще значит «лучше»?

Моя позиция, что совершенно необязательно человек должен знать всё обо всём, чтобы считаться таковым. В целом, все эти лычки/звания относительны и меняются от одной компании к другой (а иногда и от отдела к отделу). Более того, даже на стадии собесов проверяющие могут сделать вывод, кардинально отличающийся от другого набора собеседующих в той же компании.

На мой взгляд, ни количество кода, ни тем более количество задач (которые некоторые менеджеры считают объективным показателем), не отражают уровень владения инструментами.

При этом, даже на отдельно взятой задаче среднего уровня - вполне можно оценить уровень погружения в контекст. Намного важнее корреляция количества задаваемых вопросов к граничным условиям самой задачи, и что намного более важно — ресурсов на поддержку кода в будущем (здесь можно оценить количество потенциальных багов, их вариации и вектор возможных проблем).

То, что называют системным дизайном (или проектированием, терминология не так важна) вполне может проецироваться не только на глобальный уровень при создании приложения, но и на его компоненты. Масштабирование, способность реагирования на ошибки (или отказы) и вместе с тем сохранение производительности — важные вехи при реализации.

Мне импонирует сравнение на счёт количества строк в коде (что джун добавляет 50 строчек, миддл 1000, а сеньор удаляет 5), это не так далеко от правды. Премировать за количество строк кода — нонсенс, но я слышал и такие истории. Конечно, в случае если вы Маяковский - это можно оправдать, но в остальных ситуациях это просто за гранью разумного.

Способность писать понятный другим код (и вам, если вернетесь к нему через три года) — навык, который вырабатывается итерационно, иногда годами. В этом плюс ревью в команде (залетайте в тред, возможно вам будет что добавить).

Поэтому сениор это не только человек, который способен решить задачу по заданному тз (хотя это буквально то, что требуется), но и профессионал, ход мыслей которого можно понять просто посмотрев на решение.

И хотя это может показаться очевидным, на самом деле дистанция от «решил» до «решил понятно» может быть гигантской.

А умение формулировать свои мысли — важно не только в разработке, но и в жизни.

А кто в вашем понимании сениор-разработчик? Поделитесь мнением.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
830👍14❤‍🔥11🔥62👏1
Типобезопасная и удобная обработка ошибок в Swift 6

Swift 6 привнес в язык новую интересную возможность: typed throws. С помощью этого изменения можно определить, какие типы ошибок может выбрасывать функция.

На первый взгляд это небольшое изменение, но на самом деле открывает путь к написанию более чистого и надежного кода.

📖 В этом посте можно посмотреть на пример кастомного протокола ошибок и на два кейса использования в Swift 6.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
7🔥17👍1083
2025/07/08 23:23:22
Back to Top
HTML Embed Code: