Как улучшить нейминг SwiftUI компонентов
Простая идея по тому, как уменьшить количество классов вроде BlablablaDescriptionView
у вас в коде – вместо View использовать класс оборачиваемого элемента.
Benchmark – новый пакет для измерений перфоманса
Swift в своем блоге выложили статью про Benchmark, пакет для автоматизации тестирования перфоманса, который умеет работать с кучей разных метрик.
GitHub
Привет, на связи Podlodka Teamlead Crew!
Пришли со свежими подробностями сезона.
Стартуем уже 1 апреля: научимся выбирать, внедрять, анализировать и масштабировать метрики.
Если вам кажется, что язык метрик сродни заклинаниям, которые знают лишь избранные, то вы попали по адресу. Мы пригласили крутых спикеров из известных компаний, которые обладают этим знанием и на метриках уже «собаку съели». Они научат правильно применять метрики, говорить с бизнесом и продактами на одном языке во благо разрабатываемому решению.
❓В каких сферах применимы метрики? Сергей Воробьёв объяснит как использовать популярные виды метрик и где брать для них данные.
❓Как принимать решения на основе метрик? Сергей Петрук из QIWI владеет этой магией: проведёт воркшоп по фреймворку принятия решений, разберёт реальные кейсы.
❓Как говорить с бизнесом на языке метрик? Серафима Чекулаева поделится священными тайнами продуктовых метрик и их потенциальной пользой.
Билеты уже на сайте, забирай свой!
https://podlodka.io/tlcrew
WWDC пройдет 10-14 июня
Объявили даты WWDC. Все как в прошлом году, основной контент в онлайне, но кейноут пройдет в Apple Park.
Как TextView работает под капотом
Лучшая статья прошлой недели. Разбор кучи деталей того, как TextView работает под капотом – начиная с того, как обратываются стили у AttributedString, заканчивая тем, как курсор реагирует на нажатие кнопок на клавиатуре в зависимости от положения в тексте.
Как отвечать на вопрос "Are you a trader?"
После новых регуляций в Европе, Apple начала задавать вопрос про то, являетесь ли вы трейдером, перед загрузкой новых приложений в App Store. Если вы зарабатываете со своих приложений хоть что-то, то на вопрос надо отвечать утвердительно. В статье пошагово разбирается, как предоставить Apple всю требуемую информацию.
Как исправить фриз в чужом приложении
Разработчик решил пофиксить раздражающий его фриз в приложении Disneyland, зареверсинжинирив их приложение.
Отзыв про текущее состояние Swift on Server
Очень клевый подробный отзыв от компании, которая использует Swift для серверной и десктопной разработки, про текущее состояние языка и экосистемы. Вывод – использовать можно, экосистема богаче одидаемого, но простор для доработок еще большой.
Релиз библиотеки Time 1.0.0
Dave De Long спустя четыре года разработки выложил первый стабильный релиз библиотеки для работы с датой и временем Time.
Основные фичи:
👉Активно используется система типов, что предохраняет от ошибок.
👉Все значения дат и времени привязываются к конкретному календарю, локали и таймзоне, что тоже уменьшает потенциал для ошибок.
👉Можно создавать часы, которые работают медленнее или быстрее системного времени, что поможет в тестировании.
👉Удобные операции по конвертации, сравнению и сдвигу дат.
🔗GitHub
🔗Swift Package Index
Яндекс открыл регистрацию в летнюю Школу мобильной разработки.
Под руководством опытных специалистов ученики летней школы научатся создавать нативные или кросс-платформенные мобильные приложения на Kotlin, Swift или Flutter, а также систематизируют свои знания и приобретут востребованные в индустрии навыки.
Двухэтапная программа обучения включает дистанционные занятия с лекциями и домашними заданиями и очный этап в офисах Яндекса в Москве и Санкт-Петербурге. Лучшие студенты получат возможность пройти второй этап в новом формате — Лаборатории. Это пять недель оплачиваемой практики с погружением во внутренние сервисы компании.
Отбор учеников проходит в три этапа: тест на знание выбранной платформы (Android, iOS или Flutter), решение алгоритмических задач в Контесте и техническое интервью. Необходимые материалы для подготовки можно найти здесь.
Регистрация в школу и рассылка тестовых заданий уже началась — подайте заявку сейчас и проведите лето, развивая свои навыки в мобильной разработке.
Генерация Swift интерфейсов из Pkl файлов
Помните, что Apple недавно выпустили Pkl, новый конфигурационный язык? Держите статью про то, как с помощью SwiftPM плагина генерировать интерфейсы из Pkl и использовать в своих приложениях.
Рецепты работы со Swift Concurrency
GitHub репозиторий с подборкой паттернов работы с многопоточностью в Swift.
👉Async Context
👉Protocols
👉Isolation
👉Structured Concurrency
👉SwiftUI
👉Libraries not designed for concurrency
👉Interoperability
Как разрабатывать на Swift под Windows
Ребята из The Browser Company продолжают быть активными адвокатами использования Swift для Windows. В этот раз они рассказывают, как выглядит developer experience разработчиков, которые пишут на Swift не на macOS, а на винде.
Релиз Swift 5.10
Главная новость прошлой недели – вышел Swift 5.10. Релиз сосредоточен на допиливании модели многопоточности, которая будет включена по дефолту уже в следующей языковой версии, которой, кстати, будет уже Swift 6.
Примеры использования Swift Async Algorithms
Swift Async Algorithms – официальный пакет от Apple, который реализует часто используемые асинхронные алгоритмы, которые позволяют полностью избавиться от Combine. В статье разбираются некоторые кейсы использования пакета.
Как начать писать игры под Playdate
Недавно я рассказывал, что на Swift теперь можно писать игры под консоль Playdate. Держите документацию от разработчиков консоли с подробными гайдами по настройке окружения, написанию своей первой игры и ее запуску на симуляторе.
Обновления SwiftUI Field Guide
За месяц, прошедший с первого релиза, новый проект Криса Эйдхофа, интерактивный учебник The SwiftUI Field Guide, продолжает активно обновляться. Вот какие разделы там появились:
👉Safe Areas
👉Debugging Techniques
👉Introduction to SwiftUI
👉Alignment
👉Flow Layout
👉Stack Alignment
DevToys – набор утилит для разработки
DevToys – опенсорсное приложение, состоящее из кучи небольших хелперов, которые упрощают ежедневную разработческую рутину. Вот некоторые из них:
👉Конвертер из JSON в Yaml
👉URL encoder/decoder
👉JSON форматтер
👉Тестер регулярок
👉Генератор хешей
Снова про перфоманс макросов
Я уже ссылался на эпичный тред на Swift Forums, где разработчики жалуются на влияние наличия пакета SwiftSyntax на скорость компиляции кода с макросами. Так вот, проблемы остаются, даже если использовать предкомпилированный SwiftSyntax. Код с макросами, взятыми из примеров Apple, все равно собирается примерно в два раза дольше, чем без них.
Гайд по миграции на Bazel
Очень подробный гайд по тому, как настроить сборку проекта с помощью Bazel на основе приложения для Mastodon:
👉Описание таргетов
👉Интеграция с Xcode
👉Настройка удаленного кеша
👉Модуляризация
Автоматическая публикация DocC на GitHub pages
Пример того, как настроить GitHub Actions, чтобы с каждым релизом вашей библиотеки обновленная DocC документация публиковалась на GitHub Pages.
Самые популярные настройки git config
👉pull.ff only
или pull.rebase true
– защита от случайного создания мердж-коммита при git pull
👉merge.conflictstyle zdiff3
– более подробная информация о конфликтах
👉rebase.autosquash true
– упрощение использования git squash для слияния разных коммитов друг с другом
👉rebase.autostash true
– автоматический stash при git rebase
👉push.default simple
, push.default current
, push.autoSetupRemote true
– автоматический пуш локальной ветки в ремоут
👉rerere.enabled true
– автоматическое применение стратегии разрешения конфликтов, которую вы использовали в прошлый раз
Новые отчеты в App Store Connect аналитике
В App Store Connect API завезли 50 новых отчетов с сотнями новых метрик. Очень круто, что Apple стали относится к своему API как к first class citizen!
Разбор 20 пейволлов разных приложений
Если в вашем приложении есть пейволлы, то обязательно посмотрите примеры по ссылке – они могут натолкнуть вас и ваших продактов на новые идеи по их улучшению.
Pack Iteration в Swift 6.0
В Swift 6.0 появится фича pack iteration – итератор по элементам туплов. Это стало особенно актуально, потому что, начиная со Swift 5.9, мы больше не ограничены шестью параметрами в туплах.
В статье много примеров того, как pack iteration упрощает жизнь в частых сценариях.
Microsoft App Center – все
На главной странице App Center, главной альтернативы Crashlytics, появилось сообщение о том, что в 2025 году сервис будет закрыт. Часть сервисов продолжат существовать отдельно:
👉Build переезжает в Azure Pipelines
👉CodePush предлагают поднимать самим, по запросу выдают сборку
👉Аналитику реализует часть сервисов Azure
Swift теперь работает на Playdate
Коллаб, который не ждал вообще никто. Playdate – нишевая игровая микроконсоль, главная фича которой – крутящаяся ручка сбоку. Так вот, теперь игры для нее можно писать и на Swift вместо Lua. Отличная возможность для пет-проекта!
Пишем клиент для подсчета средней оценки по версиям
Подробный гайд по тому, как с помощью App Store Connect API и OpenAPI генератора написать клиент, который будет расчитывать среднюю оценку каждой версии вашего приложения.
Советы по реализации Picture-in-Picture
Разбор самых частых сценариев использования picture-in-picture режима для AVPlayer и известных ограничений.
Как компилятор обрабатывает DispatchQueue.main
Компилятор Swift умеет автоматически интерпретировать вызов DispatchQueue.main.async
как @MainActor
. Пусть это поведение и удобное, но оно не явное, что еще сильнее усложняет понимание Swift Concurrency. В статье разбирается, как конкретно компилятор обрабатывает этот вызов.