Приготовил для вас сюрприз ❤️
🔨 Что, если бы Xcode показывал нам статистику по итогам года?
Или, например, мы знали, сколько крашей пофиксили?
☕️ А сколько минут собирались наши проекты?
🤩 Я представил эту альтернативную реальность в стиле Spotify (или других сервисов, как вам удобнее), и делюсь итогами года iOS-разработчика с вами!
😃 iOS Dev • 🐱 Доступ к алгоритмам
Или, например, мы знали, сколько крашей пофиксили?
☕️ А сколько минут собирались наши проекты?
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
AsyncStream на реальных примерах: работа с Apple Photos
🧑💻
Apple обычно показывает хорошие способы работы с асинхронным API, но иногда бывают моменты, которые моно улучшить.
Например, автор следующей статьи переосмыслил использование
📖 Вот тут можно посмотреть на этот подход и граничные кейсы.
😃 iOS Dev
AsyncStream
позволяет ожидать последовательность элементов, возвращая их, когда они будут готовы.Apple обычно показывает хорошие способы работы с асинхронным API, но иногда бывают моменты, которые моно улучшить.
Например, автор следующей статьи переосмыслил использование
PHAsset.fetchAssets
с помощью AsyncStream.📖 Вот тут можно посмотреть на этот подход и граничные кейсы.
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Создание прогресс-бара в ретро-стиле с использованием CALayers
Создание своих компонентов может быть увлекательно, но практически всегда сопряжено с рядом сложностей.
😎 Наверняка, каждый из нас проектировал и внедрял в проекты те или иные контролы, а некоторые и десятки раз.
Если вам нравится использовать
📖 В ней автор указывает на типичные проблемы, связанные с версткой, анимацией и рисованием, а также предлагает ряд интересных идей, которые могут помочь.
🛠 Окончательный вид и код проекта можно посмотреть здесь.
😃 iOS Dev
Создание своих компонентов может быть увлекательно, но практически всегда сопряжено с рядом сложностей.
Если вам нравится использовать
UIKit
, но вы все еще не знаете, как работать с CALayers
, эта статья будет вам полезна. 📖 В ней автор указывает на типичные проблемы, связанные с версткой, анимацией и рисованием, а также предлагает ряд интересных идей, которые могут помочь.
🛠 Окончательный вид и код проекта можно посмотреть здесь.
Please open Telegram to view this post
VIEW IN TELEGRAM
Удаление данных в SwiftData
Существует как минимум три способа удалить данные при использовании SwiftData.
📖 В этом обзоре рассматриваются эти варианты и неочевидные моменты.
Другие посты на тему:
1️⃣ Отслеживание изменений данных в SwiftData.
2️⃣ Архитектурный дизайн SwiftData и возможности миграции.
3️⃣ Вопросы и ответы про SwiftData и CoreData.
😃 iOS Dev
Существует как минимум три способа удалить данные при использовании SwiftData.
📖 В этом обзоре рассматриваются эти варианты и неочевидные моменты.
Другие посты на тему:
1️⃣ Отслеживание изменений данных в SwiftData.
2️⃣ Архитектурный дизайн SwiftData и возможности миграции.
3️⃣ Вопросы и ответы про SwiftData и CoreData.
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Игра «Жизнь» Конвея: реализация на Swift
Вообще, автомат Конвея, пожалуй, самый известный клеточный автомат первого порядка. Когда я был студентом при изучении плюсов одной из возможных курсовых была её реализация (вряд ли сейчас что-то кардинально изменилось при выборе тем).
👩🎓 Впервые она была описана в 1970 году британским математиком Джоном Конвеем и обладала следующими правилами:
1️⃣ Любая живая клетка с менее чем двумя живыми соседями погибает, как при недонаселении.
2️⃣ Любая живая клетка с двумя или тремя живыми соседями продолжает жить в следующем поколении.
3️⃣ Любая живая клетка с более чем тремя живыми соседями умирает, как при перенаселении.
4️⃣ Любая мертвая клетка с ровно тремя живыми соседями становится живой клеткой, как при размножении.
Как видите, правила довольно понятны и логичны.
📖 А вот тут автор даже реализовал этот алгоритм на Swift. И хотя он сам сообщает, что можно прокачать игру, например, добавив стартовые шаблоны или механизм для изменения скорости, посмотреть точно есть на что.
📖 И, к слову, если вы хотите узнать больше, и углубиться в вариации, то в мощнейшей статье с хабра можно почитать, что будет, если соединить клеточные автоматы с генетическим алгоритмом.
😃 iOS Dev
Вообще, автомат Конвея, пожалуй, самый известный клеточный автомат первого порядка. Когда я был студентом при изучении плюсов одной из возможных курсовых была её реализация (вряд ли сейчас что-то кардинально изменилось при выборе тем).
1️⃣ Любая живая клетка с менее чем двумя живыми соседями погибает, как при недонаселении.
2️⃣ Любая живая клетка с двумя или тремя живыми соседями продолжает жить в следующем поколении.
3️⃣ Любая живая клетка с более чем тремя живыми соседями умирает, как при перенаселении.
4️⃣ Любая мертвая клетка с ровно тремя живыми соседями становится живой клеткой, как при размножении.
Как видите, правила довольно понятны и логичны.
📖 А вот тут автор даже реализовал этот алгоритм на Swift. И хотя он сам сообщает, что можно прокачать игру, например, добавив стартовые шаблоны или механизм для изменения скорости, посмотреть точно есть на что.
📖 И, к слову, если вы хотите узнать больше, и углубиться в вариации, то в мощнейшей статье с хабра можно почитать, что будет, если соединить клеточные автоматы с генетическим алгоритмом.
Please open Telegram to view this post
VIEW IN TELEGRAM
Основы Git для iOS-разработчиков
👨💻 Для начинающих разработчиков необходимо понимать принципы работы (даже если вы юзаете Tower или другой клиент).
На самом деле, конечно, не совсем корректно говорить только в контексте iOS.
📖 В этом посте хорошо объясняются на примерах основы git, после которых уже можно приступать и к более продвинутым действиям.
😃 iOS Dev
На самом деле, конечно, не совсем корректно говорить только в контексте iOS.
📖 В этом посте хорошо объясняются на примерах основы git, после которых уже можно приступать и к более продвинутым действиям.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Быть эффективным
Я скептически отношусь к мотивационным роликам, которые рассказывают о том, как без труда можно обойти фильтры HR.
Ошибка выжившего, с помощью которой манипулируют блогеры, становится путеводной звездой для ребят, которые ищут легкий путь.
Для меня это как снежный ком, который уже не только формируется, но и набирает обороты, катясь по склону и подминая под себя всех без разбора.
Как я уже говорил ранее на примере ChatGPT, упрощение на первый взгляд взаимодействия (или пропуска фильтров), приведет к более масштабным проблемам в будущем.
Уменьшение количества ответов на StackOverflow это вершина айсберга, недавно и The New York Times начала судиться с OpenAI.
И если на сегодня наши будущие коллеги довольны тем, что красиво обходят на вираже своих товарищей, то через несколько оборотов выше эта спираль начнет душить индустрию изнутри. И вполне возможно, что не только в компаниях уровня "Y" как когда-то ранее будут писать код на доске, или проходить 8 уровней собеседований, но и в других организациях, рангом ниже, будут жестче работать тиски техсобесов.
Конечно, алгоритмы это не серебряная пуля, в адекватных компаниях достаточно увидеть ход того, как вы решаете незнакомые вещи, как мыслите и как именно справляетесь при большом количестве неизвестных.
Будьте эффективнее, пишите код, изучайте теорию, формируйте фундамент.
Ни один художник не получил признания, только посещая выставки.
Ни один музыкант не стал новым Моцартом, послушав, как играют другие, и не сочинив своих композиций.
Также и ни один программист не станет архитектором, только прочитав «Банду четырёх» и не написав ни строчки кода.
😃 iOS Dev
Я скептически отношусь к мотивационным роликам, которые рассказывают о том, как без труда можно обойти фильтры HR.
Ошибка выжившего, с помощью которой манипулируют блогеры, становится путеводной звездой для ребят, которые ищут легкий путь.
Для меня это как снежный ком, который уже не только формируется, но и набирает обороты, катясь по склону и подминая под себя всех без разбора.
Как я уже говорил ранее на примере ChatGPT, упрощение на первый взгляд взаимодействия (или пропуска фильтров), приведет к более масштабным проблемам в будущем.
Уменьшение количества ответов на StackOverflow это вершина айсберга, недавно и The New York Times начала судиться с OpenAI.
И если на сегодня наши будущие коллеги довольны тем, что красиво обходят на вираже своих товарищей, то через несколько оборотов выше эта спираль начнет душить индустрию изнутри. И вполне возможно, что не только в компаниях уровня "Y" как когда-то ранее будут писать код на доске, или проходить 8 уровней собеседований, но и в других организациях, рангом ниже, будут жестче работать тиски техсобесов.
Конечно, алгоритмы это не серебряная пуля, в адекватных компаниях достаточно увидеть ход того, как вы решаете незнакомые вещи, как мыслите и как именно справляетесь при большом количестве неизвестных.
Будьте эффективнее, пишите код, изучайте теорию, формируйте фундамент.
Ни один художник не получил признания, только посещая выставки.
Ни один музыкант не стал новым Моцартом, послушав, как играют другие, и не сочинив своих композиций.
Также и ни один программист не станет архитектором, только прочитав «Банду четырёх» и не написав ни строчки кода.
Please open Telegram to view this post
VIEW IN TELEGRAM
Советы по повышению производительности
Поиск проблем производительности, пожалуй, одновременно одна из самых сложных и интересных составляющих нашей работы.
Это могут быть потенциальные сложности с анимацией, излишняя нагрузка на мэйнтрэд или излишнее обновление данных из-за проблем с реализацией кэша.
А для SwiftUI это могут быть и проблемы, связанные с лишними отрисовками.
Решение вопросов, связанных с нагрузкой на девайс, может быть профитно и для пользователей, и для профессионального развития.
Неплохой точкой отсчёта для поиска проблем с производительностью могут быть эти видео от Apple:
📺 Демистификация и устранение недочетов на этапе рендеринга.
📺 Поиск проблем с анимацией пользовательского интерфейса.
📺 Использование инструментов для поиска неполадок.
📖 А вот тут Martin Mitrevski приводит примеры, которые могут вызывать подобные проблемы, и указывает на возможные варианты решения.
😃 iOS Dev
Поиск проблем производительности, пожалуй, одновременно одна из самых сложных и интересных составляющих нашей работы.
Это могут быть потенциальные сложности с анимацией, излишняя нагрузка на мэйнтрэд или излишнее обновление данных из-за проблем с реализацией кэша.
А для SwiftUI это могут быть и проблемы, связанные с лишними отрисовками.
Решение вопросов, связанных с нагрузкой на девайс, может быть профитно и для пользователей, и для профессионального развития.
Неплохой точкой отсчёта для поиска проблем с производительностью могут быть эти видео от Apple:
📺 Демистификация и устранение недочетов на этапе рендеринга.
📺 Поиск проблем с анимацией пользовательского интерфейса.
📺 Использование инструментов для поиска неполадок.
📖 А вот тут Martin Mitrevski приводит примеры, которые могут вызывать подобные проблемы, и указывает на возможные варианты решения.
Please open Telegram to view this post
VIEW IN TELEGRAM
Чтение и запись пространственного видео с помощью AVFoundation
AVFoundation справляется с задачами чтения, записи и воспроизведения кадров, но процесс меняется при работе с пространственным видео (также известным как
Загрузка пространственного видео в
В iOS 17.2 и macOS 14.2 (и, кстати, новый Xcode уже в проде) появились новые API AVFoundation для работы с файлами MV-HEVC.
Они позволяют легко получить оба ракурса пространственного видео, однако (как часто и бывает для AVFoundation) им не хватает документации.
📖 Вот несколько советов по работе с ними.
😃 iOS Dev
AVFoundation справляется с задачами чтения, записи и воспроизведения кадров, но процесс меняется при работе с пространственным видео (также известным как
MV-HEVC
), которое по факту представляет собой видео с двух разных сторон.Загрузка пространственного видео в
AVPlayer
или AVAssetReader
на iOS выглядит так же, как и загрузка обычного видео. В iOS 17.2 и macOS 14.2 (и, кстати, новый Xcode уже в проде) появились новые API AVFoundation для работы с файлами MV-HEVC.
Они позволяют легко получить оба ракурса пространственного видео, однако (как часто и бывает для AVFoundation) им не хватает документации.
📖 Вот несколько советов по работе с ними.
Please open Telegram to view this post
VIEW IN TELEGRAM