This media is not supported in your browser
VIEW IN TELEGRAM
ReMafoX – инструмент для простой локализации текстов
- ReMafoX – GUI для уже существующей CLI утилиты BartyCrouch
- Новые строки в Localizable.strings добавляются сразу же при определении их в Swift-файле
- Автоматический перевод строк на 40 языков
- Линтинг на тот случай, если какой-то ключ все-таки не перевелся
- Упрощенная работа с pluralized – их тоже можно определять и переводить, не закрывая исходный файл кода
- Скачать текущую актуальную версию можно здесь
- ReMafoX – GUI для уже существующей CLI утилиты BartyCrouch
- Новые строки в Localizable.strings добавляются сразу же при определении их в Swift-файле
- Автоматический перевод строк на 40 языков
- Линтинг на тот случай, если какой-то ключ все-таки не перевелся
- Упрощенная работа с pluralized – их тоже можно определять и переводить, не закрывая исходный файл кода
- Скачать текущую актуальную версию можно здесь
SQLite – структуры данных под капотом
SQLite – одна из самых простых и благодаря этому надежных баз данных. В статье подробно рассматриваются алгоритмы кодирования данных в ней, используемые структуры данных и алгоритмы поиска по ним.
SQLite – одна из самых простых и благодаря этому надежных баз данных. В статье подробно рассматриваются алгоритмы кодирования данных в ней, используемые структуры данных и алгоритмы поиска по ним.
Успеть за 60 секунд
У вашего приложения есть 60 секунд на то, чтобы стартовать, иначе системный watchdog его убьет. Посмотрите на интересный кейс со стектрейсом – приложение не успевает запуститься за выделенное время, потому что система не выделяет ему на это ресурсы и занимает CPU чем-то другим.
У вашего приложения есть 60 секунд на то, чтобы стартовать, иначе системный watchdog его убьет. Посмотрите на интересный кейс со стектрейсом – приложение не успевает запуститься за выделенное время, потому что система не выделяет ему на это ресурсы и занимает CPU чем-то другим.
Content transition в SwiftUI
В последней версии SwiftUI появился встроенный механизм анимаций для изменений контента вьюшки. Например, текста или прозрачности TextView. Чтобы это заработало, достаточно просто использовать view modifier .contentTransition.
В последней версии SwiftUI появился встроенный механизм анимаций для изменений контента вьюшки. Например, текста или прозрачности TextView. Чтобы это заработало, достаточно просто использовать view modifier .contentTransition.
Swift with Majid
Content transition in SwiftUI
View transitions are available from the very first version of the SwiftUI framework. The framework can apply a particular transition whenever the view is removed or added to the view hierarchy. The latest iteration of the SwiftUI framework brings us a new…
Воркшоп по KMM
Оптимальный способ использования KMM – взять бизнес-логику, уже реализованную в Android, и конвертировать ее в общий модуль, который будет работать и в iOS. 16 августа в 20:00 мск, Анна Жаркова расскажет, как конкретно Android код адаптируется для работы в iOS, про общую кроссплафторменную архитектуру и про то, какие подводные камни могут встретиться при реализации.
Вебинар пройдет в рамках специализации «iOS Developer» на онлайн-платформе OTUS.
Оптимальный способ использования KMM – взять бизнес-логику, уже реализованную в Android, и конвертировать ее в общий модуль, который будет работать и в iOS. 16 августа в 20:00 мск, Анна Жаркова расскажет, как конкретно Android код адаптируется для работы в iOS, про общую кроссплафторменную архитектуру и про то, какие подводные камни могут встретиться при реализации.
Вебинар пройдет в рамках специализации «iOS Developer» на онлайн-платформе OTUS.
Проверка безопасности приложения на CI
- MobSF – коллекция инструментов для автоматизированных проверок безопасности
- Среди них есть mobsfscan, который проходит по всей кодовой базе и выдает отчет с уязвимостями
- Его можно запускать на CI и использовать результаты проверок как блокеры на PR
- Это решение не даст 100% гарантий безопасности, но поможет не допустить уже известные ошибки
- MobSF – коллекция инструментов для автоматизированных проверок безопасности
- Среди них есть mobsfscan, который проходит по всей кодовой базе и выдает отчет с уязвимостями
- Его можно запускать на CI и использовать результаты проверок как блокеры на PR
- Это решение не даст 100% гарантий безопасности, но поможет не допустить уже известные ошибки
Benoit Pasquier
Security Application Static Analysis applied to iOS and Gitlab CI
Security is a big topic in software engineering but how does it apply to mobile development? We care about user experience or mobile performance, security issues are rarely prioritized. This week, I’ll share how to integrate security tools into your CI pipeline…
Как работают 3D трансформации View
Топовая серия постов про устройство матриц CATransform3D и линейную алгебру, используемую для расчетов трансформаций.
Топовая серия постов про устройство матриц CATransform3D и линейную алгебру, используемую для расчетов трансформаций.
Советы по работе с Accessibility
Разработчик организовал себе челлендж – каждый день постить один твит про работу с Accessibility в iOS в течение года. Набралось уже 80 советов, среди которых есть много интересных идей.
- О событиях в приложении, которые происходят асинхронно, можно уведомлять через CoiceOver. По умолчанию такие уведомления прерывают друг друга. Чтобы этого не происходило, можно складывать их в очередь, передав специальный параметр в атрибутах.
- Если в результате действий пользователя меняется лэйаут, хорошей практикой будет переместить фокус VoiceOver, отправив layout changed notification.
- Если установить у вьюшки свойство isAccessibilityElement в true, то движок Accessibility перестанет учитывать ее сабвью, и все, что расположено на ней, перестанет быть доступно.
Разработчик организовал себе челлендж – каждый день постить один твит про работу с Accessibility в iOS в течение года. Набралось уже 80 советов, среди которых есть много интересных идей.
- О событиях в приложении, которые происходят асинхронно, можно уведомлять через CoiceOver. По умолчанию такие уведомления прерывают друг друга. Чтобы этого не происходило, можно складывать их в очередь, передав специальный параметр в атрибутах.
- Если в результате действий пользователя меняется лэйаут, хорошей практикой будет переместить фокус VoiceOver, отправив layout changed notification.
- Если установить у вьюшки свойство isAccessibilityElement в true, то движок Accessibility перестанет учитывать ее сабвью, и все, что расположено на ней, перестанет быть доступно.
Реализация градиентов на шейдерах
Первая статья из планируемого цикла разработки шейдеров на Metal. Автор сравнивает реализацию градиента на CPU и GPU с 1D и 2D текстурами.
Первая статья из планируемого цикла разработки шейдеров на Metal. Автор сравнивает реализацию градиента на CPU и GPU с 1D и 2D текстурами.
Как использовать UIPasteControl, чтобы работать с буфером обмена
Начиная с iOS 16, приложения не могут свободно читать содержимое буфера обмена. Вместо этого у пользователя каждый раз запрашивается разрешение. Способ обойти запрос разрешения – использовать новый UIPasteControl.
Начиная с iOS 16, приложения не могут свободно читать содержимое буфера обмена. Вместо этого у пользователя каждый раз запрашивается разрешение. Способ обойти запрос разрешения – использовать новый UIPasteControl.
SwiftUI и навигация через Tab
На macOS можно переходить между полями ввода с помощью нажатия Tab. Это удобно при работе с большими формами. В статье рассказывается, как можно переопределить логику определения следующего поля для фокуса, если поведение по умолчанию вам не подходит.
На macOS можно переходить между полями ввода с помощью нажатия Tab. Это удобно при работе с большими формами. В статье рассказывается, как можно переопределить логику определения следующего поля для фокуса, если поведение по умолчанию вам не подходит.
Nil Coalescing
Adjust the direction of focus-based navigation in SwiftUI
We can customize how the user navigates through focusable views in our macOS apps with the help of the new focusSection() modifier.
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.
Как устроено логирование в приложении Авито
- Точки отказа в мобильных приложениях
- Классификация типов ошибок
- Как в архитектуру приложения встроена система репортинга и логирования разных типов ошибок
- Зачем и как логировать ошибки с экранов приложения
- Примеры пользы, полученной от детального логирования
- Точки отказа в мобильных приложениях
- Классификация типов ошибок
- Как в архитектуру приложения встроена система репортинга и логирования разных типов ошибок
- Зачем и как логировать ошибки с экранов приложения
- Примеры пользы, полученной от детального логирования
Создание и поддержка фермы из 200 Mac Mini
- Каждый день Agoda гоняет 800 билдов на CI, в рамках каждого из которых проходит 23000 тестов
- Быстрый рост количества тестов сделал невыгодными сторонние сервисы
- Детали про организацию электроснабжения и охлаждения фермы
- Подходы к виртуализации
- Плюсы и минусы поддержки своей фермы
- Каждый день Agoda гоняет 800 билдов на CI, в рамках каждого из которых проходит 23000 тестов
- Быстрый рост количества тестов сделал невыгодными сторонние сервисы
- Детали про организацию электроснабжения и охлаждения фермы
- Подходы к виртуализации
- Плюсы и минусы поддержки своей фермы
Разбор нового компонента SwiftUI – Gauge
- Gauge – это view, которая умеет отображать прогресс изменения какого-то значения
- У Gauge есть много стилей: accessoryCircular, accessoryCircularCapacity, accessoryLinear, accessoryLinearCapacity, defaultStyle
- В твиттер-треде показаны видео с примерами его работы и короткие сниппеты с настройкой
- Gauge – это view, которая умеет отображать прогресс изменения какого-то значения
- У Gauge есть много стилей: accessoryCircular, accessoryCircularCapacity, accessoryLinear, accessoryLinearCapacity, defaultStyle
- В твиттер-треде показаны видео с примерами его работы и короткие сниппеты с настройкой
Как работать с NSZombie не только локально
- NSZombie – это механизм, позволяющий отлавливать ошибки типа EXC_BAD_ACCESS
- Предоставляемый Apple тулинг работает только локально
- Похожую функциональность можно реализовать самостоятельно, включить на пользователях тестфлайта и получать в Crashlytics подробную информацию о крешах
- В продакшн тащить такой подход не рекомендуется
- Код доступен здесь
- NSZombie – это механизм, позволяющий отлавливать ошибки типа EXC_BAD_ACCESS
- Предоставляемый Apple тулинг работает только локально
- Похожую функциональность можно реализовать самостоятельно, включить на пользователях тестфлайта и получать в Crashlytics подробную информацию о крешах
- В продакшн тащить такой подход не рекомендуется
- Код доступен здесь
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…
Новый Grid Layout в SwiftUI
- Новый вид сетки сразу же отрисовывает все дочерние элементы в отличие от LazyVGrid или LazyHGrid
- Настраивать можно как расстояния между рядами и столбцами, так и поведение внутри ячейки
- Разумно использовать этот контрол по умолчанию, и переключаться на Lazy версию только при работе с большим количеством данных
- Новый вид сетки сразу же отрисовывает все дочерние элементы в отличие от LazyVGrid или LazyHGrid
- Настраивать можно как расстояния между рядами и столбцами, так и поведение внутри ячейки
- Разумно использовать этот контрол по умолчанию, и переключаться на Lazy версию только при работе с большим количеством данных