iOS Dev
7.61K subscribers
988 photos
79 videos
1 file
1.14K links
🍏Канал об iOS-разработке, необычных подходах и решениях.
👨‍💻Автор: Виктор Грушевский (@Viktorianec)
Темы:
⭐️ Подготовка к собеседованиям.
⭐️ Архитектуры и алгоритмы.
⭐️ Код. Много кода.

⚒️База знаний: https://boosty.to/ios_dev

#ios #mobile #swift
加入频道
iOS Dev
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
Please open Telegram to view this post
VIEW IN TELEGRAM
Гайд по работе со SwiftUI Alert + примеры

Работа с алертами в SwiftUI немного отличается от привычного способа в UIKit (но это не означает, что этот процесс сложнее).

📖 В несложном туториале разобраны примеры показа обычных алертов, обработки действий и добавления локализации.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Где Swift Assist 😡

Вышедший буквально вчера отчёт от The Information раскрыл много деталей касаемо Apple Intelligence в целом (и затронул множество деталей разработки внутри компании).

Оказывается, что практически ничего из того, что было показано на прошлом WWDC, не было реализовано.

Например, фича, когда Siri получала доступ почте пользователя и отображение перелёта в режиме реального времени - была фактически фиктивной.

🎆 Демонстрация стала неожиданностью даже для разработчиков Siri, которые никогда не видели рабочих версий этих функций.

Ах да, вот забавный сайт с состоянием доступности Swift Assist.

Получается, ждём WWDC25, где шутка перестанет быть шуткой?

😃 iOS Dev
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
Please open Telegram to view this post
VIEW IN TELEGRAM
Основная функция приложения

В погоне за бизнесовыми метриками, прибылью и таргетом на постоянный рост иногда кажется, что команды, а иногда и целые компании упускают нить такого важной и понятной истории как основная фича.

В музыке - это прослушивание чёртовых песен или подкастов.
В такси - как доехать из точки А в точку Б.
В мессенджерах - разговор с друзьями или чтение каналов.

К сожалению, эта тенденция сейчас проецируется и накрывает веером целые секторы, области приложений.

Суперприложения?

Как быть с размером таких приложений, когда на старте иногда может литься несколько метров трафика? Когда стартовый экран представляет собой бесконечный шиммер (не всегда эффективный и часто написанный с ошибками проверки нагрузки и финиша анимации).

Я намеренно умалчиваю возможные проседания по производительности, да и длительность запросов к серверу иногда вызывает вопросы.

Время запуска всегда должно быть приоритетной метрикой. Но вместо того, чтобы закрывать это фичей (фичей ли) с вибрацией, как у Кинопоиска - может быть стоит подумать, как сократить нагрузку? Ну и ведь есть простые советы.

Даже телеграм с последними фичами (и вы ведь помните теглайн No ads - навсегда), в последнее время всё чаще проваливается в яму сложностей не только с экспоненциальным ростом базы пользователей, но и с производительностью.

В одном из последних обновлений была проблема со скруглениями аватаров, вечные сложности с прочтением сообщений и каунтеров (что является особенностью всех больших мессенджеров из-за потенциально большого количества сессией, особенности работы APNS, подтверждения прочтений). А ещё есть несвоевременная отправка по расписанию, пролаги в новой (но прибыльной фиче) с подарками и так далее.

Наша с вами цель — упрощать жизнь пользователей и использовать технологии во благо.

А не встраивать ещё одну рекламу, чтобы посмотреть рекламу.

Моя волна в яндекс.музыке - пример того, как комбинацию рекомендательных технологий и упрощение взаимодействия можно использовать во благо. Spotify к этому так и не пришёл.

Всегда должна быть возможность простого сценария.

😃 iOS Dev
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
Please open Telegram to view this post
VIEW IN TELEGRAM
Использование ключевого слова Swift defer в контексте async

ℹ️ Про defer (в том числе с примерами использования) в канале был пост ранее.

И несмотря на то, что изначально это не всегда кажется полезным, при написании современного Swift-кода использование defer может быть оправдано.

Например, когда есть несколько потенциальных точек выхода внутри наших функций и замыканий - и особенно при написании кода, в котором юзаем throws или при использовании async/await.

📖 В этой статье разобрано несколько таких случаев (от соединения с базой данных до выполнения задач по загрузке инфы).

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Акторы в Swift - для чего они вообще нужны?

Актор — это ссылочный* тип, подобный классу, созданный для безопасного управления изменчивым состоянием в многопоточной среде.

Введенные в Swift 5.5, акторы помогают разработчикам писать потокобезопасный, и что не менее важно, предсказуемый код при работе с асинхронными задачами.

📖 В этом материале можно узнать, чем же они отличаются от классов, как (и когда) их использовать, а ещё можно посмотреть простую реализацию чат-сервера и другие примеры.

* Разбор value и reference type c подборкой вопросов есть тут: 💰 Boosty💬 Telegram.

А в канале можно ещё раз освежить знания с помощью глоссария Swift Concurrency.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Swift Play Experimental — новый проект от Apple

🛠В репе эпла появился новый интересный инструмент (который можно юзать и для изучения, и для тренировки, и для тестирования кода).

Прототип состоит из:

- Новый макрос #Playground - с его помощью можно определять исполняемые блоки кода в любом Swift-файле.
- Новая команда swift play - можно использовать для автоматического повторного запуска при любых изменениях исходного кода.
- API Playgrounds для конкретных инструментов, позволяющий любому инструменту или IDE добавить поддержку поиска и запуска экземпляров #Playground (как и реализовано для swift play).

📖 Описание и примеры использования вот тут.

ℹ️ В настоящее время реализация считается экспериментальной и пока не рекомендована для широкого использования в продакшне, но автор все равно рекомендует попробовать.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Гонки данных в iOS: определение, причины возникновения и способы решения на практических примерах

