Sendable и @Sendable
Среди последних нововведений в Swift Concurrency появились протокол Sendable и одноименный атрибут для функций. Их задача – гарантировать типобезопасность при передачи значений в многопоточном коде. В статье разбираются детали и ограничения работы с протоколом и то, как подготовить свой код к strict concurrency checking в Swift 6.
Среди последних нововведений в Swift Concurrency появились протокол Sendable и одноименный атрибут для функций. Их задача – гарантировать типобезопасность при передачи значений в многопоточном коде. В статье разбираются детали и ограничения работы с протоколом и то, как подготовить свой код к strict concurrency checking в Swift 6.
SwiftLee
Sendable and @Sendable closures explained with code examples
The Sendable protocol and @Sendable attribute help to eliminate data races and create thread-safety in Swift Concurrency.
👍20👎3🔥1
Как устроено логирование в приложении Авито
- Точки отказа в мобильных приложениях
- Классификация типов ошибок
- Как в архитектуру приложения встроена система репортинга и логирования разных типов ошибок
- Зачем и как логировать ошибки с экранов приложения
- Примеры пользы, полученной от детального логирования
- Точки отказа в мобильных приложениях
- Классификация типов ошибок
- Как в архитектуру приложения встроена система репортинга и логирования разных типов ошибок
- Зачем и как логировать ошибки с экранов приложения
- Примеры пользы, полученной от детального логирования
🤡48👍14🤔4
Создание и поддержка фермы из 200 Mac Mini
- Каждый день Agoda гоняет 800 билдов на CI, в рамках каждого из которых проходит 23000 тестов
- Быстрый рост количества тестов сделал невыгодными сторонние сервисы
- Детали про организацию электроснабжения и охлаждения фермы
- Подходы к виртуализации
- Плюсы и минусы поддержки своей фермы
- Каждый день Agoda гоняет 800 билдов на CI, в рамках каждого из которых проходит 23000 тестов
- Быстрый рост количества тестов сделал невыгодными сторонние сервисы
- Детали про организацию электроснабжения и охлаждения фермы
- Подходы к виртуализации
- Плюсы и минусы поддержки своей фермы
🤯34🔥8👍2❤1
Разбор нового компонента SwiftUI – Gauge
- Gauge – это view, которая умеет отображать прогресс изменения какого-то значения
- У Gauge есть много стилей: accessoryCircular, accessoryCircularCapacity, accessoryLinear, accessoryLinearCapacity, defaultStyle
- В твиттер-треде показаны видео с примерами его работы и короткие сниппеты с настройкой
- Gauge – это view, которая умеет отображать прогресс изменения какого-то значения
- У Gauge есть много стилей: accessoryCircular, accessoryCircularCapacity, accessoryLinear, accessoryLinearCapacity, defaultStyle
- В твиттер-треде показаны видео с примерами его работы и короткие сниппеты с настройкой
👍33🌚12
Как работать с NSZombie не только локально
- NSZombie – это механизм, позволяющий отлавливать ошибки типа EXC_BAD_ACCESS
- Предоставляемый Apple тулинг работает только локально
- Похожую функциональность можно реализовать самостоятельно, включить на пользователях тестфлайта и получать в Crashlytics подробную информацию о крешах
- В продакшн тащить такой подход не рекомендуется
- Код доступен здесь
- NSZombie – это механизм, позволяющий отлавливать ошибки типа EXC_BAD_ACCESS
- Предоставляемый Apple тулинг работает только локально
- Похожую функциональность можно реализовать самостоятельно, включить на пользователях тестфлайта и получать в Crashlytics подробную информацию о крешах
- В продакшн тащить такой подход не рекомендуется
- Код доступен здесь
👍17
Async Composable Architecture
Pointfree выпустили 200 эпизод своего видеокурса, а вместе с этим выложили большое обновление библиотеки Composable Architecture. Основные изменения связаны с внесением в нее различных фич Swift Concurrency.
Pointfree выпустили 200 эпизод своего видеокурса, а вместе с этим выложили большое обновление библиотеки Composable Architecture. Основные изменения связаны с внесением в нее различных фич Swift Concurrency.
www.pointfree.co
Episode #200: Async Composable Architecture in Practice
This week we are releasing the biggest update to the Composable Architecture since its first release over 2 years ago, bringing more of Swift’s modern concurrency tools to the library. To celebrate we will demonstrate how these tools can massively simplify…
🔥27❤7👍7👎5❤🔥2
Новый Grid Layout в SwiftUI
- Новый вид сетки сразу же отрисовывает все дочерние элементы в отличие от LazyVGrid или LazyHGrid
- Настраивать можно как расстояния между рядами и столбцами, так и поведение внутри ячейки
- Разумно использовать этот контрол по умолчанию, и переключаться на Lazy версию только при работе с большим количеством данных
- Новый вид сетки сразу же отрисовывает все дочерние элементы в отличие от LazyVGrid или LazyHGrid
- Настраивать можно как расстояния между рядами и столбцами, так и поведение внутри ячейки
- Разумно использовать этот контрол по умолчанию, и переключаться на Lazy версию только при работе с большим количеством данных
🔥9👍3👎2
Воркшоп по архитектуре Flux
MVVM – отличная архитектура, но при использовании ее со SwiftUI возникает много проблем. 22 августа в 20:00 Ексей Пантелеев расскажет, с какими проблемами приходится сталкиваться, как их можно решить, расширив MVVM с помощью SOA и Coordinator’ов, и покажет, как можно строить архитектуру по принципам Flux.
Вебинар является частью онлайн-курса «iOS Developer. Professional» от OTUS. Партнер курса: Certiport.
MVVM – отличная архитектура, но при использовании ее со SwiftUI возникает много проблем. 22 августа в 20:00 Ексей Пантелеев расскажет, с какими проблемами приходится сталкиваться, как их можно решить, расширив MVVM с помощью SOA и Coordinator’ов, и покажет, как можно строить архитектуру по принципам Flux.
Вебинар является частью онлайн-курса «iOS Developer. Professional» от OTUS. Партнер курса: Certiport.
🤡61👍14👎4❤🔥3
Fucking Format Style
Подробная документация по FormatStyle и ParseableFormatStyle. Удобно смотреть все возможные атрибуты для перевода различных типов данных в локализованные строки.
Подробная документация по FormatStyle и ParseableFormatStyle. Удобно смотреть все возможные атрибуты для перевода различных типов данных в локализованные строки.
❤🔥26🔥1
Kintsugi – решение конфликтов в project.pbxproj
При конфликте Kintsugi анализирует изменения, сделанные в pbxproj файле, отменяет их, и делает заново.
При конфликте Kintsugi анализирует изменения, сделанные в pbxproj файле, отменяет их, и делает заново.
🤔20🌚5🤡4👎3😱3👍2🔥1
Пропозал по миграции компилятора Swift на Swift
- Важный этап в развитии любого языка – это бутстраппинг. Этот термин означает, что для того, чтобы скомпилировать новую версию компилятора, используется предыдущая версия этого же компилятора.
- Большая часть компилятора Swift написана на С++ и для ее компиляции Swift не нужен
- Исключение – несколько опциональных компонентов, которые уже реализованы на Swift. Среди них – Swift Driver, управляющий процессом компиляции, экспериментальный движок для pattern matching и некоторые SIL passes.
- Автор пропозала предлагает начать переписывать на Swift не только опциональные части компилятора
- Пост интересен в том числе как хороший инсайт в то, как сейчас организован процесс сборки компилятора
- Важный этап в развитии любого языка – это бутстраппинг. Этот термин означает, что для того, чтобы скомпилировать новую версию компилятора, используется предыдущая версия этого же компилятора.
- Большая часть компилятора Swift написана на С++ и для ее компиляции Swift не нужен
- Исключение – несколько опциональных компонентов, которые уже реализованы на Swift. Среди них – Swift Driver, управляющий процессом компиляции, экспериментальный движок для pattern matching и некоторые SIL passes.
- Автор пропозала предлагает начать переписывать на Swift не только опциональные части компилятора
- Пост интересен в том числе как хороший инсайт в то, как сейчас организован процесс сборки компилятора
👍28👎4🥰2
Allow implicit self for weak self captures, after self is unwrapped
Language Workgroup приняла пропозал, согласно которому можно больше не писать self в замыканиях с weak self после того, как self развернули. Изменения реализуют в одной из следующих версий Swift.
Вот как будет выглядеть код:
Language Workgroup приняла пропозал, согласно которому можно больше не писать self в замыканиях с weak self после того, как self развернули. Изменения реализуют в одной из следующих версий Swift.
Вот как будет выглядеть код:
button.tapHandler = { [
weak
self]
in
guard
let
self =
self
else {
return }
dismiss()
}
Swift Forums
Allow implicit `self` for `weak self` captures, after `self` is unwrapped
As a follow up from this discussion earlier this year, here's a pitch for allowing implicit self for weak self captures. This is implemented in apple/swift#40702, and the full proposal document is here. Introduction As of SE-0269, implicit self is permitted…
👍88❤🔥14👎5🤔4❤1🔥1
Типовые архитектурные паттерны переоценены
- В реальной жизни дизайн многих систем разрабатывается не так, как в книгах. Их не разрабатывают выделенные архитекторы, не документируют сложными стандартами вроде С4, не используют UML, и не пытаются привести к словарю стандартных архитектурных паттернов банды четырех
- Задача инженера – выработать максимально простую архитектуру, которая поможет решить текущую бизнес-проблему. Соответствие стандартным подходам часто влечет за собой излишнюю сложность
- Главная роль паттернов – в повышении вашей насмотренности
- Чтобы прокачаться в system design, прорабатывайте архитектуру сложных кейсов самостоятельно, запрашивайте фидбэк у коллег, сравнивайте разные варианты дизайна друг с другом, проводите ревью у других людей
- В реальной жизни дизайн многих систем разрабатывается не так, как в книгах. Их не разрабатывают выделенные архитекторы, не документируют сложными стандартами вроде С4, не используют UML, и не пытаются привести к словарю стандартных архитектурных паттернов банды четырех
- Задача инженера – выработать максимально простую архитектуру, которая поможет решить текущую бизнес-проблему. Соответствие стандартным подходам часто влечет за собой излишнюю сложность
- Главная роль паттернов – в повышении вашей насмотренности
- Чтобы прокачаться в system design, прорабатывайте архитектуру сложных кейсов самостоятельно, запрашивайте фидбэк у коллег, сравнивайте разные варианты дизайна друг с другом, проводите ревью у других людей
The Pragmatic Engineer
Software Architecture is Overrated, Clear and Simple Design is Underrated
I had my fair share in designing and building large systems. I've taken part in
rewriting Uber's distributed payment systems
[https://blog.pragmaticengineer.com/distributed-architecture-concepts-i-have-learned-while-building-payments-systems/]
, designing…
rewriting Uber's distributed payment systems
[https://blog.pragmaticengineer.com/distributed-architecture-concepts-i-have-learned-while-building-payments-systems/]
, designing…
👍40👎4🔥4🤡3❤2🤯2
Краткое содержание цикла статей про огромный рефакторинг Slack
- Slack выпустили три статьи: про стабилизацию, модуляризацию и модернизацию кодовой базы
- Основные причины: сложности в масштабировании разработки и желание переехать на новый техстек
- Была разработана понятная стратегия рефакторинга, разбитая на конкретные шаги
- Куча интересных деталей про принятие решений по архитектуре, тулингу, зависимостям
- Slack выпустили три статьи: про стабилизацию, модуляризацию и модернизацию кодовой базы
- Основные причины: сложности в масштабировании разработки и желание переехать на новый техстек
- Была разработана понятная стратегия рефакторинга, разбитая на конкретные шаги
- Куча интересных деталей про принятие решений по архитектуре, тулингу, зависимостям
👍14🤡9
Реализация простого watchdog’а
- Если вы видите в крешлогах код 0x8badf00d – это значит, что приложение прибил системный watchdog, который следит за зависшими приложениями
- Обычно очень сложно понять, а что именно в приложении вызвало зависание
- Помочь отловить причины таких ситуаций может простой самописный watchdog, код которого можно посмотреть здесь
- Если вы видите в крешлогах код 0x8badf00d – это значит, что приложение прибил системный watchdog, который следит за зависшими приложениями
- Обычно очень сложно понять, а что именно в приложении вызвало зависание
- Помочь отловить причины таких ситуаций может простой самописный watchdog, код которого можно посмотреть здесь
Jesse Squires
Implementing a main thread watchdog on iOS
On iOS the operating system employs a watchdog that monitors for and terminates unresponsive apps. If your app is blocking the main thread for too long, the ...
👍16🤡3🤔2
Шаринг кода на Swift между клиентом и сервером
Шарить код можно не только на Kotlin, но и на Swift. В статье разбирается, как настроить сервер на Vapor, вынести часть бизнес-логики в общий Swift package и переиспользовать ее в приложении.
Шарить код можно не только на Kotlin, но и на Swift. В статье разбирается, как настроить сервер на Vapor, вынести часть бизнес-логики в общий Swift package и переиспользовать ее в приложении.
Medium
Share Swift Code Between Client App and Vapor Server
Set up a project with Vapor sharing most code
🤡31👍21🔥3🌚2🌭2
Автокомплит для команд Swift Package Manager
Если вы часто работаете с консолью и любите вкладываться в свою продуктивность, то попробуйте настроить автодополнение для SPM. В комплекте с ним идет утилита tooling, которая умеет генерировать shell completion scripts.
Если вы часто работаете с консолью и любите вкладываться в свою продуктивность, то попробуйте настроить автодополнение для SPM. В комплекте с ним идет утилита tooling, которая умеет генерировать shell completion scripts.
🤡9👍6🤔1
This media is not supported in your browser
VIEW IN TELEGRAM
Перенос Papers, Please на мобальные устройства
Очень интересная статья про то, как автор известной десктопной инди-игры пошагово адаптировал интерфейс и геймплей к маленьким экранам и тач-скрину.
Очень интересная статья про то, как автор известной десктопной инди-игры пошагово адаптировал интерфейс и геймплей к маленьким экранам и тач-скрину.
👍22
Слухи про iPhone 14
- Новая презентация Apple с показом iPhone 14 пока планируется 7 сентября
- Самое заметное – у Pro версии уберут челку и заменят ее на точку с камерой и сенсором FaceID
- Камера станет еще мегапиксельнее, а батарея чуть лучше
- В Apple Watch завезут датчик температуры тела
- Новая презентация Apple с показом iPhone 14 пока планируется 7 сентября
- Самое заметное – у Pro версии уберут челку и заменят ее на точку с камерой и сенсором FaceID
- Камера станет еще мегапиксельнее, а батарея чуть лучше
- В Apple Watch завезут датчик температуры тела
🤡53👍11❤2👎1
Выбор темы Podlodka iOS Crew
Помогите выбрать темы для нового сезона Podlodka iOS Crew в двухминутном опросе. Выбираем между “Масштабирование разработки”, “AR, ML и VR в iOS”, “Проходим любой iOS собес”, “Архитектура”.
Помогите выбрать темы для нового сезона Podlodka iOS Crew в двухминутном опросе. Выбираем между “Масштабирование разработки”, “AR, ML и VR в iOS”, “Проходим любой iOS собес”, “Архитектура”.
Google Docs
Помоги нам сделать 10-й сезон Podlodka iOS Crew
Привет, рады видеть тебя в этом опросе!
Мы, программный комитет и организаторы Podlodka iOS Crew, начали готовиться к 10-му сезону Podlodka iOS Crew.
Сезон будет проходить с 10-14 октября. Впереди ещё 2 месяца, и мы хотим лучше подготовиться и учесть как…
Мы, программный комитет и организаторы Podlodka iOS Crew, начали готовиться к 10-му сезону Podlodka iOS Crew.
Сезон будет проходить с 10-14 октября. Впереди ещё 2 месяца, и мы хотим лучше подготовиться и учесть как…
🤡12👍7🌭4❤3🥰3👎1🔥1🤔1🤩1