Как на самом деле работает Swift Concurrency
📖 Виталий Батраков в своём блоге рассказывает о том, что такое асинхронные функции, как создавать и работать с Task и не только.
Например, в статье разбираются Default concurrent/Serial/Main executors и как именно они формируют общую картину.
🔗 Напомню, в канале есть и глоссарий по Swift Concurrency.
Кстати, здесь можно проверить свои силы в вопросах на примерах кода (в приложении часть из них тоже есть).
😃 iOS Dev
📖 Виталий Батраков в своём блоге рассказывает о том, что такое асинхронные функции, как создавать и работать с Task и не только.
Например, в статье разбираются Default concurrent/Serial/Main executors и как именно они формируют общую картину.
Кстати, здесь можно проверить свои силы в вопросах на примерах кода (в приложении часть из них тоже есть).
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Работа с модификатором task в SwiftUI: примеры, особенности, приоритеты
➡️ Модификатор task можно использовать в качестве инструмента для выполнения асинхронного кода.
Как рекомендует автор следующего материала, стоит задуматься о применении этого модификатора в частности для случаев, когда есть комбинация отдельных блоков
📖 В этой статье рассмотрены различные опции использования task в реальном проекте.
🛠 А вот тут можно посмотреть на этот проект.
😃 iOS Dev
Как рекомендует автор следующего материала, стоит задуматься о применении этого модификатора в частности для случаев, когда есть комбинация отдельных блоков
onAppear
и Task
.📖 В этой статье рассмотрены различные опции использования task в реальном проекте.
🛠 А вот тут можно посмотреть на этот проект.
Please open Telegram to view this post
VIEW IN TELEGRAM
SharingGRDB — альтернатива для SwiftData от авторов Point-Free
По факту это слияние либы Sharing и GRDB.swift (от Гвендаля Руэ), в котором есть целый набор инструментов, которые могут заменить многие сценарии использования SwiftData.
SharingGRDB даёт прямой доступ к базовому SQLite (включая джойны, aggregate-запросы и многое другое).
📖 Документация и примеры запросов.
Примеры проектов:
1️⃣ Case Studies - примеры, показывающие фичи либы.
2️⃣ SyncUps - по факту ребилд приложения Scrumdinger от Apple.
3️⃣ Reminders - приложение с напоминаниями, списками и тегами.
🔗 Ссылка на репозиторий.
😃 iOS Dev
По факту это слияние либы Sharing и GRDB.swift (от Гвендаля Руэ), в котором есть целый набор инструментов, которые могут заменить многие сценарии использования SwiftData.
SharingGRDB даёт прямой доступ к базовому SQLite (включая джойны, aggregate-запросы и многое другое).
📖 Документация и примеры запросов.
Примеры проектов:
1️⃣ Case Studies - примеры, показывающие фичи либы.
2️⃣ SyncUps - по факту ребилд приложения Scrumdinger от Apple.
3️⃣ Reminders - приложение с напоминаниями, списками и тегами.
Please open Telegram to view this post
VIEW IN TELEGRAM
Гайд по работе со SwiftUI Alert + примеры
Работа с алертами в SwiftUI немного отличается от привычного способа в UIKit (но это не означает, что этот процесс сложнее).
📖 В несложном туториале разобраны примеры показа обычных алертов, обработки действий и добавления локализации.
😃 iOS Dev
Работа с алертами в SwiftUI немного отличается от привычного способа в UIKit (но это не означает, что этот процесс сложнее).
📖 В несложном туториале разобраны примеры показа обычных алертов, обработки действий и добавления локализации.
Please open Telegram to view this post
VIEW IN TELEGRAM
Где Swift Assist 😡
Вышедший буквально вчера отчёт от The Information раскрыл много деталей касаемо Apple Intelligence в целом (и затронул множество деталей разработки внутри компании).
Оказывается, что практически ничего из того, что было показано на прошлом WWDC, не было реализовано.
Например, фича, когда Siri получала доступ почте пользователя и отображение перелёта в режиме реального времени - была фактически фиктивной.
🎆 Демонстрация стала неожиданностью даже для разработчиков Siri, которые никогда не видели рабочих версий этих функций.
Ах да, вот забавный сайт с состоянием доступности Swift Assist.
Получается, ждём WWDC25, где шутка перестанет быть шуткой?
😃 iOS Dev
Вышедший буквально вчера отчёт от The Information раскрыл много деталей касаемо Apple Intelligence в целом (и затронул множество деталей разработки внутри компании).
Оказывается, что практически ничего из того, что было показано на прошлом WWDC, не было реализовано.
Например, фича, когда Siri получала доступ почте пользователя и отображение перелёта в режиме реального времени - была фактически фиктивной.
Ах да, вот забавный сайт с состоянием доступности Swift Assist.
Получается, ждём WWDC25, где шутка перестанет быть шуткой?
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Futuristic movement - шейдер имитации движения в космосе
Иногда я нахожу интересные алгоритмы или подходы к необычным вещам. Конечно, повседневными их не назовёшь, но ряд любопытных моментов всегда можно прокачать.
🧑💻 В iOS IQ используется один из стилистически связанных warp-эффектов (статья есть и в открытом доступе), а в этот раз делюсь реализацией для движения с искривлением в пространстве.
Вы могли видеть разные вариации использования во многих фильмах 📺.
Впрочем, можете и сами попробовать написать на Swift (видос на шаттерстоке за 200 евро и неплохой способ на shadertoy).
🛠 Код на SwiftUI + Metal уже доступен для читателей:💰 в бусти и ⭐️ в телеграм.
😃 iOS Dev
Иногда я нахожу интересные алгоритмы или подходы к необычным вещам. Конечно, повседневными их не назовёшь, но ряд любопытных моментов всегда можно прокачать.
Вы могли видеть разные вариации использования во многих фильмах 📺.
Впрочем, можете и сами попробовать написать на Swift (видос на шаттерстоке за 200 евро и неплохой способ на shadertoy).
🛠 Код на SwiftUI + Metal уже доступен для читателей:
Please open Telegram to view this post
VIEW IN TELEGRAM
Основная функция приложения
В погоне за бизнесовыми метриками, прибылью и таргетом на постоянный рост иногда кажется, что команды, а иногда и целые компании упускают нить такого важной и понятной истории как основная фича.
В музыке - это прослушивание чёртовых песен или подкастов.
В такси - как доехать из точки А в точку Б.
В мессенджерах - разговор с друзьями или чтение каналов.
К сожалению, эта тенденция сейчас проецируется и накрывает веером целые секторы, области приложений.
Суперприложения?
Как быть с размером таких приложений, когда на старте иногда может литься несколько метров трафика? Когда стартовый экран представляет собой бесконечный шиммер (не всегда эффективный и часто написанный с ошибками проверки нагрузки и финиша анимации).
Я намеренно умалчиваю возможные проседания по производительности, да и длительность запросов к серверу иногда вызывает вопросы.
Время запуска всегда должно быть приоритетной метрикой. Но вместо того, чтобы закрывать это фичей (фичей ли) с вибрацией, как у Кинопоиска - может быть стоит подумать, как сократить нагрузку? Ну и ведь есть простые советы.
Даже телеграм с последними фичами (и вы ведь помните теглайн No ads - навсегда), в последнее время всё чаще проваливается в яму сложностей не только с экспоненциальным ростом базы пользователей, но и с производительностью.
В одном из последних обновлений была проблема со скруглениями аватаров, вечные сложности с прочтением сообщений и каунтеров (что является особенностью всех больших мессенджеров из-за потенциально большого количества сессией, особенности работы APNS, подтверждения прочтений). А ещё есть несвоевременная отправка по расписанию, пролаги в новой (но прибыльной фиче) с подарками и так далее.
Наша с вами цель — упрощать жизнь пользователей и использовать технологии во благо.
А не встраивать ещё одну рекламу, чтобы посмотреть рекламу.
Моя волна в яндекс.музыке - пример того, как комбинацию рекомендательных технологий и упрощение взаимодействия можно использовать во благо. Spotify к этому так и не пришёл.
Всегда должна быть возможность простого сценария.
😃 iOS Dev
В погоне за бизнесовыми метриками, прибылью и таргетом на постоянный рост иногда кажется, что команды, а иногда и целые компании упускают нить такого важной и понятной истории как основная фича.
В музыке - это прослушивание чёртовых песен или подкастов.
В такси - как доехать из точки А в точку Б.
В мессенджерах - разговор с друзьями или чтение каналов.
К сожалению, эта тенденция сейчас проецируется и накрывает веером целые секторы, области приложений.
Суперприложения?
Как быть с размером таких приложений, когда на старте иногда может литься несколько метров трафика? Когда стартовый экран представляет собой бесконечный шиммер (не всегда эффективный и часто написанный с ошибками проверки нагрузки и финиша анимации).
Я намеренно умалчиваю возможные проседания по производительности, да и длительность запросов к серверу иногда вызывает вопросы.
Время запуска всегда должно быть приоритетной метрикой. Но вместо того, чтобы закрывать это фичей (фичей ли) с вибрацией, как у Кинопоиска - может быть стоит подумать, как сократить нагрузку? Ну и ведь есть простые советы.
Даже телеграм с последними фичами (и вы ведь помните теглайн No ads - навсегда), в последнее время всё чаще проваливается в яму сложностей не только с экспоненциальным ростом базы пользователей, но и с производительностью.
В одном из последних обновлений была проблема со скруглениями аватаров, вечные сложности с прочтением сообщений и каунтеров (что является особенностью всех больших мессенджеров из-за потенциально большого количества сессией, особенности работы APNS, подтверждения прочтений). А ещё есть несвоевременная отправка по расписанию, пролаги в новой (но прибыльной фиче) с подарками и так далее.
Наша с вами цель — упрощать жизнь пользователей и использовать технологии во благо.
А не встраивать ещё одну рекламу, чтобы посмотреть рекламу.
Моя волна в яндекс.музыке - пример того, как комбинацию рекомендательных технологий и упрощение взаимодействия можно использовать во благо. Spotify к этому так и не пришёл.
Всегда должна быть возможность простого сценария.
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Приложение для тренировок для WatchOS с HealthKit + SwiftUI
Каждый, кто хоть раз пробовал делать приложение для часов, представляет, какие проблемы могут возникнуть даже на стадии соединения (не шутка).
Получасовые подключения и копирование символов, потеря аттача в рандомные моменты, ограничения по фичам и так далее.
В своё время в телеге даже был рекордный приз для мобил именно в контесте для Watch OS (вроде около $20 000 за первое место).
Об этом я знаю не просто так, часто пилю виджеты и standalone приложения + консультировал в своё время небольшой стартап при реализации кастомного протокола для работы с часами.
Поэтому каждый пример завершённого (или доведённого до логической отсечки) приложения - это довольно ценная информация.
Например, для тренировок Strava сейчас едва ли не монополист (но может вы знаете и другие приложения).
В проекте ниже 0Itsuki0 делится своим опытом для трека воркаутов:
1️⃣ SwiftUI: простое приложение для тренировок с HealthKit (часть 1)
2️⃣ SwiftUI: чтение данных из HealthKit
3️⃣ SwiftUI: разделение тренировки на составляющие
🛠 Сам проект доступен на GitHub.
😃 iOS Dev
Каждый, кто хоть раз пробовал делать приложение для часов, представляет, какие проблемы могут возникнуть даже на стадии соединения (не шутка).
Получасовые подключения и копирование символов, потеря аттача в рандомные моменты, ограничения по фичам и так далее.
В своё время в телеге даже был рекордный приз для мобил именно в контесте для Watch OS (вроде около $20 000 за первое место).
Об этом я знаю не просто так, часто пилю виджеты и standalone приложения + консультировал в своё время небольшой стартап при реализации кастомного протокола для работы с часами.
Поэтому каждый пример завершённого (или доведённого до логической отсечки) приложения - это довольно ценная информация.
Например, для тренировок Strava сейчас едва ли не монополист (но может вы знаете и другие приложения).
В проекте ниже 0Itsuki0 делится своим опытом для трека воркаутов:
1️⃣ SwiftUI: простое приложение для тренировок с HealthKit (часть 1)
2️⃣ SwiftUI: чтение данных из HealthKit
3️⃣ SwiftUI: разделение тренировки на составляющие
🛠 Сам проект доступен на GitHub.
Please open Telegram to view this post
VIEW IN TELEGRAM
Какой у вас формат работы?
Anonymous Poll
10%
Только офис
26%
Гибридный график (частично офис, частично удалёнка)
63%
Полная удалёнка
Использование ключевого слова Swift defer в контексте async
ℹ️ Про
И несмотря на то, что изначально это не всегда кажется полезным, при написании современного Swift-кода использование defer может быть оправдано.
Например, когда есть несколько потенциальных точек выхода внутри наших функций и замыканий - и особенно при написании кода, в котором юзаем
📖 В этой статье разобрано несколько таких случаев (от соединения с базой данных до выполнения задач по загрузке инфы).
😃 iOS Dev
defer
(в том числе с примерами использования) в канале был пост ранее.И несмотря на то, что изначально это не всегда кажется полезным, при написании современного Swift-кода использование defer может быть оправдано.
Например, когда есть несколько потенциальных точек выхода внутри наших функций и замыканий - и особенно при написании кода, в котором юзаем
throws
или при использовании async/await
.📖 В этой статье разобрано несколько таких случаев (от соединения с базой данных до выполнения задач по загрузке инфы).
Please open Telegram to view this post
VIEW IN TELEGRAM
Акторы в Swift - для чего они вообще нужны?
Актор — это ссылочный* тип, подобный классу, созданный для безопасного управления изменчивым состоянием в многопоточной среде.
Введенные в Swift 5.5, акторы помогают разработчикам писать потокобезопасный, и что не менее важно, предсказуемый код при работе с асинхронными задачами.
📖 В этом материале можно узнать, чем же они отличаются от классов, как (и когда) их использовать, а ещё можно посмотреть простую реализацию чат-сервера и другие примеры.
* Разбор value и reference type c подборкой вопросов есть тут:💰 Boosty • 💬 Telegram.
А в канале можно ещё раз освежить знания с помощью глоссария Swift Concurrency.
😃 iOS Dev
Актор — это ссылочный* тип, подобный классу, созданный для безопасного управления изменчивым состоянием в многопоточной среде.
Введенные в Swift 5.5, акторы помогают разработчикам писать потокобезопасный, и что не менее важно, предсказуемый код при работе с асинхронными задачами.
📖 В этом материале можно узнать, чем же они отличаются от классов, как (и когда) их использовать, а ещё можно посмотреть простую реализацию чат-сервера и другие примеры.
* Разбор value и reference type c подборкой вопросов есть тут:
А в канале можно ещё раз освежить знания с помощью глоссария Swift Concurrency.
Please open Telegram to view this post
VIEW IN TELEGRAM