💡The System Design Primer — велика колекція матеріалів для проєктування складних систем
Досвід роботи зі складними та масштабованими проєктами приходить із практикою, і це одна з тих навичок, яку складно освоїти без реальних кейсів. Навіть на співбесідах, коли просять спроєктувати систему, рідко очікують детального розбору архітектури на кілька рівнів глибини.
Знайшов чудовий опенсорс-репозиторій (288 000+ зірок ⭐️), де ком’юніті аналізує популярні застосунки та надає приклади для проєктування масштабованих систем.
🔗 Корисний ресурс на GitHub.
🇺🇦 iOSDevUA
Досвід роботи зі складними та масштабованими проєктами приходить із практикою, і це одна з тих навичок, яку складно освоїти без реальних кейсів. Навіть на співбесідах, коли просять спроєктувати систему, рідко очікують детального розбору архітектури на кілька рівнів глибини.
Знайшов чудовий опенсорс-репозиторій (288 000+ зірок ⭐️), де ком’юніті аналізує популярні застосунки та надає приклади для проєктування масштабованих систем.
🔗 Корисний ресурс на GitHub.
🇺🇦 iOSDevUA
👍1
💡NSAttributedString: створення, редагування та керування атрибутами
UILabel – це більше, ніж здається на перший погляд. Якщо вам доводилося працювати з різними текстовими стилями, ця тема може бути знайомою. Для більш продуктивного підходу часто використовують Core Text, однак у багатьох випадках достатньо NSAttributedString.
Оскільки робота з текстом потрібна у будь-якому додатку, корисно знати особливості його редагування.
📖 У цій статті розглядаються ключові прийоми роботи з атрибутованими рядками – додавання клікабельних посилань, налаштування параграфів, робота з вкладеними зображеннями тощо.
Також автор звертає увагу на оптимізацію за допомогою кешування тексту.
🇺🇦 iOSDevUA
UILabel – це більше, ніж здається на перший погляд. Якщо вам доводилося працювати з різними текстовими стилями, ця тема може бути знайомою. Для більш продуктивного підходу часто використовують Core Text, однак у багатьох випадках достатньо NSAttributedString.
Оскільки робота з текстом потрібна у будь-якому додатку, корисно знати особливості його редагування.
📖 У цій статті розглядаються ключові прийоми роботи з атрибутованими рядками – додавання клікабельних посилань, налаштування параграфів, робота з вкладеними зображеннями тощо.
Також автор звертає увагу на оптимізацію за допомогою кешування тексту.
🇺🇦 iOSDevUA
This media is not supported in your browser
VIEW IN TELEGRAM
🕹 Гра «Життя» Конвея: реалізація на MetalKit
Ендрю Глейв продемонстрував, як створити візуалізацію гри «Життя» за допомогою MetalKit. В основі реалізації використовуються vertex та fragment шейдери, що дозволяє досягти плавної та ефективної графіки.
🛠 Код доступний на GitHub.
🇺🇦 iOSDevUA
Ендрю Глейв продемонстрував, як створити візуалізацію гри «Життя» за допомогою MetalKit. В основі реалізації використовуються vertex та fragment шейдери, що дозволяє досягти плавної та ефективної графіки.
🛠 Код доступний на GitHub.
🇺🇦 iOSDevUA
👍1
This media is not supported in your browser
VIEW IN TELEGRAM
💡Реалізація шейдера з презентації Apple для iPhone 16e
У спільноті часто створюють власні інтерпретації логотипів, натхненних подіями від Apple. Наприклад, для останньої презентації навіть з’явився сайт, де можна переглянути ефекти на логотипах різних компаній.
Розробник Bobby Bobak вирішив перенести цей ефект у SwiftUI – він додав можливість налаштовувати рівень заломлення та блюр.
📖 Код реалізації доступний на GitHub.
📱 Оригінальний пост від Стіва Хейні.
🇺🇦 iOSDevUA
У спільноті часто створюють власні інтерпретації логотипів, натхненних подіями від Apple. Наприклад, для останньої презентації навіть з’явився сайт, де можна переглянути ефекти на логотипах різних компаній.
Розробник Bobby Bobak вирішив перенести цей ефект у SwiftUI – він додав можливість налаштовувати рівень заломлення та блюр.
📖 Код реалізації доступний на GitHub.
📱 Оригінальний пост від Стіва Хейні.
🇺🇦 iOSDevUA
❤4🔥1🤯1
Детальний гайд про нововведення в Swift 6 і міграцію 🔥
👉 https://www.avanderlee.com/concurrency/swift-6-migrating-xcode-projects-packages/
🇺🇦 iOSDevUA
👉 https://www.avanderlee.com/concurrency/swift-6-migrating-xcode-projects-packages/
🇺🇦 iOSDevUA
SwiftLee
Swift 6: What’s New and How to Migrate
What's new in Swift 6 and how do you migrate your projects and packages? Learn how to apply incremental migration and why you should update.
💡Як вимкнути анімації в додатку при ввімкненні відповідної опції в Accessibility
📖 Короткий навчальний матеріал про те, як реалізувати підтримку відключення анімацій у вашому додатку, якщо користувач активував відповідний перемикач у налаштуваннях Accessibility.
Реалізація досить проста, але далеко не всі додатки враховують цю важливу функцію, яка може значно покращити досвід окремих користувачів.
🇺🇦 iOSDevUA
📖 Короткий навчальний матеріал про те, як реалізувати підтримку відключення анімацій у вашому додатку, якщо користувач активував відповідний перемикач у налаштуваннях Accessibility.
Реалізація досить проста, але далеко не всі додатки враховують цю важливу функцію, яка може значно покращити досвід окремих користувачів.
🇺🇦 iOSDevUA
This media is not supported in your browser
VIEW IN TELEGRAM
💡Безкоштовна альтернатива App Center Distribution
🚀 Emerge відкрили безкоштовний доступ до свого сервісу для поширення iOS та Android білдів. Це чудова альтернатива App Center Distribution, особливо з такими умовами:
✔️ 5000 білдів на місяць
✔️ Необмежена кількість користувачів
✔️ SSO
✔️ SDK для автоматичних сповіщень про нові версії
📖 Детальніше про сервіс можна почитати тут.
🇺🇦 iOSDevUA
🚀 Emerge відкрили безкоштовний доступ до свого сервісу для поширення iOS та Android білдів. Це чудова альтернатива App Center Distribution, особливо з такими умовами:
✔️ 5000 білдів на місяць
✔️ Необмежена кількість користувачів
✔️ SSO
✔️ SDK для автоматичних сповіщень про нові версії
📖 Детальніше про сервіс можна почитати тут.
🇺🇦 iOSDevUA
😱3
💡Робоча група Swift для Android
🚀 Використання Swift для розробки під Android набирає оберти! Спільнота сформувала робочу групу, до якої увійшли розробники Skip та інші ентузіасти.
📌 Поки що їхній план – регулярні зустрічі та обговорення викликів, але в майбутньому вони сподіваються стати офіційною частиною проєкту Swift.
🔗 Обговорення ведеться тут 👉 https://forums.swift.org/t/swift-on-android-working-group/77780.
🇺🇦 iOSDevUA
🚀 Використання Swift для розробки під Android набирає оберти! Спільнота сформувала робочу групу, до якої увійшли розробники Skip та інші ентузіасти.
📌 Поки що їхній план – регулярні зустрічі та обговорення викликів, але в майбутньому вони сподіваються стати офіційною частиною проєкту Swift.
🔗 Обговорення ведеться тут 👉 https://forums.swift.org/t/swift-on-android-working-group/77780.
🇺🇦 iOSDevUA
👍1
💡Як перевірити state restoration у SwiftUI
У SwiftUI відновлення стану реалізується через SceneStorage. Однак протестувати його вручну складно, адже при закритті через app switcher стейт скидається.
✅ Щоб перевірити збереження стану, виконайте такі кроки:
1️⃣ Запустіть додаток у симуляторі
2️⃣ Змініть стейт (наприклад, перемістіться по навігації)
3️⃣ Натисніть Home, щоб відправити додаток у бекграунд
4️⃣ Натисніть Stop у Xcode
5️⃣ Запустіть додаток знову та перевірте, чи збережений стан відновився
📖 Детальніше про це в матеріалі 👉 https://nilcoalescing.com/blog/TestingSceneStorageStatePersistenceInXcode/
🇺🇦 iOSDevUA
У SwiftUI відновлення стану реалізується через SceneStorage. Однак протестувати його вручну складно, адже при закритті через app switcher стейт скидається.
✅ Щоб перевірити збереження стану, виконайте такі кроки:
1️⃣ Запустіть додаток у симуляторі
2️⃣ Змініть стейт (наприклад, перемістіться по навігації)
3️⃣ Натисніть Home, щоб відправити додаток у бекграунд
4️⃣ Натисніть Stop у Xcode
5️⃣ Запустіть додаток знову та перевірте, чи збережений стан відновився
📖 Детальніше про це в матеріалі 👉 https://nilcoalescing.com/blog/TestingSceneStorageStatePersistenceInXcode/
🇺🇦 iOSDevUA
👍2❤1
💡Що відкритий Swift Build означає для екосистеми
📖 Команда Tuist підготувала детальний аналіз одного з головних анонсів останнього місяця.
Їхній проєкт спрощував роботу з xcodebuild, приховуючи складність процесів, а тепер відкриття Swift Build може відкрити ще більше можливостей для розробників.
💡 Один із потенційних наступних кроків — створення універсального DSL для опису проєктів, який зможе замінити Package.swift і xcodeproj.
🇺🇦 iOSDevUA
📖 Команда Tuist підготувала детальний аналіз одного з головних анонсів останнього місяця.
Їхній проєкт спрощував роботу з xcodebuild, приховуючи складність процесів, а тепер відкриття Swift Build може відкрити ще більше можливостей для розробників.
💡 Один із потенційних наступних кроків — створення універсального DSL для опису проєктів, який зможе замінити Package.swift і xcodeproj.
🇺🇦 iOSDevUA
tuist.dev
What Swift Build means for the Swift ecosystem
In blog post we share our perspective on what Swift Build might mean for the Swift ecosystem, drawing from our extensive experience working with Xcode projects, and how it aligns with the plans we have for Tuist.
🔥1
🎬Детальний гайд по Apple Search Ads: налаштування та оптимізація
📖 Вийшов корисний матеріал про Apple Search Ads, у якому пояснюється, як правильно налаштувати рекламу, оптимізувати кампанії та підвищити ефективність просування додатків.
Якщо ви плануєте використовувати ASA для залучення користувачів, цей гайд допоможе розібратися у всіх нюансах. 🚀
https://www.youtube.com/watch?v=W6_bN3AZo_s
🇺🇦 iOSDevUA
📖 Вийшов корисний матеріал про Apple Search Ads, у якому пояснюється, як правильно налаштувати рекламу, оптимізувати кампанії та підвищити ефективність просування додатків.
Якщо ви плануєте використовувати ASA для залучення користувачів, цей гайд допоможе розібратися у всіх нюансах. 🚀
https://www.youtube.com/watch?v=W6_bN3AZo_s
🇺🇦 iOSDevUA
YouTube
How to Set Up an Apple Search Ads Campaign the Right Way #ASA
► Search Ads Insights: https://appfigures.com/reports/competitor-search-ads
► Keyword Inspector: https://appfigures.com/reports/keyword-inspector
► Start a FREE trial of Appfigures: https://appfigures.com/signup
► Get a demo of the platform: https:/…
► Keyword Inspector: https://appfigures.com/reports/keyword-inspector
► Start a FREE trial of Appfigures: https://appfigures.com/signup
► Get a demo of the platform: https:/…
💡Що відбувається, коли ви переміщаєте файл у Git?
Це цікаве питання, адже Git є невід’ємною частиною роботи кожного розробника. Хтось використовує Xcode, Tower, інші надають перевагу консолі, але розуміння принципів роботи важливе для всіх.
❗️ Часто вважають, що коміти в Git — це диференційні diffs, але це не зовсім так.
📌 У своїй статті Бруно Роша пояснює, що коміти — це snapshots. Тобто при будь-якій зміні файлу Git зберігає його повну копію в репозиторії.
📂 Окремо цікаво, як Git визначає, що два файли однакові, навіть якщо вони мають різні імена.
📖 Детальний розбір і пояснення інших цікавих моментів у статті: https://swiftrocks.com/what-happens-when-you-move-a-file-in-git
🇺🇦 iOSDevUA
Це цікаве питання, адже Git є невід’ємною частиною роботи кожного розробника. Хтось використовує Xcode, Tower, інші надають перевагу консолі, але розуміння принципів роботи важливе для всіх.
❗️ Часто вважають, що коміти в Git — це диференційні diffs, але це не зовсім так.
📌 У своїй статті Бруно Роша пояснює, що коміти — це snapshots. Тобто при будь-якій зміні файлу Git зберігає його повну копію в репозиторії.
📂 Окремо цікаво, як Git визначає, що два файли однакові, навіть якщо вони мають різні імена.
📖 Детальний розбір і пояснення інших цікавих моментів у статті: https://swiftrocks.com/what-happens-when-you-move-a-file-in-git
🇺🇦 iOSDevUA
Swiftrocks
What happens when you move a file in git?
Is renaming large folders in git repos an issue? Let's find out.
💡Стаття про те, як створити подібне menu bar в macOS за допомогою SwiftUI.
👉 https://troz.net/post/2025/mac_menu_data/
🇺🇦 iOSDevUA
👉 https://troz.net/post/2025/mac_menu_data/
🇺🇦 iOSDevUA
💡Task.sleep() vs Task.yield(): В чому різниця?
У Swift Concurrency існують два способи призупинити виконання асинхронного коду:
🛑
🔄
Попри схожу поведінку, вони мають суттєві відмінності, які важливо розуміти.
📖 В цій статті Антуан пояснює, як правильно використовувати обидва методи і в яких випадках вони будуть корисними.
🇺🇦 iOSDevUA
У Swift Concurrency існують два способи призупинити виконання асинхронного коду:
🛑
Task.sleep() — дозволяє поставити задачу «спати» на вказаний проміжок часу.🔄
Task.yield() — звільняє потік і дозволяє іншим завданням виконатися перед тим, як продовжити.Попри схожу поведінку, вони мають суттєві відмінності, які важливо розуміти.
📖 В цій статті Антуан пояснює, як правильно використовувати обидва методи і в яких випадках вони будуть корисними.
🇺🇦 iOSDevUA
💡Я не знаю, навіщо вам це потрібно, але не поділитися просто не можу.
Swift Package на Android? Будь ласка, тримайте! 🙃
Дуже детальний розбір 🔍
👉 https://skip.tools/blog/android-native-swift-packages/
🇺🇦 iOSDevUA
Swift Package на Android? Будь ласка, тримайте! 🙃
Дуже детальний розбір 🔍
👉 https://skip.tools/blog/android-native-swift-packages/
🇺🇦 iOSDevUA
Skip
Swift Everywhere: Bringing Swift Packages to Android
Skip brings SwiftUI app development to Android
This media is not supported in your browser
VIEW IN TELEGRAM
💡Noora – UI компоненти для CLI
Створювати консольні утиліти на Swift набагато приємніше, ніж використовувати Python чи Ruby. Noora — це Swift-пакет, що надає зручні графічні елементи для створення стильних консольних інтерфейсів. Серед доступних компонентів: алерти, запити “так/ні”, індикатор прогресу та багато іншого.
🔗 Детальніше можна переглянути тут: Noora Package.
🇺🇦 iOSDevUA
Створювати консольні утиліти на Swift набагато приємніше, ніж використовувати Python чи Ruby. Noora — це Swift-пакет, що надає зручні графічні елементи для створення стильних консольних інтерфейсів. Серед доступних компонентів: алерти, запити “так/ні”, індикатор прогресу та багато іншого.
🔗 Детальніше можна переглянути тут: Noora Package.
🇺🇦 iOSDevUA
❤2
💡NSHipster про Ollama
Mattt продовжує оновлювати свій, здавалося б, давно забутий блог. Тепер його статті більше присвячені різним інструментам, які можуть бути корисними не тільки iOS-розробникам, а й ширшому колу спеціалістів.
🔍 У новій публікації він розповідає про Ollama – CLI-інструмент для встановлення та керування локальними LLM-моделями.
📖 Деталі за посиланням: NSHipster про Ollama.
🇺🇦 iOSDevUA
Mattt продовжує оновлювати свій, здавалося б, давно забутий блог. Тепер його статті більше присвячені різним інструментам, які можуть бути корисними не тільки iOS-розробникам, а й ширшому колу спеціалістів.
🔍 У новій публікації він розповідає про Ollama – CLI-інструмент для встановлення та керування локальними LLM-моделями.
📖 Деталі за посиланням: NSHipster про Ollama.
🇺🇦 iOSDevUA
NSHipster
Ollama
While we wait for Apple Intelligence to arrive on our devices, something remarkable is already running on our Macs. Think of it as a locavore approach to artificial intelligence: homegrown, sustainable, and available year-round.
❤1
💡Cooperative Cancellation в Swift Concurrency
🔹 В Swift Concurrency механізм скасування та зупинки задач — це дві різні концепції.
Задача не припиняється автоматично, але рантайм повідомляє, що вона позначена як скасована. Далі рішення залишається за вами: наприклад, можна повернути пустий або частковий результат, залежно від логіки програми.
📖 Детальний розбір цієї теми доступний у статті: Cooperative Cancellation в Swift Concurrency.
🇺🇦 iOSDevUA
🔹 В Swift Concurrency механізм скасування та зупинки задач — це дві різні концепції.
Задача не припиняється автоматично, але рантайм повідомляє, що вона позначена як скасована. Далі рішення залишається за вами: наприклад, можна повернути пустий або частковий результат, залежно від логіки програми.
📖 Детальний розбір цієї теми доступний у статті: Cooperative Cancellation в Swift Concurrency.
🇺🇦 iOSDevUA
Swift with Majid
Task Cancellation in Swift Concurrency
Swift Concurrency provides a cooperative cancellation model to handle task cancellation. This week, we will learn what a cooperative cancellation model is, how to use it, and how to be a good citizen and handle it correctly.
💡Корисні інструменти для терміналу
Ось кілька цікавих утиліт, які можуть значно покращити роботу в терміналі:
🔹 Atuin – зберігає історію команд з підтримкою fuzzy-пошуку.
🔹 Starship – зручний спосіб налаштувати та кастомізувати вигляд терміналу.
🔹 fzf – інтуїтивний fuzzy-пошук по файлах.
🔹 Secure Shellfish – iOS-застосунок для SSH-підключень до вашої машини.
🇺🇦 iOSDevUA
Ось кілька цікавих утиліт, які можуть значно покращити роботу в терміналі:
🔹 Atuin – зберігає історію команд з підтримкою fuzzy-пошуку.
🔹 Starship – зручний спосіб налаштувати та кастомізувати вигляд терміналу.
🔹 fzf – інтуїтивний fuzzy-пошук по файлах.
🔹 Secure Shellfish – iOS-застосунок для SSH-підключень до вашої машини.
🇺🇦 iOSDevUA
💡Toolbar і NavigationView у SwiftUI
🔹 Використання
Якщо потрібно, щоб тулбар відображався завжди, автор статті випробував кілька підходів і знайшов робоче, хоча і трохи костильне рішення.
📖 Деталі та приклад реалізації доступні тут: https://www.joshholtz.com/blog/2025/02/08/swiftui-navigation-view-if-needed.html
🇺🇦 iOSDevUA
🔹 Використання
.toolbar у SwiftUI додає тулбар до вью, але працює це тільки в межах NavigationView.Якщо потрібно, щоб тулбар відображався завжди, автор статті випробував кілька підходів і знайшов робоче, хоча і трохи костильне рішення.
📖 Деталі та приклад реалізації доступні тут: https://www.joshholtz.com/blog/2025/02/08/swiftui-navigation-view-if-needed.html
🇺🇦 iOSDevUA
Josh Holtz
SwiftUI - Navigation View If Needed
I needed a way to add a toolbar in a view in SwiftUI without knowing if that view came from a navigation stack or not.
💡SharingGRDB – альтернатива SwiftData
Команда Pointfree представила SharingGRDB, яка може стати альтернативою SwiftData.
🔹 Схожий API, як у SwiftData, що спрощує міграцію.
🔹 Під капотом використовується SQLite, що дає більше контролю над базою даних.
🔹 Можливість прямого доступу до вмісту бази.
🛠 Приклади використання доступні у репозиторії: GitHub.
📖 Детальніше про бібліотеку можна прочитати у блозі Pointfree.
🇺🇦 iOSDevUA
Команда Pointfree представила SharingGRDB, яка може стати альтернативою SwiftData.
🔹 Схожий API, як у SwiftData, що спрощує міграцію.
🔹 Під капотом використовується SQLite, що дає більше контролю над базою даних.
🔹 Можливість прямого доступу до вмісту бази.
🛠 Приклади використання доступні у репозиторії: GitHub.
📖 Детальніше про бібліотеку можна прочитати у блозі Pointfree.
🇺🇦 iOSDevUA
www.pointfree.co
SQLiteData: A SwiftData Alternative
We are excited to announce a new open source library that can serve as a SwiftData alternative for many types of apps out there today. It provides tools that work in SwiftUI views, @Observable models, UIKit view controllers, and gives direct access to SQLite.