Документация и схема событий аналитики
В какой-то момент в приложении Headhunter стало так много разных событий аналитики, что ребята решили навести в них порядок. Вот что получилось:
👉Отдельный репозиторий, который стал источником правды про все события.
👉Каждое событие описывается yaml файлом, который содержит название, описание, категории, к которым оно относится, и параметры.
👉Схема умеет рендериться в маркдаун, и благодаря этому генерируется человекочитаемый справочник всех событий.
👉Аналитики сами пишут yaml файлы.
👉Из схемы также генерируется код для приложения.
В какой-то момент в приложении Headhunter стало так много разных событий аналитики, что ребята решили навести в них порядок. Вот что получилось:
👉Отдельный репозиторий, который стал источником правды про все события.
👉Каждое событие описывается yaml файлом, который содержит название, описание, категории, к которым оно относится, и параметры.
👉Схема умеет рендериться в маркдаун, и благодаря этому генерируется человекочитаемый справочник всех событий.
👉Аналитики сами пишут yaml файлы.
👉Из схемы также генерируется код для приложения.
Как адоптить новые фичи в кроссплатформенной кодовой базе на iOS и macOS
Из-за того, что Apple выпускает стабильные версии новой iOS и новой macOS в разное время, вы можете столкнуться с довольно неприятной проблемой – после выхода Xcode 15.0 ваш кроссплатформенный код с поддержкой новых фичей перестанет собираться под мак. В статье разбирается, как комбинировать compile-time и runtime проверки, чтобы облегчить свою жизнь.
Из-за того, что Apple выпускает стабильные версии новой iOS и новой macOS в разное время, вы можете столкнуться с довольно неприятной проблемой – после выхода Xcode 15.0 ваш кроссплатформенный код с поддержкой новых фичей перестанет собираться под мак. В статье разбирается, как комбинировать compile-time и runtime проверки, чтобы облегчить свою жизнь.
Обзорная статья про Compose Multiplatform
На Хабре вышла неплохая обзорная статья на русском языке про то, как работает Compose Multiplatform, и как собрать свой первый простой проект. Если стало интересно, вот еще несколько материалов по теме:
Официальный блог пост с анонсом
Подробный доклад
На Хабре вышла неплохая обзорная статья на русском языке про то, как работает Compose Multiplatform, и как собрать свой первый простой проект. Если стало интересно, вот еще несколько материалов по теме:
Официальный блог пост с анонсом
Подробный доклад
Памятка по тому, как репортить баги Apple
Приближается выход Beta версий Xcode и новых SDK, а значит – тонны новых багов. Apple подготовили новую страницу документации про то, как репортить проблемы с максимально подробным контекстом, и какие инструменты могут это облегчить.
Ничего все равно не исправят, конечно же.
Приближается выход Beta версий Xcode и новых SDK, а значит – тонны новых багов. Apple подготовили новую страницу документации про то, как репортить проблемы с максимально подробным контекстом, и какие инструменты могут это облегчить.
Ничего все равно не исправят, конечно же.
Act – инструмент для локального запуска GitHub Actions
Act – консольная тула, которая позволяет прогонять любой GitHub Action локально. Нужен только установленный Docker Desktop.
Вызов экшна выглядит так:
Перевод на русский язык
Act – консольная тула, которая позволяет прогонять любой GitHub Action локально. Нужен только установленный Docker Desktop.
Вызов экшна выглядит так:
act pull_request --container-architecture linux/amd64
Перевод на русский язык
Grantisom
Using Act to Run Github Actions Locally
https://github.com/nektos/act
The Act package offers a convenient way to execute your GitHub Action workflows locally. It’s a valuable tool when debugging or working on issues that either have a long runtime or are complex, saving you those precious minutes.…
The Act package offers a convenient way to execute your GitHub Action workflows locally. It’s a valuable tool when debugging or working on issues that either have a long runtime or are complex, saving you those precious minutes.…
Как устроена DispatchQueue под капотом
В статье разбирается, как с нуля написать аналог DispatchQueue на мьютексах, который умеет выполнять операции синхронно и асинхронно.
В статье разбирается, как с нуля написать аналог DispatchQueue на мьютексах, который умеет выполнять операции синхронно и асинхронно.
Собираем каталог митапов с просмотром WWDC
Кейноут WWDC пройдет вот уже через неделю. Если вы планируете организовать совместный просмотр – напишите в личку @tatiana_2209. Мы соберем каталог всех событий, чтобы вам проще было найти что-то рядом с вами.
👉Ссылка на каталог
Кейноут WWDC пройдет вот уже через неделю. Если вы планируете организовать совместный просмотр – напишите в личку @tatiana_2209. Мы соберем каталог всех событий, чтобы вам проще было найти что-то рядом с вами.
👉Ссылка на каталог
Почему мы всё время начинаем и бросаем учить английский?
Одна из причин — мы не знаем свой уровень языка и берёмся за контент, который нам не по силам. Например, сериал «Друзья» часто советуют смотреть тем, кто начинает учить язык, но в нём полно юмора, который начинающие пока понять не могут. В итоге разрыв знаний удручает и мотивация учить язык падает.
Если вы готовы дать английскому ещё один шанс, Яндекс Практикум поможет поверить в свои силы и довести дело до конца. Приходите на бесплатную консультацию в Яндекс Практикум:
- Проведут устный тест на уровень языка,
- Покажут, чего реально добиться и за какой срок,
- Расскажут, как данные курсы помогут достичь цели.
P. S. С 1 июня курсы станут больше: количество занятий с личным преподавателем увеличится с 72 до 80. Цена вырастет тоже. До 31 мая вы можете купить курс по старой цене: целиком или по частям. И если решите купить полный курс сразу — сэкономите и получите обновлённую программу из 80 занятий по прежней цене.
Одна из причин — мы не знаем свой уровень языка и берёмся за контент, который нам не по силам. Например, сериал «Друзья» часто советуют смотреть тем, кто начинает учить язык, но в нём полно юмора, который начинающие пока понять не могут. В итоге разрыв знаний удручает и мотивация учить язык падает.
Если вы готовы дать английскому ещё один шанс, Яндекс Практикум поможет поверить в свои силы и довести дело до конца. Приходите на бесплатную консультацию в Яндекс Практикум:
- Проведут устный тест на уровень языка,
- Покажут, чего реально добиться и за какой срок,
- Расскажут, как данные курсы помогут достичь цели.
P. S. С 1 июня курсы станут больше: количество занятий с личным преподавателем увеличится с 72 до 80. Цена вырастет тоже. До 31 мая вы можете купить курс по старой цене: целиком или по частям. И если решите купить полный курс сразу — сэкономите и получите обновлённую программу из 80 занятий по прежней цене.
Номинанты Apple Design Awards
Объявили номинантов на ежегодную премию Apple Design Awards. Этот список – отличный пример того, что Apple ценит в приложениях. Вот несколько интересных приложений:
✈️Flighty – за интуитивный интерфейс и хорошую интеграцию с платформой
🧘Headspace – за социальный импакт
🎥Riveo – за интерфейс и анимации
🏓SwingVision – за инновации в пользовательском опыте
Победителей объявят через неделю после кейноута WWDC.
Объявили номинантов на ежегодную премию Apple Design Awards. Этот список – отличный пример того, что Apple ценит в приложениях. Вот несколько интересных приложений:
✈️Flighty – за интуитивный интерфейс и хорошую интеграцию с платформой
🧘Headspace – за социальный импакт
🎥Riveo – за интерфейс и анимации
🏓SwingVision – за инновации в пользовательском опыте
Победителей объявят через неделю после кейноута WWDC.
Apple
2024 winners and finalists - Apple Design Awards - Apple Developer
Meet the winners and finalists for the 2024 Apple Design Awards
Про работу с dynamicMemberLookup
Аннотация
Аннотация
dynamicMemberLookup
позволяет проксировать обращение к свойствам объекта. Например, вместо cache
.storage["profile"]
дергать сразу cache
.profile
. Основной минус такого подхода – компилятор не предупредит вас, что вы обращаетесь к несуществующему свойству. В статье разбирается, как использование KeyPath вместо строковых ключей поможет вернуть compile-time safety.Swift with Majid
Dynamic member lookup in Swift
One of my favorite features of the Swift Language is the dynamic member lookup. We don’t use it very often, but it improves the API of the provided type significantly by improving the way we access the data of the particular type.
Организация межмодульного взаимодействия в многомодульном приложении
Разбор того, как архитектура межмодульного взаимодействия может влиять на скорость компиляции, вес приложения и релизный процесс. А начать чтение можно с первой статьи цикла – про то, кому вообще стоит выбирать распил приложения на модули.
Разбор того, как архитектура межмодульного взаимодействия может влиять на скорость компиляции, вес приложения и релизный процесс. А начать чтение можно с первой статьи цикла – про то, кому вообще стоит выбирать распил приложения на модули.
SwiftUI Tips & Tricks
Пополняющийся тред из 20+ не самых очевидных советов по работе со SwiftUI. Вот некоторые из них:
-
- В любую функцию можно передать
- Если вам нужно быстро создать
Пополняющийся тред из 20+ не самых очевидных советов по работе со SwiftUI. Вот некоторые из них:
-
lineLimit
у Text
можно задавать не одним числом, а интервалом. Тогда компонент высота компонента будет всегда не меньше нижней границы, и не больше верхней.- В любую функцию можно передать
#file
, #line
, #function
в качестве параметров – и использовать их в логах, чтобы понять, откуда была вызвана функция.- Если вам нужно быстро создать
TextField
, чтобы что-то проверить, можно не передавать ему Binding, а инициализировать его с .constant(“Text”)
.Что нового в Swift 5.9
👉
👉Можно писать макросы, которые исполняются во время компиляции
👉Структуры и enum’ы, которве нельзя копировать, а можно только передавать по ссылке
👉Новый оператор
В статье очень детально разбираются эти и другие новые фичи. Идеальный материал, чтобы подготовиться к WWDC!
👉
if
и switch
теперь можно использовать при присвоении значения переменной или для возврата значения из функции👉Можно писать макросы, которые исполняются во время компиляции
👉Структуры и enum’ы, которве нельзя копировать, а можно только передавать по ссылке
👉Новый оператор
consume
, который копирует значение переменной и уничтожает ееВ статье очень детально разбираются эти и другие новые фичи. Идеальный материал, чтобы подготовиться к WWDC!
Hacking with Swift
What’s new in Swift 5.9?
Macros, if and switch expressions, noncopyable types, and more!
This media is not supported in your browser
VIEW IN TELEGRAM
Реплика системного блюра на CAFilter
Разработчик зареверсинжинирил реализацию блюра и повторил его, используя приватные API. Есть возможность обойтись и без них, перейдя на SceneKit и Metal шейдеры, но качество будет чуть хуже.
Код на GitHub
Разработчик зареверсинжинирил реализацию блюра и повторил его, используя приватные API. Есть возможность обойтись и без них, перейдя на SceneKit и Metal шейдеры, но качество будет чуть хуже.
Код на GitHub
Опубликован вижн интеропа Swift -> C++
Интероп Swift и C++ состоит из двух частей:
- Вызов Swift из C++ кода (этот пропозал уже давно опубликован и принят)
- Вызов C++ из Swift (вот ему и посвящен этот документ)
В пропозале разбираются цели такого интеропа, сложности его реализации и то, как предполагается подружить основные концепции из двух языков друг с другом с учетом гораздо более сильных гарантий, которые дает Swift.
Интероп Swift и C++ состоит из двух частей:
- Вызов Swift из C++ кода (этот пропозал уже давно опубликован и принят)
- Вызов C++ из Swift (вот ему и посвящен этот документ)
В пропозале разбираются цели такого интеропа, сложности его реализации и то, как предполагается подружить основные концепции из двух языков друг с другом с учетом гораздо более сильных гарантий, которые дает Swift.
GitHub
swift-evolution/visions/using-c++-from-swift.md at main · swiftlang/swift-evolution
This maintains proposals for changes and user-visible enhancements to the Swift Programming Language. - swiftlang/swift-evolution