💡Огляд недавньої Server-Side Swift конференції
Нещодавно відбулася перша велика конференція, присвячена Swift на сервері. Саме на ній анонсували інтероп з Java та такі речі, як плагін для контейнеризації, про які я вже розповідав на каналі.
Тримайте статтю з коротким змістом усіх доповідей, щоб ви могли самі вирішити, на що ще звернути увагу. Я все ще дивуюся, що Things, мій улюблений туду лист, досить давно перейшов на Swift і, здається, задоволені.
🇺🇦 iOSDevUA
Нещодавно відбулася перша велика конференція, присвячена Swift на сервері. Саме на ній анонсували інтероп з Java та такі речі, як плагін для контейнеризації, про які я вже розповідав на каналі.
Тримайте статтю з коротким змістом усіх доповідей, щоб ви могли самі вирішити, на що ще звернути увагу. Я все ще дивуюся, що Things, мій улюблений туду лист, досить давно перейшов на Swift і, здається, задоволені.
🇺🇦 iOSDevUA
💡Чи знаєте ви, що таке security-scoped bookmarks?
Я навіть не можу це перекласти українською мовою, тому якщо ви не знаєте, ось невелика стаття. Почитайте, можливо, коли дізнаєтеся, зрозумієте, що це вам потрібно в одному з ваших проектів, наприклад.
👉 https://www.avanderlee.com/swift/security-scoped-bookmarks-for-url-access/
🇺🇦 iOSDevUA
Я навіть не можу це перекласти українською мовою, тому якщо ви не знаєте, ось невелика стаття. Почитайте, можливо, коли дізнаєтеся, зрозумієте, що це вам потрібно в одному з ваших проектів, наприклад.
👉 https://www.avanderlee.com/swift/security-scoped-bookmarks-for-url-access/
🇺🇦 iOSDevUA
SwiftLee
Security-scoped bookmarks for URL access
Find out how security-scoped bookmarks on macOS can help regain access to user-selected directories and enhance data management.
💡Як зберігати мікросекунди при конвертації Date <-> String
Невелике нагадування – при конвертації string в дату і назад за допомогою DateFormatter інформація про мікросекунди втрачається. Якщо для вас вони важливі, то в статті розглядається, як зберегти їх значення.
🇺🇦 iOSDevUA
Невелике нагадування – при конвертації string в дату і назад за допомогою DateFormatter інформація про мікросекунди втрачається. Якщо для вас вони важливі, то в статті розглядається, як зберегти їх значення.
🇺🇦 iOSDevUA
Augmented Code
How to keep Date’s microseconds precision in Swift
DateFormatter is used for converting string representation of date and time to a Date type and visa-versa. Something to be aware of is that the conversion loses microseconds precision. This is extr…
💡Епізод Swift Talk про Concurrency
Хлопці з Objc.io випустили безкоштовний епізод свого відеоблогу про Swift Concurrency, де на прикладі невеликого macOS додатку розбираються з основними функціями та помилками компіляції.
🇺🇦 iOSDevUA
Хлопці з Objc.io випустили безкоштовний епізод свого відеоблогу про Swift Concurrency, де на прикладі невеликого macOS додатку розбираються з основними функціями та помилками компіляції.
🇺🇦 iOSDevUA
talk.objc.io
Swift 6 Concurrency (Part 1)
We start a new macOS project to explore Swift 6's concurrency features.
💡У Apple вийшла серія туторіалів по Instruments про баги з потоками та як їх дебажити
Використовуйте Instruments для аналізу performance, використання ресурсів та поведінки ваших додатків. Дізнайтеся, як покращити відгук, зменшити використання пам’яті та аналізувати складну поведінку з часом.
👉 https://developer.apple.com/tutorials/instruments
🇺🇦 iOSDevUA
Використовуйте Instruments для аналізу performance, використання ресурсів та поведінки ваших додатків. Дізнайтеся, як покращити відгук, зменшити використання пам’яті та аналізувати складну поведінку з часом.
👉 https://developer.apple.com/tutorials/instruments
🇺🇦 iOSDevUA
💡Підбірка доповідей з iOS Conf SG 2024
📺 Understanding our users – корисне відео, в якому розбираються основи того, що питати у користувачів, щоб розвивати продукт у потрібному напрямку.
📺 Swift beyond Apple platforms — про можливості та проблеми використання Swift від веб-розробки до роботи в embedded-системах.
📺 The Swift Actor Pitfall: Understanding and Managing Reentrancy – розбір неочевидної та простої помилки, пов’язаної зі Swift Concurrency.
Не можна пройти повз і міграцію кодової бази на async/await.
🔗 А весь плейліст з доповідями доступний ось тут.
🇺🇦 iOSDevUA
📺 Understanding our users – корисне відео, в якому розбираються основи того, що питати у користувачів, щоб розвивати продукт у потрібному напрямку.
📺 Swift beyond Apple platforms — про можливості та проблеми використання Swift від веб-розробки до роботи в embedded-системах.
📺 The Swift Actor Pitfall: Understanding and Managing Reentrancy – розбір неочевидної та простої помилки, пов’язаної зі Swift Concurrency.
Не можна пройти повз і міграцію кодової бази на async/await.
🔗 А весь плейліст з доповідями доступний ось тут.
🇺🇦 iOSDevUA
💡Як працювати зі Swift Data та Core Data у фоновому режимі
Хоча SwiftData набагато простіше в налаштуванні, фреймворк успадкував багато проблем Core Data (включаючи ті, які стримували багатьох розробників від використання Core Data у своїх додатках).
Одна з найбільших проблем — управління моделями у різних контекстах. Моделі Swift Data та Core Data небезпечно використовувати разом у різних потоках (вони не є Sendable і не thread-safe). Apple навіть вказує на це у своєму керівництві (посилання).
📖 Пол у своєму блозі розглядає цю проблему з різних боків та пропонує свій варіант рішення з використанням одного контейнера та виконання всієї необхідної роботи у бекграунді.
🇺🇦 iOSDevUA
Хоча SwiftData набагато простіше в налаштуванні, фреймворк успадкував багато проблем Core Data (включаючи ті, які стримували багатьох розробників від використання Core Data у своїх додатках).
Одна з найбільших проблем — управління моделями у різних контекстах. Моделі Swift Data та Core Data небезпечно використовувати разом у різних потоках (вони не є Sendable і не thread-safe). Apple навіть вказує на це у своєму керівництві (посилання).
📖 Пол у своєму блозі розглядає цю проблему з різних боків та пропонує свій варіант рішення з використанням одного контейнера та виконання всієї необхідної роботи у бекграунді.
🇺🇦 iOSDevUA
💡Нові статті в документації Apple
Тримайте пачку жовтневих оновлень документації Apple:
👉 Win-back offers – спеціальний тип підписок, спрямований на повернення користувачів, які від вас пішли
👉 Camera Control: HIG та документація
👉 Гайд по підтримці різних розмірів годинників
👉 Нові семпли для visionOS
🇺🇦 iOSDevUA
Тримайте пачку жовтневих оновлень документації Apple:
👉 Win-back offers – спеціальний тип підписок, спрямований на повернення користувачів, які від вас пішли
👉 Camera Control: HIG та документація
👉 Гайд по підтримці різних розмірів годинників
👉 Нові семпли для visionOS
🇺🇦 iOSDevUA
👍1
💡Genesis – новий генератор статичних сайтів на Swift
Генератор статичних сайтів – один із найпростіших способів створити той самий блог, про який ви давно мріяли. А якщо цей генератор написаний на Swift, ви ще можете погратися з незвичайним застосуванням улюбленої мови.
Genesis – ще один такий генератор. Від альтернатив його відрізняє максимально проста реалізація, відсутність якихось зовнішніх залежностей та робота зі рядками замість складних DSL.
🇺🇦 iOSDevUA
Генератор статичних сайтів – один із найпростіших способів створити той самий блог, про який ви давно мріяли. А якщо цей генератор написаний на Swift, ви ще можете погратися з незвичайним застосуванням улюбленої мови.
Genesis – ще один такий генератор. Від альтернатив його відрізняє максимально проста реалізація, відсутність якихось зовнішніх залежностей та робота зі рядками замість складних DSL.
🇺🇦 iOSDevUA
Alejandro M. P.
Back to the basics with Genesis | Alejandro M. P.
Recently, I finished an almost final draft of my novel and decided it was time to refresh my online presence and website. Instead of starting my next novel, I dove into creating the next version of my site, what I call alejandromp4. And, of course, you know…
Сергій, iOS розробник, ділиться своїм досвідом оптимізації обробки відео в додатку для соціальних мереж.
Він пояснює використання AVFoundation, асинхронне завантаження ресурсів, а також впровадження AsyncDisplayKit для покращення продуктивності при роботі з UICollectionView.
👉 https://dou.ua/forums/topic/50877/
🇺🇦 iOSDevUA
Він пояснює використання AVFoundation, асинхронне завантаження ресурсів, а також впровадження AsyncDisplayKit для покращення продуктивності при роботі з UICollectionView.
👉 https://dou.ua/forums/topic/50877/
🇺🇦 iOSDevUA
👍4🔥2❤1
💡Нова вимога до оновлень додатків в ЄС
Починаючи з 17-го жовтня для відправки оновлень додатків в App Store на території Європейського Союзу (ЄС) власникам акаунтів або адміністраторам програми Apple Developer Program необхідно ввести статус торговця в App Store Connect.
Вам треба буде вибрати ваш статус — трейдер / не трейдер.
Якщо ви є торговцем, вам потрібно буде надати інформацію про себе, перш ніж ви зможете відправити свій додаток на перевірку.
Від 17 лютого 2025 року додатки без статусу торговця будуть видалятися з App Store в ЄС до тих пір, поки статус торговця не буде надано та перевірено з метою дотримання Закону про цифрові послуги.
👉 https://developer.apple.com/news/?id=yfacfeal
🇺🇦 iOSDevUA
Починаючи з 17-го жовтня для відправки оновлень додатків в App Store на території Європейського Союзу (ЄС) власникам акаунтів або адміністраторам програми Apple Developer Program необхідно ввести статус торговця в App Store Connect.
Вам треба буде вибрати ваш статус — трейдер / не трейдер.
Якщо ви є торговцем, вам потрібно буде надати інформацію про себе, перш ніж ви зможете відправити свій додаток на перевірку.
Від 17 лютого 2025 року додатки без статусу торговця будуть видалятися з App Store в ЄС до тих пір, поки статус торговця не буде надано та перевірено з метою дотримання Закону про цифрові послуги.
👉 https://developer.apple.com/news/?id=yfacfeal
🇺🇦 iOSDevUA
💡Рекомендації з оптимізації продуктивності
GitHub-репозиторій з підбіркою статей, інструментів та кейсів оптимізації різних аспектів продуктивності.
🇺🇦 iOSDevUA
GitHub-репозиторій з підбіркою статей, інструментів та кейсів оптимізації різних аспектів продуктивності.
🇺🇦 iOSDevUA
💡Оновлення сертифіката APNs
У сервісі пушів Apple оновлюється сертифікат. Вам потрібно не забути додати новий сертифікат на свій сервер:
📆 До 20 січня 2025 для середовища sandbox
📆 До 24 лютого 2025 для продакшену
🇺🇦 iOSDevUA
У сервісі пушів Apple оновлюється сертифікат. Вам потрібно не забути додати новий сертифікат на свій сервер:
📆 До 20 січня 2025 для середовища sandbox
📆 До 24 лютого 2025 для продакшену
🇺🇦 iOSDevUA
Apple
Apple Push Notification service server certificate update - Latest News - Apple Developer
The Certification Authority (CA) for Apple Push Notification service (APNs) is changing. APNs will update the server certificates in sandbox on January 20, 2025, and in production on February 24, 2025. All developers using APNs will need to update their application’s…
👍1
Якщо вам раптом дуже хочеться (з якоїсь причини) написати сайт на Swift, звісно, не без HTML, то ось матеріал про те, як це зробити. Тут йдеться про Swift result builder, тому можливо сайт вам і не потрібен, але хоча б про цю частину мови дізнаєтесь 👍
👉 https://www.hackingwithswift.com/articles/266/build-your-next-website-in-swift
🇺🇦 iOSDevUA
👉 https://www.hackingwithswift.com/articles/266/build-your-next-website-in-swift
🇺🇦 iOSDevUA
Hacking with Swift
Build your next website in Swift
How Swift's result builders can help us write smarter, safer HTML.
💡Малювання кастомних фігур у SwiftUI: приклади та код
У SwiftUI протокол Shape визначає контур нашої в’ю.
Він використовується для малювання та проектування власних фігур або контролів різної складності.
📖 У цьому матеріалі можна ознайомитися зі створенням не тільки простих речей (наприклад, трикутників), але й з набагато більш цікавими прикладами з анімаціями.
🇺🇦 iOSDevUA
У SwiftUI протокол Shape визначає контур нашої в’ю.
Він використовується для малювання та проектування власних фігур або контролів різної складності.
📖 У цьому матеріалі можна ознайомитися зі створенням не тільки простих речей (наприклад, трикутників), але й з набагато більш цікавими прикладами з анімаціями.
🇺🇦 iOSDevUA
Офіційний GitHub Copilot для Xcode 🥳
Open Source і інтегрований безпосередньо в Xcode. Поки в беті.
Встановлюється як додаток — інструкція в README.
👉 https://github.com/github/CopilotForXcode
🇺🇦 iOSDevUA
Open Source і інтегрований безпосередньо в Xcode. Поки в беті.
Встановлюється як додаток — інструкція в README.
👉 https://github.com/github/CopilotForXcode
🇺🇦 iOSDevUA
🔥4
💡Як працювати з passkeys у iOS-додатку
Passkeys використовуються для автентифікації користувачів без використання пароля (після WWDC 23 Apple навіть додала фразу:
Сама пара public + private ключ створюється кожного разу при генерації нового облікового запису.
Щоб отримати доступ до контенту, користувачі можуть використовувати PIN-код або біометрію.
📖 Тут є корисний матеріал про те, як налаштувати passkeys у вашому додатку та приклад реалізації на GitHub.
🇺🇦 iOSDevUA
Passkeys використовуються для автентифікації користувачів без використання пароля (після WWDC 23 Apple навіть додала фразу:
При використанні passkey з сервера нічого немає вкрасти).Сама пара public + private ключ створюється кожного разу при генерації нового облікового запису.
Щоб отримати доступ до контенту, користувачі можуть використовувати PIN-код або біометрію.
📖 Тут є корисний матеріал про те, як налаштувати passkeys у вашому додатку та приклад реалізації на GitHub.
🇺🇦 iOSDevUA
💡Як створити zip-архів
Виявляється, у Foundation є системний API, який дозволяє створювати zip-архів за переданим йому URL папки. Код можна переглянути тут.
🇺🇦 iOSDevUA
Виявляється, у Foundation є системний API, який дозволяє створювати zip-архів за переданим йому URL папки. Код можна переглянути тут.
🇺🇦 iOSDevUA
Medium
How to easily create ZIP files in Swift without third-party dependencies
If you’ve ever worked on an iOS app with complex networking, sooner or later you’ll probably need to create ZIP archives from your files…
💡Проектуємо Network Layer в iOS
Звичайно, ідеального рішення не існує.
Але є кілька хороших прикладів (відправних точок) для створення модульного, розширюваного та тестованого мережевого шару в iOS.
У двох великих статтях автор розповідає про свій підхід до реалізації на прикладах:
📖 Проектування API-клієнта (створення запитів, приклад реального варіанту використання, авторизація + логування).
📖 Друга частина присвячена модульним та інтеграційним тестам.
🇺🇦 iOSDevUA
Звичайно, ідеального рішення не існує.
Але є кілька хороших прикладів (відправних точок) для створення модульного, розширюваного та тестованого мережевого шару в iOS.
У двох великих статтях автор розповідає про свій підхід до реалізації на прикладах:
📖 Проектування API-клієнта (створення запитів, приклад реального варіанту використання, авторизація + логування).
📖 Друга частина присвячена модульним та інтеграційним тестам.
🇺🇦 iOSDevUA
❤2
💡SpectreKit – бібліотека для консольного UI
SpectreKit – поки що ще сира бібліотека для того, щоб створювати красивий UI для консольних додатків, написаних на Swift.
🇺🇦 iOSDevUA
SpectreKit – поки що ще сира бібліотека для того, щоб створювати красивий UI для консольних додатків, написаних на Swift.
🇺🇦 iOSDevUA
💡Малювання графіки на Apple Vision за допомогою Metal Rendering API
Матеріалів по Apple Vision Pro дуже мало (а додатків трохи більше, але якщо ви щось робили, поділіться в коментарях, дуже цікаво).
Коли мова заходить про рендеринг, більшість розробників обирають вже відомі ігрові рушії, такі як Unity, або високорівневі API від Apple (перевіряйте RealityKit).
Однак є й інший варіант, який був доступний з самого початку: створення власного рушія рендерингу за допомогою Metal API.
Незважаючи на складність, такий підхід дозволяє отримати повний контроль над конвеєром рендерингу, аж до кожного байту.
Знайшов цікаву статтю (яку зберіг для майбутніх експериментів), в якій розглядається безліч цікавих моментів:
📖 Створення та налаштування LayerRenderer.
📖 Vertex Amplification (і опис прикладів з Vertex/Fragment шейдерами).
📖 Оновлення та енкодинг для кадрів.
📖 Підтримка стереоскопічного та не-VR рендерингу дисплею.
📖 Рекомендації та поради.
Якщо зараз це здається не дуже актуальним, то через кілька років, на мою думку, подібні пристрої будуть повсюдно використовуватися (наприклад, у медицині або для роботи з високотехнологічними процесами загалом, а навіть ремонтувати авто на просунутих сервісах з авто-підказками – чим не бізнес-ідея).
🇺🇦 iOSDevUA
Матеріалів по Apple Vision Pro дуже мало (а додатків трохи більше, але якщо ви щось робили, поділіться в коментарях, дуже цікаво).
Коли мова заходить про рендеринг, більшість розробників обирають вже відомі ігрові рушії, такі як Unity, або високорівневі API від Apple (перевіряйте RealityKit).
Однак є й інший варіант, який був доступний з самого початку: створення власного рушія рендерингу за допомогою Metal API.
Незважаючи на складність, такий підхід дозволяє отримати повний контроль над конвеєром рендерингу, аж до кожного байту.
Знайшов цікаву статтю (яку зберіг для майбутніх експериментів), в якій розглядається безліч цікавих моментів:
📖 Створення та налаштування LayerRenderer.
📖 Vertex Amplification (і опис прикладів з Vertex/Fragment шейдерами).
📖 Оновлення та енкодинг для кадрів.
📖 Підтримка стереоскопічного та не-VR рендерингу дисплею.
📖 Рекомендації та поради.
Якщо зараз це здається не дуже актуальним, то через кілька років, на мою думку, подібні пристрої будуть повсюдно використовуватися (наприклад, у медицині або для роботи з високотехнологічними процесами загалом, а навіть ремонтувати авто на просунутих сервісах з авто-підказками – чим не бізнес-ідея).
🇺🇦 iOSDevUA