This media is not supported in your browser
VIEW IN TELEGRAM
История одного дебаг-меню
Ребята из Альфы рассказывают, как устроено дебаг-меню в их приложениях. Из интересного – есть создание тестовых пользователей, просмотр логов сетевых запросов и аналитики, и счетчик FPS.
Ребята из Альфы рассказывают, как устроено дебаг-меню в их приложениях. Из интересного – есть создание тестовых пользователей, просмотр логов сетевых запросов и аналитики, и счетчик FPS.
Как работают текстовые кодировки
Записали топовый выпуск Подлодки про разные неочевидные аспекты устройства текстовых кодировок и работы с ними. Больше всего, конечно, про Unicode. Если хотите узнать, почему в любом приложении, работающем с текстом, есть баги – обязательно слушайте!
По мотивам подкаста Никита Прокопов написал еще и шикарную статью, в которой подбил основные тезисы.
Записали топовый выпуск Подлодки про разные неочевидные аспекты устройства текстовых кодировок и работы с ними. Больше всего, конечно, про Unicode. Если хотите узнать, почему в любом приложении, работающем с текстом, есть баги – обязательно слушайте!
По мотивам подкаста Никита Прокопов написал еще и шикарную статью, в которой подбил основные тезисы.
podlodka.io
Podlodka #339 – Кодировки текста
There is no such thing as a plain text. Мы позвали в гости Никиту Прокопова, автора Fira Code, и разработчика сразу нескольких UI фреймворков, чтобы поговорить о том, как компьютеры работают с текстом. Тема большая, поэтому первый выпуск мы решили посвятить…
Интерактивный гайд по CRDT
Лучший пост недели. Очень просто и подробно разбираются принципы работы CRDT, сразу в виде кода и интерактивного плейграунда. Статья про JavaScript, но все сниппеты кода очень простые, и легко переносятся на Swift.
Лучший пост недели. Очень просто и подробно разбираются принципы работы CRDT, сразу в виде кода и интерактивного плейграунда. Статья про JavaScript, но все сниппеты кода очень простые, и легко переносятся на Swift.
Jakelazaroff
An Interactive Intro to CRDTs | jakelazaroff.com
CRDTs don't have to be all academic papers and math jargon. Learn what CRDTs are and how they work through interactive visualizations and code samples.
Изменения в парсинге URL
Изменение, которое вы могли пропустить. Начиная с iOS 17, поменялся стандарт парсинга строки в URL, использующийся при вызове
Изменение, которое вы могли пропустить. Начиная с iOS 17, поменялся стандарт парсинга строки в URL, использующийся при вызове
init(string:)
функции. Основное изменение – раньше при парсинге невалидных символов получался nil, а теперь поведение стало менее строгим. Если хотите откатиться до старого поведения, нужно использовать другую функцию.Как работать с фреймворком Screen Time
Фреймворк Screen Time появился с iOS 16. С его помощью можно писать специальные экстеншны, которые позволяют отслеживать время, которое пользователь проводит в других приложениях. В статье пошагово разбирается, как в приложение Streaks добавляли такой мониторинг.
Фреймворк Screen Time появился с iOS 16. С его помощью можно писать специальные экстеншны, которые позволяют отслеживать время, которое пользователь проводит в других приложениях. В статье пошагово разбирается, как в приложение Streaks добавляли такой мониторинг.
Тактильная отдача в SwiftUI
С помощью модификатора
С помощью модификатора
sensoryFeedback
можно настраивать тактильную отдачу для различных действий с приложением. Все, что нужно для настройки – указать стиль отдачи и пороговое значение, с которого она включится.Swift with Majid
Sensory feedback in SwiftUI
SwiftUI introduced the new sensoryFeedback view modifier, allowing us to play haptic feedback on all Apple platforms. This week, we will learn how to use the sensoryFeedback modifier to give haptic feedback on different actions in our apps.
Интероп Swift с Windows API
Обзор того, как различные фичи Swift упрощают написание Windows приложений и взаимодействие с Windows API.
Обзор того, как различные фичи Swift упрощают написание Windows приложений и взаимодействие с Windows API.
Swift.org
Swift Everywhere: Using Interoperability to Build on Windows
This post was originally published at Speaking in Swift by The Browser Company under the title “Interoperability: Swift’s Super Power”.
Видео с NSSpain
В открытый доступ выложили все видео с конференции NSSpain. Из интересного:
👉Как Spotify разбивает приложение на модули
👉Использование Metal шейдеров со SwiftUI
👉Как делать приложения на SwiftUI более плавными
В открытый доступ выложили все видео с конференции NSSpain. Из интересного:
👉Как Spotify разбивает приложение на модули
👉Использование Metal шейдеров со SwiftUI
👉Как делать приложения на SwiftUI более плавными
Vimeo
NSSpain XI (2023)
Join the web’s most supportive community of creators and get high-quality tools for hosting, sharing, and streaming videos in gorgeous HD with no ads.
Насколько активно Apple использует Swift и SwiftUI
Новая итерация ежегодного анализа бинарей в iOS. В iOS 17 такая статистика:
👉Использование Swift продолжает расти. Скорость его роста уже равна скорости роста Objective-C.
👉Впервые за всю историю количество бинарников, использующих только UIKit, упало. SwiftUI же растет еще быстрее – уже 21% бинарников его используют.
👉Несмотря на доступность Secure Enclave для Swift, Apple использует его только с Objective-C.
Новая итерация ежегодного анализа бинарей в iOS. В iOS 17 такая статистика:
👉Использование Swift продолжает расти. Скорость его роста уже равна скорости роста Objective-C.
👉Впервые за всю историю количество бинарников, использующих только UIKit, упало. SwiftUI же растет еще быстрее – уже 21% бинарников его используют.
👉Несмотря на доступность Secure Enclave для Swift, Apple использует его только с Objective-C.
Insights – новая фича Reveal
Первый крупный релиз Reveal за долгое время. Основная фича – Insights. Это набор из 130 инспекций, которые проактивно подсвечивают различные потенциальные проблемы с версткой и accessibility в приложении.
Первый крупный релиз Reveal за долгое время. Основная фича – Insights. Это набор из 130 инспекций, которые проактивно подсвечивают различные потенциальные проблемы с версткой и accessibility в приложении.
История переезда Spotify на Bazel
🤔Дано:
- 200 iOS разработчиков в 120 командах
- 3 миллиона строк кода только в тестах
- Рост кодовой базы на 30% каждый год
- 80 минут ожидания сборки и прогона тестов на PR
После того, как Spotify перевел все приложение на сборку через Bazel, время ожидания сборки упало в 4 раза, до 20 минут. В статье подробно рассказывается их история миграции: начиная от бесшовной замены xcodebuild на Bazel, заканчивая его интеграцией с IDE.
🤔Дано:
- 200 iOS разработчиков в 120 командах
- 3 миллиона строк кода только в тестах
- Рост кодовой базы на 30% каждый год
- 80 минут ожидания сборки и прогона тестов на PR
После того, как Spotify перевел все приложение на сборку через Bazel, время ожидания сборки упало в 4 раза, до 20 минут. В статье подробно рассказывается их история миграции: начиная от бесшовной замены xcodebuild на Bazel, заканчивая его интеграцией с IDE.
Гайд по работе с make
Короткий гайд для тех, кто совсем ничего не знает про make. Автор использует его на примере скрипта настройки окружения для нового iOS проекта.
Короткий гайд для тех, кто совсем ничего не знает про make. Автор использует его на примере скрипта настройки окружения для нового iOS проекта.
Запуск локальной LLM на iOS
LLaMA.cpp – проект для инференса различных LLM на девайсах. Основная проблема с запуском его на iOS – ограничения по памяти. В статье разбирается, как можно квантовать модель таким образом, чтобы не ухудшить ее точность, попасть в лимиты памяти и запустить ее локально.
LLaMA.cpp – проект для инференса различных LLM на девайсах. Основная проблема с запуском его на iOS – ограничения по памяти. В статье разбирается, как можно квантовать модель таким образом, чтобы не ухудшить ее точность, попасть в лимиты памяти и запустить ее локально.
Хабр
LLaMA 2, RWKV, Santacoder и другие LLM на iOS
Однажды я решил изучить язык Swift и разработать свое первое приложение для iOS. Для этого я решил создать реальный проект, который заключался в оптимизации нашумевшего LLaMA.cpp...
Демон, который чинит проблемы с потреблением CPU симуляторов Xcode 15
В симуляторах Xcode 15 есть проблема. При прогоне тестов запускаются процессы, которые могут нагрузить несколько ядер CPU на 100%, и, как результат, значительно увеличить время на их прогон.
Yeetd – простой демон, который отслеживает такие процессы и убивает их. Костыль, но может помочь до исправления корневой проблемы.
В симуляторах Xcode 15 есть проблема. При прогоне тестов запускаются процессы, которые могут нагрузить несколько ядер CPU на 100%, и, как результат, значительно увеличить время на их прогон.
Yeetd – простой демон, который отслеживает такие процессы и убивает их. Костыль, но может помочь до исправления корневой проблемы.
GitHub
GitHub - biscuitehh/yeetd: yeetd is a lil' daemon that watches for specific CPU-intensive Simulator processes and stops them in…
yeetd is a lil' daemon that watches for specific CPU-intensive Simulator processes and stops them in their tracks! - biscuitehh/yeetd
Все возможности #Preview макроса
👉Можно использовать как со SwiftUI, так и с UIKit.
👉Если вы хотите сгенерировать несколько превью, макрос можно использовать сколько угодно раз.
👉Чтобы проще отличать превью друг от друга, в макрос можно передать название конкретного превью.
👉Начиная с iOS 17, макросу можно передать еще и параметр, определяющий размер и поворот экрана.
👉Превью можно использовать и с виджетами.
👉Можно использовать как со SwiftUI, так и с UIKit.
👉Если вы хотите сгенерировать несколько превью, макрос можно использовать сколько угодно раз.
👉Чтобы проще отличать превью друг от друга, в макрос можно передать название конкретного превью.
👉Начиная с iOS 17, макросу можно передать еще и параметр, определяющий размер и поворот экрана.
👉Превью можно использовать и с виджетами.
Метрики в Push Notifications Console
В Push Notifications Console завезли метрики для пушей, отправленных в продакшне через APNs. С их помощью можно понять, были ли ваши пуши доставлены до пользователя, отменены, или отложены для более поздней отправки. Подробнее тут.
В Push Notifications Console завезли метрики для пушей, отправленных в продакшне через APNs. С их помощью можно понять, были ли ваши пуши доставлены до пользователя, отменены, или отложены для более поздней отправки. Подробнее тут.
Apple
New delivery metrics now available in the Push Notifications Console - Latest News - Apple Developer
The Push Notifications Console now includes metrics for notifications sent in production through the Apple Push Notification service (APNs). With the console’s intuitive interface, you’ll get an aggregated view of delivery statuses and insights into various…
Советы по жизни со SwiftSyntax
Пару месяцев назад я постил обсуждение со Swift Forums про то, что SwiftSyntax, зависимость на который неизбежна при использовании макросов, существенно замедляет сборку и усложняет менеджмент версий ваших зависимостей. В статье от Pointfree дается несколько советов по тому, как эти проблемы можно минимизировать. Статья в первую очередь ориентирована на авторов библиотек, но помочь может и разработчикам приложений.
Пару месяцев назад я постил обсуждение со Swift Forums про то, что SwiftSyntax, зависимость на который неизбежна при использовании макросов, существенно замедляет сборку и усложняет менеджмент версий ваших зависимостей. В статье от Pointfree дается несколько советов по тому, как эти проблемы можно минимизировать. Статья в первую очередь ориентирована на авторов библиотек, но помочь может и разработчикам приложений.
www.pointfree.co
Being a good citizen in the land of SwiftSyntax
How can you be a good citizen in the new world of SwiftSyntax proliferation? Follow our advice to keep the greater Swift ecosystem healthy and thriving.
Fastlane переезжает в Mobile Native Foundation
В феврале я рассказывал про историю вокруг Fastlane. Если кратко, то по историческим причинам права на репозиторий принадлежали Google, который был совсем не заинтересован в развитии проекта. Так вот, все наконец-то закрутилось. Google согласился передать владение проектом в Mobile Native Foundation, который уже хостит несколько интересных вещей. Для Fastlane это в первую очередь развязывает руки для того, чтобы начать собирать донаты и гранты на оплату мейнтейнеров.
В феврале я рассказывал про историю вокруг Fastlane. Если кратко, то по историческим причинам права на репозиторий принадлежали Google, который был совсем не заинтересован в развитии проекта. Так вот, все наконец-то закрутилось. Google согласился передать владение проектом в Mobile Native Foundation, который уже хостит несколько интересных вещей. Для Fastlane это в первую очередь развязывает руки для того, чтобы начать собирать донаты и гранты на оплату мейнтейнеров.
GitHub
Moving fastlane to MNF · MobileNativeFoundation/discussions · Discussion #194
fastlane is currently being ignored by Google, yet still on their GitHub. That makes sponsoring difficult and also adding new maintainers. It is an extremely widely used project and the MNF seems l...