Please open Telegram to view this post
VIEW IN TELEGRAM
Низкоуровневый процессинг аудио с AVFoundation
Пример того, как написать простую библиотеку с удобным API для создания аудиоэффектов поверх AVFoundation. Источник вдохновения – Objective-C библиотека Novocaine.
Пример того, как написать простую библиотеку с удобным API для создания аудиоэффектов поверх AVFoundation. Источник вдохновения – Objective-C библиотека Novocaine.
Orestis Papadopoulos
AVAudioEffectNode: painless low level audio effects written in Swift
I'm Orestis Papadopoulos. I work as a software developer. This is my blog, I write about software, sounds and Swift.
Swift Container Plugin
Плагин для SwiftPM, с помощью которого можно собирать контейнеры с вашими серверными приложениями и публиковать их в нужные облака. Доклад с деталями можно посмотреть тут.
Плагин для SwiftPM, с помощью которого можно собирать контейнеры с вашими серверными приложениями и публиковать их в нужные облака. Доклад с деталями можно посмотреть тут.
SafariExtension на SwiftUI
Если бы меня сходу спросили, на чем разрабатываются расширения для Safari, я был бы уверен, что это JavaScript. Оказывается, их можно писать нативно на SwiftUI!
Если бы меня сходу спросили, на чем разрабатываются расширения для Safari, я был бы уверен, что это JavaScript. Оказывается, их можно писать нативно на SwiftUI!
www.polpiella.dev
How to build a Safari extension with SwiftUI
Learn how to create a Safari Extension as a popover using only Swift and how to render its UI using SwiftUI.
Ускорение сетевых запросов на старте приложения
Ребята из Додо делятся своим опытом профилирования сетевых запросов и кучи оптимизаций, которые помогли ускорить старт приложения в два раза. Примеры оптимизаций:
👉По одной URLSession на хост для переиспользования коннекшнов
👉Прогрев коннекшна первой строчкой в приложении
👉Оптимизация порядка запросов с оглядкой на UX
Ребята из Додо делятся своим опытом профилирования сетевых запросов и кучи оптимизаций, которые помогли ускорить старт приложения в два раза. Примеры оптимизаций:
👉По одной URLSession на хост для переиспользования коннекшнов
👉Прогрев коннекшна первой строчкой в приложении
👉Оптимизация порядка запросов с оглядкой на UX
Обзор недавней Server-Side Swift конференции
Недавно прошла первая большая конференция, посвященная Swift на сервере. Это на ней анонсировали интероп с Java и штуки вроде плагина для контейнеризации, про которые я уже рассказывал в канале.
Держите статью с кратким содержанием всех докладов, чтобы вы могли сами решить, на что еще обратить внимание. Я все еще удивляюсь, что Things, мой любимый туду лист, довольно давно переехал на Swift, и вроде бы довольны.
Недавно прошла первая большая конференция, посвященная Swift на сервере. Это на ней анонсировали интероп с Java и штуки вроде плагина для контейнеризации, про которые я уже рассказывал в канале.
Держите статью с кратким содержанием всех докладов, чтобы вы могли сами решить, на что еще обратить внимание. Я все еще удивляюсь, что Things, мой любимый туду лист, довольно давно переехал на Swift, и вроде бы довольны.
Как сохранять микросекунды при конверсии Date <-> String
Нрбольшое напоминание – при конвертации строки в дату и обратно с использованием DateFormatter информация о микросекундах теряется. Если для вас они важны, то в статье разбирается, как сохранить их значение.
Нрбольшое напоминание – при конвертации строки в дату и обратно с использованием DateFormatter информация о микросекундах теряется. Если для вас они важны, то в статье разбирается, как сохранить их значение.
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 приложения разбираются с основными фичами и ошибками компиляции.
Ребята из Objc.io выпустили бесплатный эпизод своего видеоблога про Swift Concurrency. где на примере небольшого macOS приложения разбираются с основными фичами и ошибками компиляции.
talk.objc.io
Swift 6 Concurrency (Part 1)
We start a new macOS project to explore Swift 6's concurrency features.
Новые статьи в документации
Держите пачку октябрьских обновлений документации Apple:
👉Win-back offers: специальный тип подписок, направленный на возвращение ушедших от вас пользователей
👉Camera Control: HIG и документация
👉Гайд по поддержке разных размеров часов
👉Новые семплы для visionOS
Держите пачку октябрьских обновлений документации Apple:
👉Win-back offers: специальный тип подписок, направленный на возвращение ушедших от вас пользователей
👉Camera Control: HIG и документация
👉Гайд по поддержке разных размеров часов
👉Новые семплы для visionOS
Genesis – новый генератор статических сайтов на Swift
Генератор статических сайтов – один из самых простых способов собрать себе тот самый блог, о котором вы давно мечтали. А если этот генератор написан на Swift, вы еще можете и поиграться с необычным применением любимого языка.
Genesis – еще один такой генератор. От альтернатив его отличает максимально простая реализация, отсутствие каких-то внешних зависимостей и работа со строками вместо сложных DSL.
Генератор статических сайтов – один из самых простых способов собрать себе тот самый блог, о котором вы давно мечтали. А если этот генератор написан на Swift, вы еще можете и поиграться с необычным применением любимого языка.
Genesis – еще один такой генератор. От альтернатив его отличает максимально простая реализация, отсутствие каких-то внешних зависимостей и работа со строками вместо сложных DSL.
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…
Рекомендации по оптимизации перфоманса
GitHub репозиторий с подборкой статей, инструментов и кейсов оптимизации разных аспектов перфоманса.
GitHub репозиторий с подборкой статей, инструментов и кейсов оптимизации разных аспектов перфоманса.
Как создать zip архив
Оказывается, в Foundation есть системный API, который позволяет создавать zip архив по переданному ему URL папки. Код можно посмотреть здесь.
Оказывается, в Foundation есть системный API, который позволяет создавать zip архив по переданному ему URL папки. Код можно посмотреть здесь.
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…
SpectreKit – библиотека для консольного UI
SpectreKit – пока еще сырая библиотека для того, чтобы собирать красивый UI для консольных приложений, написанных на Swift.
SpectreKit – пока еще сырая библиотека для того, чтобы собирать красивый UI для консольных приложений, написанных на Swift.
Обновление сертификата APNs
У Apple'ового сервиса пушей обновляется сертификат. Вам нужно не забыть добавить новый серт на свой сервер:
📆До 20 января 2025 для сендбокс окружения
📆До 24 февраля 2025 для продакшна
У Apple'ового сервиса пушей обновляется сертификат. Вам нужно не забыть добавить новый серт на свой сервер:
📆До 20 января 2025 для сендбокс окружения
📆До 24 февраля 2025 для продакшна
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…
Почему UserDefaults может не возвращать данные
👉У вас включен флаг Sensitive Data Encryption, который не дает получать доступ к данным в залоченном телефоне, но вы пытаетесь обратиться к UserDefaults из виджета.
👉Автоматический преворминг приложения может включаться даже тогда, когда телефон заблокирован. Получается та же проблема, что и выше.
👉Если вы перезагрузили телефон с запущенной LiveActivity, при ее следующей загрузке данные не будут доступны.
👉У вас включен флаг Sensitive Data Encryption, который не дает получать доступ к данным в залоченном телефоне, но вы пытаетесь обратиться к UserDefaults из виджета.
👉Автоматический преворминг приложения может включаться даже тогда, когда телефон заблокирован. Получается та же проблема, что и выше.
👉Если вы перезагрузили телефон с запущенной LiveActivity, при ее следующей загрузке данные не будут доступны.
Christianselig
Beware UserDefaults: a tale of hard to find bugs, and lost data
Excuse the alarmist title, but I think it’s justified, as it’s an issue that’s caused me a ton of pain in both support emails and actually tracking it down, so I want to make others aware of it so they don’t similarly burned.
Brief intro For the uninitiated…
Brief intro For the uninitiated…
Почему приложения на Android весят меньше
Очень часто можно увидеть, что одно и то же приложение в App Store весит 100мб, а в Play Store – 10мб. В статье разбираются причины этого и то, что каждая из платформ понимает под "размером".
Очень часто можно увидеть, что одно и то же приложение в App Store весит 100мб, а в Play Store – 10мб. В статье разбираются причины этого и то, что каждая из платформ понимает под "размером".
Emergetools
Emerge Tools Blog | Are Android apps THAT much smaller than iOS?
An in-depth analysis of Android vs. iOS app sizes and why Android apps might be larger than they appear
ReactiveCollectionsKit – новая библиотека для коллекций
Помните легендарные библиотеки IGListKit и JSQDataSourcesKit? Их автор зарелизил еще одну библиотеку для отображения коллекций, по его словам, с учетом ощибок всех предыдущих итераций. Основная идея за библиотекой – коллекция реактивно реагирует на изменения вью модели, запуская нужные анимации в нужный момент.
👉Библиотека на GitHub
Помните легендарные библиотеки IGListKit и JSQDataSourcesKit? Их автор зарелизил еще одну библиотеку для отображения коллекций, по его словам, с учетом ощибок всех предыдущих итераций. Основная идея за библиотекой – коллекция реактивно реагирует на изменения вью модели, запуская нужные анимации в нужный момент.
👉Библиотека на GitHub
Jesse Squires
Introducing ReactiveCollectionsKit
I recently released a new open source project called ReactiveCollectionsKit. It is a modern, fast, and flexible library for building data-driven, declarative...
Как добавить номер версии приложения на скриншот
Разбираемся, как автоматически добавлять номера версии и билда приложения на скриншот, чтобы облегчить работу саппорта. Код получившейся библиотеки, работающий и с UIKit, и со SwiftUI, можно посмотреть тут.
Разбираемся, как автоматически добавлять номера версии и билда приложения на скриншот, чтобы облегчить работу саппорта. Код получившейся библиотеки, работающий и с UIKit, и со SwiftUI, можно посмотреть тут.
sidorov.tech
Ловим скриншоты
Как потратить целый день чтобы добавить версию приложения на экран. Простая задача превратилась в настоящий квест с масками, приватными API и хитрыми трюками UIKit и SwiftUI.
iPad как девайс для разработки
Каждый год находится человек, который рассказывает, как iPad полностью заменил ему ноутбук для iOS разработки. Автор статьи настолько сильно топит за то, что это – полноценная замена, что единственной существенной проблемой называет невозможность снятия скриншотов для App Store.
Каждый год находится человек, который рассказывает, как iPad полностью заменил ему ноутбук для iOS разработки. Автор статьи настолько сильно топит за то, что это – полноценная замена, что единственной существенной проблемой называет невозможность снятия скриншотов для App Store.
mutatingfunc.github.io
App development on iPad
In the last year, I’ve gone all-in on building apps using an iPad. I’ve never met another Playgrounds developer, and a lot of the community are surprised this is even possible!
This post should clear up what is and isn’t possible when it comes to app development…
This post should clear up what is and isn’t possible when it comes to app development…
gRPC сервер на Swift
Хорошего контента про Swift на сервере в этом году особенно много. Вот, например, туториал по тому, как собрать простой gRPC сервер с использованием grpc-swift-protobuf библиотеки.
Хорошего контента про Swift на сервере в этом году особенно много. Вот, например, туториал по тому, как собрать простой gRPC сервер с использованием grpc-swift-protobuf библиотеки.
Swiftonserver
Beginner's Guide to Protocol Buffers and gRPC with Swift - Swift on server
Learn Protocol Buffers and gRPC with Swift in this easy, step-by-step beginner's guide.