В канале и закрытой базе данных я регулярно делюсь не только кейсами, которые могут возникать в разработке и их решениями.

Одна из самых популярных проблем — гонки данных, которые встречаются даже в популярных продуктах.

Они возникают, когда встречается несколько обращений к одной и той же области памяти, при условии, что по крайней мере один из этих доступов — запись.

Без правильной синхронизации это может привести к непредсказуемому поведению, сбоям приложения или невалидности данных.

В iOS IQ я добавил несколько типичных примеров, когда можно столкнуться с таким поведением и привёл варианты решения (не только для DispatchQueue, но и для Swift Concurrency с акторами).

А ещё можно увидеть полезную (и понятную) реализацию для работы с кэшем.

Новый раздел в разборе полётов уже можно найти 💰 в бусти и ⭐️ прямо здесь.

📖 Кстати, в канале можно почитать и про Thread Sanitizer, и про то, для чего ещё нужны акторы.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Как бы вы оценили удобство работы с Xcode?
Anonymous Poll
7%
1
9%
2
31%
3
35%
4
18%
5
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Робокафе в Токио: новый способ удаленной работы, доступность и аватары

Первое, что написано на вывеске - это не AI, как может показаться на первый взгляд.

OriHime это технология, с помощью которой люди, которые не могут физически присутствовать на работе, получают возможность участвовать в любых социальных процессах удаленно.

🙌🏻 Самими аватарами пилоты могут управлять, используя свои глаза, что позволяет работать даже парализованным людям (но одно из требований - знать японский).

В самом кафе порядка 20 аватаров, каждым из которых управляет человек. И в такие моменты стоит помнить, что одним AI всех проблем не решить.

Это понимал и создатель кафе Кентаро Йошифудзи с весьма интересной биографией. Например, в 2012 году он получил премию за создание робота-аватара для борьбы с одиночеством (чувствуете параллель с фильмом Она?).

И поначалу кафе, которое было экспериментальным и которое планировалось закрыть, вот уже два года функционирует и переосмысливает значение термина доступность.

За символическую плату в 1800 йен с человека вы можете посетить его (и даже тут будет включен напиток, можно алкологольный, можно другой), а затем поговорить с одним из операторов.

Например, мы общались с девушкой-оператором, которая прекрасно говорит на английском языке, играет в теннис и живет рядом с Токио.

За такими технологиями будущее. Ведь даже в Японии 2.5 процента сотрудников в крупных и не только компаниях должны быть с ОВЗ. И это настоящая доступность.

📍 Локация: Токио, кафе Dawn.

📸 Больше фото в комментариях.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Производительность и оптимизация памяти на примере компании Capcom

Продолжая путешествие по Японии и пытаясь поймать лучшие кадры, случайно наткнулся на выставку в Осаке, посвященную компании Capcom (street fighter, monster hunter, resident evil и многие другие).

Так вот, хотя в анонсе были описаны только эпохи развития, внутри было несколько любопытных моментов, посвященных секретам при разработке.

Например, вот как реализовывали прозрачность в первых играх, всего три хитрых способа: через моргание, диттеринг - чередование пикселей значимых и незначимых, и третий - просто через изменение цветов изображения.

Но кроме этого множество проблем было и с памятью ( и ОЗУ, и ROM). Например, вы все знаете, что для анимаций используются спрайты. Так вот, после того, как дизайнеры завершали свой этап работы, вместе с разработчиками они выпиливали лишние уже на финальном этапе. А про то, как работали с ROM, есть кайфовая статья, где описывали, как определяли доступный обьем с помощью бумаги и ножниц.

Кроме этого, на выставке можно посмотреть, как работает motion capture, а в отдельном секторе как работать с масками.

Если вы будете до 6 июня в Осаке, то рекомендую обратить внимание на выставку не только фанатам любой из серий игр выше, но и тем, кто интересуется историей программирования в целом.

📍 Локация: Осака, музей искусства NAKKA.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Николас Рефн и Хидео Кодзима: геймдев, кино и «Satellites»

Одной из последних точек интереса в Токио для меня была выставка двух мастеров, которые с помощью разных языков, стилей и жанров попробовали обсудить дружбу и технологии в философской стилистике.

На пятом этаже в Prada Aoyama можно познакомиться с необычным проектом на стыке игровой индустрии, кинематографа и коктейлем технологий (от древних, но в то же время футуристических телевизоров до записей на кассетах, сгенеренных с помощью искусственного интеллекта).

В заголовке я неспроста не стал переводить satellites, так как в этом заключается суть – не только в трудностях перевода (кстати, прекрасный фильм), но и в понимании разных жанров и попытке объединить разные культуры. И к этой связи можно найти отсылки и в death stranding с ее сложными социальными проблемами, и в драйве Рефна, где суть совсем не в гонках.

🧩 С помощью кассет можно собрать собственную картину происходящего (кстати, среди языков можно найти и русский). Ведь связь может быть даже в несовместимых на первый взгляд технологиях.

Из приятного: можно оставить пару кассет себе.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Swift Regex — инструмент для проверки регулярных выражений

Недавно полезный инструмент от Кишикавы Кацуми получил кайфовое обновление в виде дебаггера, теперь можно чекать, что происходит при поиске шаг за шагом.

🛠 Сам инструмент доступен здесь.

А исходный код можно посмотреть на GitHub (и внести собственный вклад при желании): репозиторий.

Кстати, на прошедшей конфе в Токио Кишикава делился, как можно запилить собственный небольшой движок regex в Swift, сосредоточившись на трех фундаментальных операциях: конкатенации, чередовании и повторении.

📋 Слайды с презентации также доступны (как и код примера).

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM