Telegram Web Link
2000 импортов: история об организации модулей SwiftPM

Автор делится размышлениями об использовании @_exported import, объединении в один CoreDependencies и использовании этого решения в проекте.

И хотя способ кажется неплохим, в разработке есть свои сложности (куда же без них).

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

Это требует стратегического планирования для предотвращения будущих ошибок компилятора.

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

🧐 Кстати, этот способ, похоже, используют и авторы Point-Free в либе TCA (The Composable Architecture).

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

📖 Domenico Nicoli делится своей подборкой необычных компонентов:

🔘 GravitySliderFlowLayout — кастомный flowlayout для UICollectionView.

🔘 VegaScroll — красивая анимация для UICollectionView.

🔘 Mandoline — вы можете использовать этот компонент, если вам нужен интерфейс с функцией «выбора».

🔘 Reel Search — необычный компонент для выбора опций из списка.

🔘 Sheet — как следует из названия, позволяет создать свои action sheets с функциями навигации.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Краткое руководство по таблицам SwiftUI

Таблицы с несколькими столбцами уже давно являются функцией macOS, на iOS они появились только с iOS 16.

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

Например, сортировку по столбцам можно добавить буквально в пару строк (как тут).

@State private var sortOrder = [KeyPathComparator(\Country.name)]

var body: some View {
Table(store.countries, selection: $selected,
sortOrder: $sortOrder) { ... }
}


📖 А об остальных особенностях таблиц на SwiftUI можно узнать из этого материала.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Как создать Swift Package из библиотеки C+

В полезном для прокачки своих знаний примере автор рассказывает о возможности привязки к популярной библиотеке линейной алгебры C++ — Eigen.

Для простоты только часть функций Eigen будет перенесена на Swift.

📖 С помощью этого материала можно глубже погрузиться в процесс создания собственного пакета Swift.

🛠 Итоговый результат доступен на Github.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Профсоюз разработчиков добился от Apple специальной пометки приложений, сделанных нейросетью
Можно выдохнуть!

В течение последних двух с половиной недель после выхода GPT-4 разработчики в Твиттере добивались отмены, или так называемого кэнселлинга приложений, сделанных нейросетями с помощью специального тега #stopAI #freedomForMankind.

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

После нескольких дней напряженных дискуссий всё-таки было принято два важных решения:

1️⃣ Теперь при выкладке приложений нужно будет указывать поколение и тип нейросети.

2️⃣ Все приложения в App Store получат специальную пометку в виде иконки и дополнительного тега, если они сделаны нейросетью.

😃 iOS Dev - будем надеяться, что это поможет. Больше подробностей принятых решений можно узнать в видеообзоре от 9to5mac.

Внимание, это первоапрельская новость! Пока что таких изменений в App Store нет😎
Please open Telegram to view this post
VIEW IN TELEGRAM
Лучшие практики для TCA (The Composable Architecture)

Команда The Browser Company активно использует структуру Composable Architecture (об их любопытном способе организации SPM можно почитать вот тут).

Krzysztof Zabłocki на основе своего опыта разработал новый набор лучших практик, которые могут принести пользу проектам, использующим эту архитектуру.

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

📖 Кстати, здесь сообщество делится рекомендациями (и вы можете добавить свои).

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
StackOverflow тонет или почему Google ломает интернет
И почему всё это очень плохо

В течение восьми последних лет на самом популярном сайте для поиска причин/симптомов/решений для программистов наблюдается уменьшение количества сообщений в целом.

С 2014 года сообщений стало меньше в два раза, вместо 140k -> 70k. Кроме этого, существует очень плохая тенденция, что количество вопросов уже превышает количество ответов.

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

Но не это ключевой фактор

Несмотря на бан использования ChatGPT на самом StackOverflow, они не могут повлиять на количество входящего трафика от крупнейшего поисковика Google при использовании нейросетей.

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

И, например, сам бот на сайте общения не предоставляет никаких ключевых ссылок на источники. Да и решение Bing минует основной источник и, что более важно, самих авторов контента. Ведь тут всё просто:

Авторы создают контент -> прокачивают его видимость -> Google показывает рекламу у себя + авторы получают отдачу в виде денег (ну или альтруистической обратной связи). Казалось бы, win-win для обеих сторон, вот только появляется но.

