Komondor – пакет для описания Git Hooks, использующихся в проекте
С помощью Komondor вы можете описать все git hooks, нужные вашему проекту, в одном блоке Package.swift файла. Он поддерживает аж 19 разных видов хуков, в том числе экзотику вроде pre-auto-gc или sendemail-validate.
Пакет вдохновлен Husky – аналогичным инструментом в Node.js экосистеме.
Экспорт SwiftUI вьюх в формате изображений
ImageRenderer – это API, который позволяет экспортнуть иерархию SwiftUI вьюх как изображение. Например, это можно использовать для экспорта Swift Charts в PDF.
Часть параметров перед экспортом можно подкрутить, например масштаб или цвета.
Перевод на русский язык
Воркшоп и обзор экосистемы Kotlin Multiplatform
Kotlin Multiplatform соединяет в себе лучшее от двух миров – кроссплатформы и нативной разработки. Вы получаете возможность переиспользовать всю бизнес-логику, не реализуя ее несколько раз, но сохраняете нативный интерфейс и перфоманс.
На воркшопе Анна Жаркова расскажет о том, как подойти к проектированию архитектуры приложения, использующего KMP, с какими особенностями интеграции с платформами предстоит столкнуться, разберет текущее состояние экосистемы и посоветует набор библиотек для решения стандартных задач.
Воркшоп является частью продвинутого онлайн-курса «iOS Developer. Professional» от OTUS
📆Дата: 4 мая, 20:00
👉Регистрация
Compose Multiplatform теперь поддерживает iOS
Я думаю, что все вы слышали про Jetpack Compose – это примерно как SwiftUI, но от мира Android. Так вот, мы в JetBrains еще в прошлом году сделали его мультиплатформенным, и дали возможность шарить код с десктопными приложениями. А на прошлой неделе на KotlinConf был важный анонс – теперь Compose Multiplatform поддерживает еще и iOS таргет, правда пока только в Alpha!
Сразу разберем горячие вопросы:
🎨Фреймворк рисует компоненты на канвасе, примерно как Flutter.
🤖Пока что из коробки доступны только Material design компоненты. Ну и, конечно, можно верстать кастомный дизайн любой сложности.
📱Так как все рисуется на канвасе, многим компонентам пока не хватает привычного айосного поведения. Например, у скролла другая физика. Сразу предупрежу, что это просто ограничение альфы, а так все в работе.
💻Код, написанный для Android, полностью валиден для запуска на iOS, если не зависит от платформенных библиотек.
☁️Помимо iOS и Android есть поддержка всех десктопных операционных систем, а еще и экспериментальная поддержка Web.
🌡️Фреймворк еще в очень-очень сыром состоянии, и впереди много работы над тулингом, перфомансом, интеграцией с iOS платформой и компонентами.
Все это работает поверх Kotlin Multiplatform, поэтому наша изначальная идея остается актуальной. Мы не планируем заменять нативную разработку. Вы сами решаете, какую часть кода надо пошарить в вашем проекте, чтобы получить пользу – отдельный модуль, всю бизнес-логику, какие-то вспомогательные экраны вроде настроек, или вообще все.
Я буду очень рад, если вы попробуете Compose, и поделитесь впечатлениями и фидбэком. Так получилось, что я сейчас выполняю роль продакт менеджера в его команде, и как раз много думаю над тем, какая интеграция с iOS важна в первую очередь!
👉Основной сайт фреймворка
👉Шаблон старта нового проекта
👉Кейноут KotlinConf, где на 50 минуте рассказывают про Compose
👉Подробный доклад про Compose for iOS на отметке 5ч 13мин
Советы по работе с Codable в реальной жизни
При первом знакомстве Codable выглядит магией – структура автоматически наполняется нужными значениями из ответа сервера, все супер. Но в реальности все сложнее – бэкендеры могут возвращать пустые строки там, где ожидался url, случайно добавлять или удалять параметры, меняя схему ответа сервера.
В статье разбирается несколько советов по тому, как сделать парсинг ответов сервера более устойчивым к неожиданным изменениям, и как получать больше информации о его ошибках.
Как работают механизмы синхронизации в CloudKit
Автор библиотеки CloudKitSession, которая позволяет сохранять в CloudKit произвольные данные без зависимости на Core Data, делится особенностями работы CloudKit, которых нет в документации:
✋Как избегать ошибок, и обрабатывать их, если они все же случатся
🤝Как работают алгоритмы разрешения конфликтов
📝Как работать со схемой данных
Review Rocket – инструмент для автоматического анализа отзывов в App Store
Инструмент работает так:
1️⃣Вводите ссылку на ваше приложение
2️⃣Все отзывы пользователей выгружаются и прогоняются через LLM
3️⃣На выходе получаете список основных фиче-реквестов и жалоб
Автоматизация релизов CLI тулы на Swift через GitHub Actions
В статье разбирается, как построить релизный пайплайн на GitHub Actions, который будет публиковать ваш CLI инструмент в Homebrew.
Polyglot – автоматическая локализация приложений
Локализацию в приложениях часто делают по остаточному принципу. Основная причина, конечно – количество времени, требуемого на то, чтобы перевести все строки и поддерживать их актуальными при последующих релизах. Ребята выпустили новый инструмент, который автоматизирует вообще все. Вот как он работает:
1️⃣Добавляете один шаг в Build Phases (прям как swiftlint)
2️⃣Запускаете сборку, и мгновенно получаете машинный перевод (не абы какой, а сделанный с помощью ChatGPT с использованием контекста, где собственно текст будет использоваться). На данном шаге вы потратили 10 минут и уже можно смело отправлять в App Store.
3️⃣При последующих сборках переводы будут корректироваться и улучшаться по мере того, как переводчики сервиса их проверяют.
Ребята только запустились и будут рады обратной связи и помочь с интеграцией. Писать за помощью можно вот сюда.
Как удержать пользователей в приложении и сэкономить на этом при помощи новой предиктивной модели оттока
Большинство компаний бесперебойно высылают пуш-уведомления с промокодами, что вовсе не является инструментом удержания клиентов. Предоставлять эти промокоды со скидками нужно точечно, на основе поведения клиента.
Разработчики Крипты, являющиеся технологическим подразделением Яндекса, создали новую предиктивную модель. Благодаря инфраструктуре AppMetrica, на основе которой разработана фича, модель способна предсказывать вероятность того, что пользователь перестанет пользоваться сервисом.
Для тестирования модели оттока запустили небольшой A/B-тест, в котором сравнивали разные подходы для модели с новыми данными. Число выданных промокодов уменьшилось, но просадки по продажам не случилось. Наоборот, продажи без промокодов выросли на 7,8 %.
Результат эксперимента и сами тесты разработчики подробно описали в блоге компании. Там же вы найдете ссылку на закрытую бету технологии.
Рациональная сторона вложений в accessibility
Первая реакция любого человека на доклад про доступность – круто, и социально-значимо, но как продать ценность бизнесу, решительно непонятно. Миша Рубанов из Додо рассказал про три кейса, в которых работа над accessibility принесла понятную пользу для компании:
💰Доработка интерфейса экрана заказа пиццы с учетом требований доступности принесла дополнительных 8млн рублей в месяц.
🤔Советы скринридера помогли сделать интерфейс понятнее и для обычных людей.
🧱Учет требований доступности помог не допустить архитектурных ошибок при проектировании дизайн-системы.
CoreTransferrable и ShareLink
В последней версии SwiftUI появился новый подход для шаринга данных из приложения – ShareLink. Это вьюха, на вход которой можно отдать любую структуру, реализующую протокол Transferable. Этот протокол поддержан во многих системных типах данных, например, в изображениях. А при желании, реализовать его можно и в кастомных типах.
И всё-таки, на что мобильному разработчику не жалко потратить субботу?
На конференцию о мобильной разработке Яндекс Go Mobile Day & Night!
Днем будем слушать доклады спикеров и обсуждать, как не положить бэкенд своим приложением. Вечером — вкусно есть и пить, пританцовывать у диджейского пульта и общаться в лаундж-зоне. Не конфа, а фестиваль какой-то!
Всех мобильных разработчиков Яндекс Go приглашает в московский Loft Hall. Встречаемся в субботу, 22 апреля, в 14:00.
Изучайте программу и регистрируйтесь на конфу по ссылке: https://clck.ru/342rza
Реклама ООО "ЯНДЕКС.ТАКСИ" erid: Pb3XmBtzt2BwbDSy2aA6TRTsf9WMEENoyhZfhNN
Анонс WWDC 2023
Главная неделя всех iOS разработчиков в этом году пройдет 5-9 июня. Большая часть конференции пройдет в онлайне, но на кейноут и State of the Union можно попасть вживую.
Короче, ждем Swift Data и кучи обновлений для будущей xrOS!
ConnectCode/mixing-and-digital-compositing-metal-shaders-and-cifilter-33e73022b25a">Построение пайплайна из Metal шейдеров и CIFilter
Чтобы получить эффект анимированного дыма, автор смешивает семь шейдеров и фильтров в один пайплайн. Поиграться с последовательностью нод можно в опенсорсном проекте с несколькими разными пайплайнами.
Сообщество Garage Eight
Ребята из Garage Eight пилят разные инвестиционные продукты. А кроме этого, недушно рассказывают про свою внутреннюю кухню, травят карьерные байки и делятся полезными материалами.
Вот несколько клевых постов, с которых можно начать знакомство с каналом:
🤔Подборка материалов по развитию критического мышления
🤝Про опыт построения ML команды, в которой нет тимлида
💬Инструменты и практики дачи фидбэка
Реклама ООО «Гараж 8» erid: Pb3XmBtzsqba5zuiiqDfGmJRXGA6T5Yospdetvk
Canopy – удобная обертка над CloudKit
Основная идея библиотеки – изолировать всю работу с CloudKit, дав возможность тестировать код без взаимодействия с реальным облаком. Для большинства задач вроде обработки серверных токенов и работы с батчами и курсорами в Canopy уже описана вся логика, но при желании ее можно переопределить.
📖Документация
💻Семпловое приложение
Как работают anchors в SwiftUI
Anchors – это фича в SwiftUI, которая помогает выравнивать элементы лэйаута относительно друг друга. Это работает за счет возможности напрямую зареференсить «якорь» ожной вьюхи в другой.
Чтобы лучше разобраться, как работают якоря, в статье их реализуют с нуля чисто средствами SwiftUI, а затем сравнивают их с нативной реализацией.
Перевод на русский язык
Как попробовать фичи Swift 6 уже сейчас
Swift 6 выйдет не раньше 2024 года, но часть языковых фичей можно попробовать уже сейчас с помощью флага -enable-upcoming-feature
. Это поможет подготовить кодовую базу к будузей миграции и сделать ее менее болезненной.
Список всех фичей, которые можно включить, есть в файле Features.dev. Кроме этого, для проверки того, что вы правильно работаете с многопоточным кодом, можно использовать флаги -warn-concurrency
и -enable-actor-data-race-checks
.
В статье разбираются все детали миграции, в том числе как активировать все новые языковые фичи в многомодульном проекте, и с какими проблемами вы можете столкнуться.
Перевод на русский язык
🚀 TradingView ищет iOS разработчика.
Стек:
UIKit, SwiftUI, Combine, async-await, SPM, iOS 15+
Продукт:
Более 10 миллионов загрузок по всему миру. Наши решения используют Тинькофф, Forbes, Revolut, Interactive Brokers, S&P Global.
Место работы:
Офисы в Тбилиси, Санкт-Петербурге и Ростове-на-Дону, помощь с релокейтом
👉 Если у тебя 2+ лет опыта пиши @janemanolis
Canvas в SwiftUI
Canvas – особый тип View, который позволяет процедурно рисовать различные фигуры, определяя их геометрию и стили. Помимо фигур, на канвас можно добавлять текст. изображения. Поддерживаются и анимации с помощью TimelineView.
Как написать свой браузерный движок на Swift
Ходят слухи, что Apple скоро разрешат публиковать в сторе браузеры, основанные не на стандартном WebView. В честь этого автор статьи решил разработать полностью свой браузер, начиная от парсинга HTML, заканчивая рендерингом в SwiftUI.
Конечно, все максимально просто, никакой поддержки CSS и, тем более, JavaScript, но все равно интересно!
Анимация, зависимая от уровня освещенности
Демка использует не SensorKit, а экспозицию фронтальной камеры устройства.
Swift Power Assert – подробная информация об ассертах
Power Assert – известное семейство библиотек для разных языков. Их основная задача показывать информацию о состоянии всех переменных ассерта в виде удобной диаграммы.
Теперь такая библиотека появилась и для Swift. Она работает поверх экспериментальных макросов, поэтому использовать ее пока получится только с пререлизной версией тулчейна.
Перевод на русский язык
Drag and Drop в SwiftUI
Протокол Transferable помогает не только шарить данные с помощью специального диалога, но и реализовывать Drag and Drop. В статье разбирается, как сделать вьюхи перетягиваемыми, и как обрабатывать переданные данные.
Сможете ли вы работать мобильным разработчиком в Тинькофф?
Сравните свои скиллы с требованиями и откликайтесь на вакансии в Тинькофф, если интересно решать сложные финтех-задачи: https://l.tinkoff.ru/mob_pro
DocCGPT – автоматическая документация для ваших пакетов
- DocCGPT – инструмент, который автоматически генерирует документацию для вашего кода с использованием моделей OpenAI.
- Особой разницы между GPT-3.5 и GPT-4 не видно.
- Инструмент пока экспериментальный, результаты надо докручивать руками – но попробовать уже точно стоит!
Релиз Swift 5.8
- Новые языковые фичи, которые можно потрогать в плейграунде.
- Полностью переработана реализация result builder’ов.
- Документацию, собранную DocC, теперь можно кастомизировать.
- Парсер в SwiftSyntax переписан на С++ и научился показывать более понятные ошибки.
VK поддержит разработчиков мини-приложений облачными ресурсами
Разработчики мини-приложений на платформе VK Mini Apps получили доступ к программе поддержки VK Cloud. Каждому участнику программы будет ежемесячно начисляться бонус в 2500 рублей на счет в личном кабинете, которые можно потратить на облачные сервисы и вычислительные ресурсы. Всего же на платформе доступно около 30 инфраструктурных и платформенных сервисов, а также современные инструменты для разработки отказоустойчивых приложений.
Программа действует до конца 2023 года. Для участия необходимо создать учетную запись на платформе VK Cloud и заполнить специальную форму, указав ID проекта.
На что мобильному разработчику не жалко потратить субботу?
Всё не так просто. Скоро расскажем!
Реклама ООО "ЯНДЕКС.ТАКСИ" erid: Pb3XmBtztCBFAwdb6MGW6Xz7K9Y6SRpMH3L6Ncg