Лучшие посты для iOSDev за 2025 год
Постарался собрать самое интересное, актуальное и важное в канале - не принимая в расчёт только метрику репостов.
Для удобства я разбил их на техническую часть (что можно применить уже сейчас) и софтовую составляющую (про опыт, про развитие, про деньги и перспективы).
👀 Технические посты
Глоссарий по Swift Concurrency | Global actor на реальных примерах | Развернутый Roadmap
Книги для iOS-разработчика
The System Design Primer — огромная коллекция ресурсов для создания сложных систем
Grand Central Dispatch: большой разбор
Архитектура SwiftData: паттерны и практики
Как на самом деле работает Swift Concurrency
Гонки данных в iOS
Регулярные выражения в Swift - фундаментальный разбор
Делегирование в Swift: вопросы, проблемы с памятью и частые ошибки
Тянем заголовок в SwiftUI не в 1000 строк кода
Секретный способ для скругления и тени одновременно в UIKit
Контроль и оптимизация процесса декодирования изображений в iOS
Как мигрировать UIKit-интерфейс на scene-based
Основы работы с памятью в Swift: size, stride, alignment
Утечки памяти в Swift: что с ними делать, как предотвратить?
Как улучшить производительность SwiftUI-приложений
👀 Карьера, опыт, развитие
В этом году я постарался больше писать про опыт, про важные моменты, не связанные с кодом и разбирать подходы к работе в команде.
Быть инженером
Понимание и повторение
Правильно поставленный вопрос
Умение доносить свои мысли
Цена ошибки
Главный софтскилл
Переключение контекста
Классическая история и самая сложная задача
Зарплаты: хабр раз, хабр два, сравнение с общемировыми, секретная статья
Жёсткие рамки или при чём тут бесконечный скролл
Подготовка к собеседованиям
Промпт-инженеры и их зарплаты
Кровь, пот и пиксели
Разделение или работа в команде
Основная функция приложения
Советы начинающему iOS-разработчику
Катализатор роста iOS-разработчика
Кто такой senior-разработчик
Насколько часто вам повышают зарплату?
Усложнение разработки
Кажется, пора внести ясность
Теорема о бесконечных обезьянах
Какими рабочими инструментами я пользуюсь ежедневно и сколько это всё стоит
Стоимость разработки
Многозадачность и управление приоритетами
Софты важнее?
🤩 Шейдеры: портал, эффект с презентации Apple, Spectrum ring, просто космос | путешествие сквозь, эффект люминофора, Сфера Фибоначчи
😟 Опросы: Размер команды | График работы | Сколько в день пишем код (и сколько пишет ИИ) | Насколько часто вам повышают зарплату? | Будут ли зарплаты снижаться | Необходимость высшего образования Лучший Git-клиент | Пу-пу-пу?
⏳ Ну и вечное: UIKit или SwiftUI? Софты или харды?
Дополнительный лайк тем, кто поддерживает на бусти и в телеграме.
А ещё теперь у нас есть буквально сет: приложение, сайт и бот.
😃 iOS Dev
Постарался собрать самое интересное, актуальное и важное в канале - не принимая в расчёт только метрику репостов.
Для удобства я разбил их на техническую часть (что можно применить уже сейчас) и софтовую составляющую (про опыт, про развитие, про деньги и перспективы).
Глоссарий по Swift Concurrency | Global actor на реальных примерах | Развернутый Roadmap
Книги для iOS-разработчика
The System Design Primer — огромная коллекция ресурсов для создания сложных систем
Grand Central Dispatch: большой разбор
Архитектура SwiftData: паттерны и практики
Как на самом деле работает Swift Concurrency
Гонки данных в iOS
Регулярные выражения в Swift - фундаментальный разбор
Делегирование в Swift: вопросы, проблемы с памятью и частые ошибки
Тянем заголовок в SwiftUI не в 1000 строк кода
Секретный способ для скругления и тени одновременно в UIKit
Контроль и оптимизация процесса декодирования изображений в iOS
Как мигрировать UIKit-интерфейс на scene-based
Основы работы с памятью в Swift: size, stride, alignment
Утечки памяти в Swift: что с ними делать, как предотвратить?
Как улучшить производительность SwiftUI-приложений
В этом году я постарался больше писать про опыт, про важные моменты, не связанные с кодом и разбирать подходы к работе в команде.
Быть инженером
Понимание и повторение
Правильно поставленный вопрос
Умение доносить свои мысли
Цена ошибки
Главный софтскилл
Переключение контекста
Классическая история и самая сложная задача
Зарплаты: хабр раз, хабр два, сравнение с общемировыми, секретная статья
Жёсткие рамки или при чём тут бесконечный скролл
Подготовка к собеседованиям
Промпт-инженеры и их зарплаты
Кровь, пот и пиксели
Разделение или работа в команде
Основная функция приложения
Советы начинающему iOS-разработчику
Катализатор роста iOS-разработчика
Кто такой senior-разработчик
Насколько часто вам повышают зарплату?
Усложнение разработки
Кажется, пора внести ясность
Теорема о бесконечных обезьянах
Какими рабочими инструментами я пользуюсь ежедневно и сколько это всё стоит
Стоимость разработки
Многозадачность и управление приоритетами
Софты важнее?
⏳ Ну и вечное: UIKit или SwiftUI? Софты или харды?
Дополнительный лайк тем, кто поддерживает на бусти и в телеграме.
А ещё теперь у нас есть буквально сет: приложение, сайт и бот.
Please open Telegram to view this post
VIEW IN TELEGRAM
49🎅16 7❤🔥6🔥3👍2🍓1
Прошедшее и непрошедшее время
В японском языке есть всего два времени: прошедшее и непрошедшее.
Так и хочется провести параллель, а может и сравнить эту концепцию с красной нитью, которая так или иначе окружает нас в последние годы (из-за всего, что происходит вокруг, от ИИ до более важных, глобальных историй).
Вопросы, которые остаются без ответа, тенденции, которые далеко не всегда положительны: достаточно вспомнить коронавирус, который внезапно исчез из инфополя, да много чего ещё.
Но важно то, как лично вы справляетесь с этим.
Возможно, это всего лишь навсего пока что непрошедшее время.
Но и это пройдёт.
🎄 С наступающим Новым годом.
😃 iOS Dev
В японском языке есть всего два времени: прошедшее и непрошедшее.
Так и хочется провести параллель, а может и сравнить эту концепцию с красной нитью, которая так или иначе окружает нас в последние годы (из-за всего, что происходит вокруг, от ИИ до более важных, глобальных историй).
Вопросы, которые остаются без ответа, тенденции, которые далеко не всегда положительны: достаточно вспомнить коронавирус, который внезапно исчез из инфополя, да много чего ещё.
Но важно то, как лично вы справляетесь с этим.
Возможно, это всего лишь навсего пока что непрошедшее время.
Но и это пройдёт.
Please open Telegram to view this post
VIEW IN TELEGRAM
50❤🔥16👏9🎄7 4👍2🎅2☃1🔥1🏆1
Фундаментальные знания - главный тренд 2026 года
Недавно более половины нашего канала проголосовала за то, что высшее образование в контексте необходимости для iOS-разработчика уже не столь важная веха.
Наличие диплома несколько лет назад считалось одним из базовых айтемов в инвентаре специалиста, с помощью которого он мог подтвердить свою ценность, например, в Европе (и тем самым получить оффер на работу).
Сейчас есть альтернативы в виде цитируемости/публичности/подкрепления с помощью отзывов именитых персон в индустрии и/или побед в международных конкурсах (говорю в том числе о визе талантов, так называемой O1). Если у кого-то есть успешные кейсы получения, поделитесь - что было самым весомым из этого списка.
Мы уже пару лет идём в ногу с развитием индустрии в плане внедрения всякого рода помощников - к чему это приведёт (окажется ли это пузырём), пока неизвестно.
Но пока совершенно ясно следующее:
Кристально ясен и вот какой момент: уже сейчас порог входа в индустрию усложнился до невиданных высот, где-то видел истории про 2000 откликов на вакансии.
Поэтому нужно сосредоточиться на базе: как минимум пониманию инструментов дебаггинга и способности чекать мемори граф, умению читать код (это было и до, а сейчас будет цениться куда выше). Многие пытаются менять и процесс собеседований, я уже продолжительное время пишу про это в канале.
Умение строить ментальные модели - пожалуй, важнейшая из характеристик продвинутого специалиста.
Навык формулировать, плавно вести ход размышления это то, что как минимум до появления AGI (если это всё же произойдёт) будет точно одним, если не главным козырем.
😃 iOS Dev
Недавно более половины нашего канала проголосовала за то, что высшее образование в контексте необходимости для iOS-разработчика уже не столь важная веха.
Несмотря на это, наличие диплома по крайней мере показатель того, что человек может выполнить проект:
а) долгосрочный
б) монотонный
в) сложный
Наличие диплома несколько лет назад считалось одним из базовых айтемов в инвентаре специалиста, с помощью которого он мог подтвердить свою ценность, например, в Европе (и тем самым получить оффер на работу).
Сейчас есть альтернативы в виде цитируемости/публичности/подкрепления с помощью отзывов именитых персон в индустрии и/или побед в международных конкурсах (говорю в том числе о визе талантов, так называемой O1). Если у кого-то есть успешные кейсы получения, поделитесь - что было самым весомым из этого списка.
Мы уже пару лет идём в ногу с развитием индустрии в плане внедрения всякого рода помощников - к чему это приведёт (окажется ли это пузырём), пока неизвестно.
Но пока совершенно ясно следующее:
Без понимания того, что происходит внутри, без осознания того, что это лишь инструмент, а не серебряная пуля, разработка будет походить на копипаст с 1000 попыток.
Но ИИ, который выдают публично, не учится, это не джун, которого вы можете прокачать/заменторить/заменить какие-то позиции. Обучают модели, а генеративные инструменты - что очевидно, генерируют ответы.
Кристально ясен и вот какой момент: уже сейчас порог входа в индустрию усложнился до невиданных высот, где-то видел истории про 2000 откликов на вакансии.
Поэтому нужно сосредоточиться на базе: как минимум пониманию инструментов дебаггинга и способности чекать мемори граф, умению читать код (это было и до, а сейчас будет цениться куда выше). Многие пытаются менять и процесс собеседований, я уже продолжительное время пишу про это в канале.
Умение строить ментальные модели - пожалуй, важнейшая из характеристик продвинутого специалиста.
Навык формулировать, плавно вести ход размышления это то, что как минимум до появления AGI (если это всё же произойдёт) будет точно одним, если не главным козырем.
Please open Telegram to view this post
VIEW IN TELEGRAM
21👏17 10❤🔥5✍3🔥2👍1
This media is not supported in your browser
VIEW IN TELEGRAM
14😁31🤣10⚡5☃2💯2 2👍1🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
Эффект Liquid Glass + отражения на Metal за 20 строчек кода
📰 В новый год - с новыми эффектами, как говорится)
Попробовал посмотреть на реализацию под другим углом (буквально) и запилить альтернативное решение.
Для этого по классике подошёл с уже привычным инструментом, попробовал закастомить pull-to-refresh с помощью своего решения в одном из секретных проектов.
Без учёта сигнатуры сам метод занял всего 20 строчек кода.
✅ Код всех реализаций есть 💰 тут и ⭐️ тут.
Бесплатные ресурсы, с которых можно начать знакомство со сложной математикой:
📖 Книга Дэна Холлика и 📖 GM Shaders — подборка материалов по изучению шейдеров от новичков до про
😃 iOS Dev
Попробовал посмотреть на реализацию под другим углом (буквально) и запилить альтернативное решение.
Для этого по классике подошёл с уже привычным инструментом, попробовал закастомить pull-to-refresh с помощью своего решения в одном из секретных проектов.
Без учёта сигнатуры сам метод занял всего 20 строчек кода.
Бесплатные ресурсы, с которых можно начать знакомство со сложной математикой:
📖 Книга Дэна Холлика и 📖 GM Shaders — подборка материалов по изучению шейдеров от новичков до про
Please open Telegram to view this post
VIEW IN TELEGRAM
9🔥25 9👍6🤣3🍓2❤🔥1 1
7✍7 7🔥6👍2😎2🍓1
Please open Telegram to view this post
VIEW IN TELEGRAM
5🤯50🍓9🫡9💯7 5 4👍2🔥2👏1🤗1
Использование моделей Apple Foundation на практике: резюмирование текста
Хотя при использовании всё ещё могут быть присущие LLM риски, фреймворк может быть полезен полезным для ряда задач: от обобщения текста до простых задач генерации.
📖 В этом расширенном руководстве как раз рассмотрен один из таких кейсов.
А ещё рассмотрены способы настройки/ограничений и проверки доступности, а также есть пример готового проекта.
➡️ Напомню, что в канале есть и универсальное руководство по использованию Foundation Models Framework
😃 iOS Dev
Хотя при использовании всё ещё могут быть присущие LLM риски, фреймворк может быть полезен полезным для ряда задач: от обобщения текста до простых задач генерации.
📖 В этом расширенном руководстве как раз рассмотрен один из таких кейсов.
А ещё рассмотрены способы настройки/ограничений и проверки доступности, а также есть пример готового проекта.
Please open Telegram to view this post
VIEW IN TELEGRAM
9 13🔥8❤🔥3👍2👏2
Разбор иерархии жестов в SwiftUI
📖 Полезная статья, в которой разбирают способы управления жестами, их приоритетами и потенциальными конфликтами.
🔗 А про комбинацию жестов и анимаций в SwiftUI можно почитать в этом посте.
😃 iOS Dev
📖 Полезная статья, в которой разбирают способы управления жестами, их приоритетами и потенциальными конфликтами.
Please open Telegram to view this post
VIEW IN TELEGRAM
6 18👍8🔥8 4☃1🏆1🆒1
⚡Gemini станет новым ядром Siri - официальное заявление Apple и Google
Цитата из первоисточника:
🗓 Ожидается, что версия Siri следующего поколения будет представлена вместе с iOS 26.4, которая, скорее всего, будет выпущена для широкой публики в марте или апреле.
Надеюсь, для разработчиков тоже будут соответствующие апдейты уже внутри фреймворка Foundation Models.
Ставьте🔥 , если поддерживаете это решение Apple.
😃 iOS Dev
Цитата из первоисточника:
«После тщательной оценки пришли к выводу, что технология Google обеспечивает наиболее эффективную основу для Apple Foundation Models, и мы воодушевлены новыми инновационными возможностями, которые она откроет для наших пользователей», — говорится в заявлении.
🗓 Ожидается, что версия Siri следующего поколения будет представлена вместе с iOS 26.4, которая, скорее всего, будет выпущена для широкой публики в марте или апреле.
Надеюсь, для разработчиков тоже будут соответствующие апдейты уже внутри фреймворка Foundation Models.
Ставьте
Please open Telegram to view this post
VIEW IN TELEGRAM
13🔥77 8⚡7🤯5❤🔥4 3👍1
Секретный способ найти файлы .md для Swift Concurrency/SwiftUI/MapKit и так далее
Вижу волну хайпа вокруг создания инструкций для Claude (и не только), некоторые даже собирают тысячи звёзд на GitHub.
Делюсь способом, в котором вы можете найти буквально эпловские инструкции для Xcode за пару кликов:
Здесь собраны инструкции для FoundationModels/StoreKit/Swift-Concurrency-Updates и многого другого.
😃 iOS Dev
Вижу волну хайпа вокруг создания инструкций для Claude (и не только), некоторые даже собирают тысячи звёзд на GitHub.
Делюсь способом, в котором вы можете найти буквально эпловские инструкции для Xcode за пару кликов:
/Xcode.app/Contents/PlugIns/IDEIntelligenceChat.framework/Versions/A/Resources/AdditionalDocumentationЗдесь собраны инструкции для FoundationModels/StoreKit/Swift-Concurrency-Updates и многого другого.
Please open Telegram to view this post
VIEW IN TELEGRAM
18🔥29 9❤🔥7👍1🫡1
iOS Dev
Какую минимальную версию iOS вы поддерживаете на вашем рабочем проекте?
Какую минимальную iOS на рабочем проекте вы поддерживаете в 2026 году?
Anonymous Poll
5%
26
7%
18
14%
17
31%
16
31%
15
4%
14
7%
13 (или ниже)
26✍11☃2👍2🔥2👏2🤯2 2🏆1🍾1🎄1
This media is not supported in your browser
VIEW IN TELEGRAM
Продвинутые графики на SwiftUI без сторонних фреймворков (+ зум и анимации)
Удобная и приятная анимация всё ещё важны при прочих равных параметрах. Графики имеют решающие значения в инвестиционных продуктах и биржах, в частности.
Например, когда-то Telegram проводил один из самых сложных конкурсов (c бюджетом овер $ 100 000), в которых соревновались за производительность десятки и сотни разработчиков.
Но то в прошлом, и сейчас уже даже в iOS из-под капота можно достать сколь-нибудь приемлемые и легкие в настройке опции.
Я постарался объединить лучшее из того, что доступно прямо сейчас, и описать на примере, как можно реализовать подобное в течение пары часов, если знать, куда двигаться.
✅ Код реализации уже доступен 💰 тут и ⭐️ тут.
Больше про создание графиков в открытом доступе можно почитать вот здесь:
😃 iOS Dev
Удобная и приятная анимация всё ещё важны при прочих равных параметрах. Графики имеют решающие значения в инвестиционных продуктах и биржах, в частности.
Например, когда-то Telegram проводил один из самых сложных конкурсов (c бюджетом овер $ 100 000), в которых соревновались за производительность десятки и сотни разработчиков.
Но то в прошлом, и сейчас уже даже в iOS из-под капота можно достать сколь-нибудь приемлемые и легкие в настройке опции.
Я постарался объединить лучшее из того, что доступно прямо сейчас, и описать на примере, как можно реализовать подобное в течение пары часов, если знать, куда двигаться.
Больше про создание графиков в открытом доступе можно почитать вот здесь:
🔗 Создание гистограмм с помощью SwiftUI Charts в iOS 16🔗 Комбинирование разных типов диаграмм для создания уникального дизайна🔗 Освоение диаграмм в SwiftUI: круговые и кольцевые диаграммы🔗 Swift Charts и реализация скролла на графиках
Please open Telegram to view this post
VIEW IN TELEGRAM
20🔥18 7❤🔥5🤩3👍2🏆1 1
Dime - опенсорсный трекер финансов с учетом гайдлайнов Apple
Из моего личного опыта могу сделать вывод, что чаще всего разработчики делают свои первые пет-проекты одного из этих видов: учет финансов, погодное приложение, трекер привычек или заметки.
Даже в этих несложных (но это только на первый взгляд) темах может появиться шедевр вроде Clear.
Да и в тестовых заданиях можно встретить самые разные вариации таких заданий на 4-6 часов работы.
Делюсь приложением с открытым кодом (⭐️ 1 500 звёзд), в котором можно посмотреть на один из подходов.
🛠 Dime на GitHub (есть пример работы с виджетами, синхронизацией iCloud, работа с темами и базовым подходом и многим другим).
😃 iOS Dev
Из моего личного опыта могу сделать вывод, что чаще всего разработчики делают свои первые пет-проекты одного из этих видов: учет финансов, погодное приложение, трекер привычек или заметки.
Даже в этих несложных (но это только на первый взгляд) темах может появиться шедевр вроде Clear.
Да и в тестовых заданиях можно встретить самые разные вариации таких заданий на 4-6 часов работы.
Делюсь приложением с открытым кодом (⭐️ 1 500 звёзд), в котором можно посмотреть на один из подходов.
🛠 Dime на GitHub (есть пример работы с виджетами, синхронизацией iCloud, работа с темами и базовым подходом и многим другим).
Please open Telegram to view this post
VIEW IN TELEGRAM
6 26👍16👏5✍2🔥2🤩2🤯1
Углубленный анализ миграции данных SwiftData
По мнению Донни Уолша (и с ним сложно не согласиться) легкие миграции хорошо работают, когда не вводятся новые требования: добавление опциональных полей, их удаление или переименование.
Но в ситуации, когда нам нужно ввести новое опциональное свойство, изменить типы или в боле сложном кейсе — мы попадаем в область ручной миграции, и на помощь может прийти SchemaMigrationPlan с настраиваемыми этапами.
📖 В этой статье рассмотрено несколько таких ситуаций:
🔘 Как внедрять версии с помощью VersionedSchema
🔘 Когда следует вводить новые версии схемы
🔘 Когда SwiftData может выполнять миграцию автоматически, а когда стоит использовать
🔘 Как обрабатывать особо сложные миграции
🔗 А вот здесь есть пример от Apple, как интегрировать SwiftData в свой проект.
😃 iOS Dev
По мнению Донни Уолша (и с ним сложно не согласиться) легкие миграции хорошо работают, когда не вводятся новые требования: добавление опциональных полей, их удаление или переименование.
Но в ситуации, когда нам нужно ввести новое опциональное свойство, изменить типы или в боле сложном кейсе — мы попадаем в область ручной миграции, и на помощь может прийти SchemaMigrationPlan с настраиваемыми этапами.
📖 В этой статье рассмотрено несколько таких ситуаций:
🔘 Как внедрять версии с помощью VersionedSchema
🔘 Когда следует вводить новые версии схемы
🔘 Когда SwiftData может выполнять миграцию автоматически, а когда стоит использовать
SchemaMigrationPlan и MigrationStage🔘 Как обрабатывать особо сложные миграции
Please open Telegram to view this post
VIEW IN TELEGRAM
6🔥8 5❤🔥4👍3🏆2☃1👏1🎄1
В App Store обнаружили утечки пользовательских данных в сотнях приложений, связанных с ИИ
Из 198 перечисленных на данный момент приложений 196 раскрывают пользовательские данные.
Например, приложение «Chat & Ask AI» допустило утчеку 406 миллионов записей от более чем 18 миллионов пользователей.
Категории, в которых находятся потенциально опасные приложения: Образование, Развлечения, Здоровье и Соцсети.
➡️ Полностью список можно посмотреть здесь.
😃 iOS Dev
Из 198 перечисленных на данный момент приложений 196 раскрывают пользовательские данные.
Например, приложение «Chat & Ask AI» допустило утчеку 406 миллионов записей от более чем 18 миллионов пользователей.
Категории, в которых находятся потенциально опасные приложения: Образование, Развлечения, Здоровье и Соцсети.
Please open Telegram to view this post
VIEW IN TELEGRAM
6🤯17🔥6🫡6 5👍2 2🏆1
iOS Dev
🚀Skip с сегодняшнего дня стал бесплатным и опенсорсным
До текущего момента создания приложений в Skip требовалась платная подписка и лицензионный ключ.
Что это значит для тех, кто хотел или уже пользуется скипом?
Больше нет лицензионных ключей, нет лицензионных соглашений для конечных пользователей, нет пробного или ознакомительного периода.
🛠 Открыт исходный код движка Skipstone, а сам сайт уже переезжает на skip.dev.
📖 Целиком заявление создателей можно почитать здесь.
😃 iOS Dev
До текущего момента создания приложений в Skip требовалась платная подписка и лицензионный ключ.
Чтобы сохранить доверие сообщества разработчиков и добиться массового распространения, Skip нуждается в полностью свободной и открытой базе. Даже если основная команда не сможет уделять время развитию, сообщество сможет продолжать поддерживать технологию и приложения, которые от неё зависят.
Что это значит для тех, кто хотел или уже пользуется скипом?
Больше нет лицензионных ключей, нет лицензионных соглашений для конечных пользователей, нет пробного или ознакомительного периода.
🛠 Открыт исходный код движка Skipstone, а сам сайт уже переезжает на skip.dev.
📖 Целиком заявление создателей можно почитать здесь.
Please open Telegram to view this post
VIEW IN TELEGRAM
7🔥27 15 6❤🔥4👍2💯2☃1🏆1🎅1
This media is not supported in your browser
VIEW IN TELEGRAM
Создаём музыку бесплатно: как я упаковал MusicGen в нативное приложение для MacOS (Swift + Python и щепотка шейдеров)
Вчера холодным зимним вечером смотрел ролик на ютубе, услышал ненавязчивую музыку и вспомнил про опрос в нашем канале.
Стало интересно, можно ли создать собственный генераторбез регистрации и смс без подписок, и короткий ответ - да, можно.
Простой рецепт, из которого можно создать более-менее приемлемый вариант:
Проблемы, которые пришлось решать:
Оригинальный скрипт юзал библиотеку scipy для сохранения звука (а это потенциально дофига зависимостей). В качестве норм решения прокатило переписать модуль сохранения звука audio.pyна чистом Python (wave + numpy).
Упаковка для приложения:
Вся магия внутри самого приложения происходит с помощью Process:
В итоге остановился на 4 доступных параметрах (можно меньше, больше к сожалению, вряд ли):
В качестве промпта можно использовать любой вариант музыки, который вам нравится, для стиля в целом тоже. У меня, например, сейчас несколько пресетов: от саундтреков до Lo-Fi.
С длительностью все сложнее: есть и ограничения модели, и сам трансформ происходит не слишком понятно на первый взгляд, модуль принимает шаги:
И вообще максимальная длительность ограничена типом модели, так что тут тоже пришлось немного подкрутить.
Так или иначе, в итоге получилось завести проект, который генерит безлимитно музыку без использования сторонних решений, доп. зависимостей, подписок и чего-либо ещё.
На видосе приложил, как получившийся проект работает в реальном времени (у меня M1 Max).
🛠 Расширенная инструкция и пример кода (а также все необходимые скрипты для настройки):
💰 На бусти и ⭐️ в телеграме.
🎹 Примеры музыки: в комментариях.
😃 iOS Dev
Вчера холодным зимним вечером смотрел ролик на ютубе, услышал ненавязчивую музыку и вспомнил про опрос в нашем канале.
Стало интересно, можно ли создать собственный генератор
Простой рецепт, из которого можно создать более-менее приемлемый вариант:
Движок - Python + Apple MLX (кстати, сначала пробовал без этого и очевидно упёрся в проблему использования GPU на Apple Silicon).
В качестве модели заттачил MusicGen Small (можно потяжелее).
Обёртку запилил на SwiftUI и добавил немного красоты для фона.
Проблемы, которые пришлось решать:
Оригинальный скрипт юзал библиотеку scipy для сохранения звука (а это потенциально дофига зависимостей). В качестве норм решения прокатило переписать модуль сохранения звука audio.pyна чистом Python (wave + numpy).
Упаковка для приложения:
С этим ожидаемо было больше всего проблем - начиная от того, что чёртов питон постоянно терял файлы при импорте или вовсе зависимости были кривыми, пришлось с напильником фигачить по очереди каждый вручную (в итоге просто скопировал с репы).
Вся магия внутри самого приложения происходит с помощью Process:
В итоге остановился на 4 доступных параметрах (можно меньше, больше к сожалению, вряд ли):
process.arguments = [promptText, selectedStyle, outputURL.path, durationString]В качестве промпта можно использовать любой вариант музыки, который вам нравится, для стиля в целом тоже. У меня, например, сейчас несколько пресетов: от саундтреков до Lo-Fi.
С длительностью все сложнее: есть и ограничения модели, и сам трансформ происходит не слишком понятно на первый взгляд, модуль принимает шаги:
steps = int(duration_sec * 50). И вообще максимальная длительность ограничена типом модели, так что тут тоже пришлось немного подкрутить.
Так или иначе, в итоге получилось завести проект, который генерит безлимитно музыку без использования сторонних решений, доп. зависимостей, подписок и чего-либо ещё.
На видосе приложил, как получившийся проект работает в реальном времени (у меня M1 Max).
🛠 Расширенная инструкция и пример кода (а также все необходимые скрипты для настройки):
🎹 Примеры музыки: в комментариях.
Please open Telegram to view this post
VIEW IN TELEGRAM
20 20🔥10🏆7❤🔥3👍3🎅2🎄1🆒1
This media is not supported in your browser
VIEW IN TELEGRAM
Изучение жестов в SwiftUI: комбинации, практика, примеры и код
Жесты позволяют создавать живые, отзывчивые и понятные каждому интерфейсы. Простые добавить несложно, но вот в комбинациях запутаться довольно просто. Важно понимать не только как они работают в связке, но и какие подводные камни возможны при поворотах или свайпах.
Я написал большую статью с примерами, которую структурировал на несколько важных разделов, с которых рекомендовал бы начать знакомиться с системой жестов не только новичкам, но и тем, у кого возникают сложности при их адаптации:
А ещё я реализовал удобное тестовое приложение, на котором можно посмотреть каждый пример в отдельности.
Весь код, все примеры и многое другое:💰 На бусти и ⭐️ в телеграме.
🧠 Что вы получите ещё, подписавшись:
😃 iOS Dev
Жесты позволяют создавать живые, отзывчивые и понятные каждому интерфейсы. Простые добавить несложно, но вот в комбинациях запутаться довольно просто. Важно понимать не только как они работают в связке, но и какие подводные камни возможны при поворотах или свайпах.
Я написал большую статью с примерами, которую структурировал на несколько важных разделов, с которых рекомендовал бы начать знакомиться с системой жестов не только новичкам, но и тем, у кого возникают сложности при их адаптации:
🔘 Основы работы с жестами (от простых нажатия и удержания до поворотов и перетаскивания).
🔘 Комбинации: перетаскивание и масштабирование, вращение и перемещение.
🔘 Последовательности жестов, расстановка приоритетов.
🔘 Практические примеры: тут классическая карусель и пример карточки с раскрытием в эпловском стиле.
🔘 Работа с координатами и продвинутые техники.
🔘 Разбор очевидных и не столь понятных ошибок (про возможное дергание при перетаскивании и так далее).
🔘 Доступность.
А ещё я реализовал удобное тестовое приложение, на котором можно посмотреть каждый пример в отдельности.
Весь код, все примеры и многое другое:
➡️ Карта изучения Swift Concurrency (примеры, разбор каждого уровня, полезные советы)➡️ Вопросы на чтение кода (несколько уровней: простых, посложнее)➡️ Многопоточность➡️ DispatchQueue: практические вопросы➡️ Swift Concurrency➡️ Алгоритмы: терминология и примеры + путь Яндекс Coderun (разбор нескольких десятков задач)➡️ Память: ARC, side table, флаги, утечки➡️ Результаты зарплатного опроса в нашем канале + сравнение с европейскими реальными зарплатами в iOS➡️ Разбор подходов к анимациям и лучшие паттерны (классические способы, Metal, комбинации - все подкреплено кодом)➡️ Утечки памяти в Swift: что с ними делать, как предотвратить?➡️ Навигация в SwiftUI: типы, отличия, разбор неочевидных моментов
Please open Telegram to view this post
VIEW IN TELEGRAM
24🔥15👍8🤯4 3❤🔥2 1
Улучшение удобства использования библиотек C в Swift
В экосистеме ПО есть огромное количество интересных, полезных и даже забавных библиотек C.
Хотя у нас всегда есть опция пойти и переписать эти библиотеки на Swift, обычно в этом нет необходимости, поскольку Swift обеспечивает прямую совместимость с C.
После небольшой настройки можно юзать существующие библиотеки C прямо из нашего Swift-кода.
Дуг Грегор, который работает над компилятором и рантаймом Swift, написал огромную детальную статью на официальном сайте, в которой поделился примерами такого использования, особенностями построения карты модулей и подводными камнями, которые могут возникнуть.
📖 Целиком руководство доступно здесь.
😃 iOS Dev
В экосистеме ПО есть огромное количество интересных, полезных и даже забавных библиотек C.
Хотя у нас всегда есть опция пойти и переписать эти библиотеки на Swift, обычно в этом нет необходимости, поскольку Swift обеспечивает прямую совместимость с C.
После небольшой настройки можно юзать существующие библиотеки C прямо из нашего Swift-кода.
Дуг Грегор, который работает над компилятором и рантаймом Swift, написал огромную детальную статью на официальном сайте, в которой поделился примерами такого использования, особенностями построения карты модулей и подводными камнями, которые могут возникнуть.
📖 Целиком руководство доступно здесь.
Please open Telegram to view this post
VIEW IN TELEGRAM
9 12🔥7👏6👍3💯2🆒1 1