С появлением нейросетей авторство, как вы понимаете, становится никому не интересно.

Это означает очень простую вещь, создавая контент или в примере с ответами на StackOverflow нейросети просто парсят это всё в датасет и авторы отходят на второй план.

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

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

Они перестанут отвечать на вопросы. Перестанут разбирать сложные вещи.

Можно ли что-то сделать?

Да, добавить источники цитирования. Возможно, реализовать в ответах блок с референсами. Наверняка, существуют и другие решения.

Но что случится с хвалёным вау-эффектом от нейросетей, когда окажется, что это лишь поисковик на стероидах?

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Топ-6 вдохновляющих докладов, номинированных на Swift Community Awards 2022
Остальные номинации с возможностью проголосовать доступны тут

Пока на хабре жюри рассматривает лучшие статьи, на Hacking with swift опубликовали и свой шортлист.

📺 Anna Beltrami: Spark your Creativity – the Power of iPad Playgrounds. О том, как изменить свой стиль разработки и обратиться к своему творческому потенциалу.

📺 Frank Courville: Roll your own networking stack. О том, как создать собственную небольшую библиотеку компонуемых инструментов, чтобы сделать работу с сетью приятной.

📺 Jordi Bruin: Shipping Side Projects in 2-2-2 Easy Steps. Про то, как сохранить идеи небольшими и реализовать их от финалиста Apple Design Awards.

📺 Krzysztof Zabłocki: Improving developer experience through tools and techniques. Про инструменты и методы для экономии месяцев работы и повышения скорости итераций.

📺 Daniel Steinberg: Willing Suspension of Disbelief. В этом докладе говорится про ментальную модель, которая упростит написание асинхронного кода и сделает его более понятным.

📺 Natalia Panferova: Mysteries of SwiftUI Text view. Полезный доклад, в котором рассматриваются возможности компонента, о которых вы могли и не подозревать.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Три частые ошибки при работе с Optionals

📖 В этом материале Винсент расскажет о 3 ошибках, которые нужно избегать при работе с опциональными значениями и разбирает:

1️⃣ В чём разница между «?» и «!» при использовании в коде.

2️⃣ О важности использовать optional binding.

3️⃣ Излишнее использование опциональных значений там, где это не нужно.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Необычный эффект на основе значения освещённости

🤩 Alex Widua создал прототип, достигнутый путем эмуляции внешней освещенности устройства и частичного затемнения пользовательского интерфейса.

К сожалению, ему не удалось получить разрешения от SensorKit , в чём он честно признался, зато код на базе данных EXIF от ​​камеры можно использовать для приблизительного значения.

🛠 Вот тут лежит код для этого эффекта, а в качестве бонуса ещё и приложение для воссоздания «блестящей кнопки» (тоже на основе камеры).

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Простой способ найти все вызовы метода в вашем проекте

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

Для этого можно попробовать воспользоваться поиском, а можно использовать следующие опции:

1️⃣ Выделите код. Нажмите Find -> Find Call Hierarchy.

2️⃣ При поиске названия метода выберите фильтр: Call Hierarchy.

3️⃣ После выделения названия метода используете комбинацию клавиш: ⌘ + ⌃ + ⇧ + H, они же: CMD + Ctrl + Shift + H.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Контекстное меню для таблиц в iOS 16

Apple добавила контекстные меню еще в iOS 13.

То, как пользователь видит меню, зависит от платформы:

🔘 Жест касания и удержания (длительное нажатие) на iOS.

🔘 Клик мышкой, удерживая нажатой клавишу Control, в macOS.

🔘 Правый клик на трекпаде в macOS или iPadOS.

В iOS 16 Apple появился новый вариант контекстного меню, которое работает работает только при добавлении в контейнер, например, в таблицу или список.

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

📖 А вот в этом посте я рассказывал, как добавить такое меню для кнопки в UIKit буквально парой строк.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
✅️ Xcode больше не работает с помощью Rosetta? Есть решение, о котором не написали в Release Notes

Как и ожидалось ранее, Apple отключила возможность запуска Xcode с использованием Rosetta в версии 14.3 (больше не работает опция с проставлением галочки в настройках), небольшое видео для ввода в курс дела.

В своих Release Notes они писали о грядущем изменении в разделе deprecations:

Xcode isn’t supported under Rosetta. See Developer Technote “Resolving architecture build errors on Apple silicon“ for more information. (92772361)

После чего сразу же последовал целый ряд статей как всё очень плохо про остановку поддержки и собственно, что теперь остаётся только переходить на SPM.

К счастью, есть одна фича, не указанная в тех самых release notes, которая пока что ещё позволит нам использовать нужные pods (и другие либы) даже в Xcode 14.3.

Для этого нужно всего лишь использовать:

Product -> Destination -> Destination Architectures -> Show Rosetta Destinations.

😃 iOS Devделюсь рабочими способами 😎
Please open Telegram to view this post
VIEW IN TELEGRAM
Ресурс с информацией о текущем времени проверки в App Store и TestFlight

🌐 На этом сайте доступно текущее среднее время проверки iOS, время проверки бета-версии TestFlight и время обработки сборки.

До 2019 года был и другой сайт с похожей функциональностью, но поскольку время проверки сократилось с недель до дней (или даже дня), Дэйв Вервер принял решение о прекращении поддержки.

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

Кроме того, здесь есть данные и о проверке билдов для TestFlight, а также о build processing, которыми раньше не делились.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Как использовать юнит-тестирование при работе с async/await в Swift

Юнит-тесты можно использовать для проверки кода, написанного с использованием async/await.

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

📖 В этом материале разбирается значение атрибутов @MainActor, предотвращение дедлоков XCTestExpectation и приводится пример использования await fulfillment.

📖 Также рекомендую вместе с этим материалом ознакомиться и с официальной документацией.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
💥 Реализация анимации отклеивания для повторения эффекта в приложении Messages

Один из крутых и необычных эффектов в «Сообщения» — анимация отклеивания, которую можно увидеть при отправке стикера.

Если внимательно посмотреть, можно различить несколько отдельных анимаций, которые сливаются воедино:

1️⃣ Стикер деформируется и «приближается к камере», начиная с верхней и продвигаясь к нижней части стикера.

2️⃣ По поверхности стикера проходит блик, усиливая эффект деформации и заставляя нас поверить, что частично деформированный стикер отражает невидимый источник света.

3️⃣ При «сгибе» стикера можно увидеть рассеянное отражение того, что облегчает пользователю понимание происходящего.

🧐 Robb Böhnke решил поискать способы для повторения этой необычной анимации (не обязательно с точностью до пикселя).

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

🛠 А вот здесь даже есть рабочий пример кода. Только обратите внимание, что на симуляторе не запустится, так как используются кастомные модификаторы шейдеров на Metal.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Код Воробья для iOS разработчиков
В 💻 Xcode 14 прокачали автокомплит - инициализаторы, Codable, форматирование и другое. В видео наглядно, как это работает.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Настройка различных Launch Screen на основе схемы URL

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

Но что делать, если ваше приложение поддерживает deep links, а первый экран изменяется на основе схемы URL?

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

📖 В этой статье объясняется, как корректно добавлять и изменять ключи UILaunchScreens в зависимости от заданных условий.

Кстати, есть несколько базовых советов для ускорения запуска приложения.

👩‍🎓 А если хотите узнать, чем различается холодный и теплый запуски приложения, то можно обратить внимание и на этот пост.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Итоги конкурса Технотекст - 2022 на хабре!

Наконец-то подвели итоги конкурса технических статей за прошлый год.

Я рад, что попробовал свои силы и пусть не удалось получить наивысший балл по сумме, но всё-таки🥉 место — отличный результат.

Приятно, что жюри оценило насыщенность техническим фишками и отсутствие «воды» (и по этому критерию показатель среди остальных статей максимальный).

Ну а победили две статьи в корпоративных блогах:

🏆По сумме баллов Yatagan и по техническим критериям Kotlin Symbol Processing.

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

📖 Все итоги доступны тут, а сам протокол с оценками здесь.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
2024/11/20 01:54:29
Back to Top
HTML Embed Code: