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

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

#ios #mobile #swift
加入频道
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
This media is not supported in your browser
VIEW IN TELEGRAM
Что под капотом у ИИ?

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

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

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

И если сейчас современное общество невозможно представить без интернета, то возможно в скором времени к арсеналу инструментов добавится и подписка на ИИ-помощников.

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

При этом полезно понимать как LLM вообще работает с запросами.

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

Дэн Кларк, Сэм Лирнер, Ирен де ла Торре Аренас, Сэм Джойнер, Ид Хемингуэй и Оливер Хокинс проделали мощную работу по визуализации и выкатили целую статью про вышеперечисленные аспекты.

📖 Почитать (и посмотреть) можно тут: Что такое генеративный ИИ.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
❗️ Первый пример предупреждения о внешних покупках в iOS-приложении

Недавно Apple проиграли суд, после которого приложениям в США было разрешено использовать внешние покупки в приложении.

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

Кроме плашки с надписью сверху рядом с кнопкой скачивания также добавили тег external purchases.

Это предупреждение есть и на iOS, и в веб-версии.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Airbnb представил альтернативу Lottie - новый медиаформат Lava

Рамон Фрич анонсировал, что новый формат обеспечивает прозрачность и возможность использования на вебе/iOS/Android.

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

🎆 Демки с анимациями можно посмотреть здесь и здесь (пока не в опенсорсе).

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Отслеживание и контроль размера приложения с помощью Tuist

Новые фичи, дополнительные ассеты и постоянно увеличивающаяся кодовая база — всё это ведёт к росту размера приложения.

Новая фича tuist позволяет находить дублирование ассетов, неоптимизированные ресурсы, легаси-код и лишние зависимости.

📖 Подробнее можно почитать здесь (или посмотреть ролик тут).

Основная часть анализа выполняется локально с помощью новой либы Rosalind, а если юзать tuist inspect bundle с флагом --json, можно получить JSON-вывод прямиком из rosalind.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Как работать с FocusState: примеры для одного и нескольких полей ввода

Работа с текстовыми полями необходима при заполнении любого рода форм (от авторизации до инфы о пользователе).

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

Для этого пригодится @FocusState, который появился в 15 оси.

📖 В этом материале можно посмотреть на реальные примеры использования.

🛠 А здесь скачать пример проекта.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Универсальное руководство по Dependency Injection в модульном приложении

Pawel Kozielecki в своем блоге поднял важные вопросы. Например, как правильно управлять зависимостями и действительно ли DI обеспечит гибкость и масштабируемость в будущем.
И затронул непростую тему: как работать в многомодульном приложении и какие именно есть плюсы и минусы у различных паттернов DI.

Сам материал логически разбит на несколько блоков:

🔘 Почему вообще стоит рассматривать возможность использования DI в приложениях

🔘 Какие различные типы внедрения зависимостей существуют в Swift

🔘 Как мы можем внедрить DI в сложных многомодульных приложениях

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Комбинация жестов и анимаций в SwiftUI

Одним из типов взаимодействия пользователями с нашими приложениями являются жесты. И, конечно же, жесты можно использовать и для запуска анимаций.

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

Для обработки жестов в SwiftUI нам нужны соответствующие модификаторы.

📖 В этом материале разобрано несколько примеров (в том числе и с анимацией в виде волны).

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Джонни Айв + OpenAI = ?

Вчера OpenAI анонсировали покупку «секретного» стартапа бывшего главного дизайнера Apple (придумал форм-фактор для iPod, iPhone, iPad) за 6.5 млрд долларов.

Абсолютно очевидно, что речь может идти о целом семействе новых устройств.

На ваш взгляд, что это может быть? Очки или что-то вроде разработки Humane Pin?

💬 Поделитесь, какое устройство они могут придумать (или уже придумали), что бы вы хотели увидеть?

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Как использовать MetricKit в iOS для поиска причин и отладки крашей

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

Для устранения подобных ограничений Apple предлагает использовать MetricKit, который работает вне процесса приложения, собирая диагностику на системном уровне.

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

📖 В этой статье можно посмотреть на то, как в несколько шагов можно настроить MetricKit, примеры анализа репортов и создания собственной системы архивирования таких отчётов.

🔗 А в этом посте можно чекнуть, как инженеры в Uber используют MetricKit в своём приложении.

Напомню, что в закрытой базе (💰 в бусти и ⭐️ телеграм)я делюсь советами и шагами по повышению производительности в самых разных ситуациях.

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