Telegram Web Link
Воркшоп по KMM

Оптимальный способ использования KMM – взять бизнес-логику, уже реализованную в Android, и конвертировать ее в общий модуль, который будет работать и в iOS. 16 августа в 20:00 мск, Анна Жаркова расскажет, как конкретно Android код адаптируется для работы в iOS, про общую кроссплафторменную архитектуру и про то, какие подводные камни могут встретиться при реализации.

Вебинар пройдет в рамках специализации «iOS Developer» на онлайн-платформе OTUS.
👎19😁19👍6😢4
Проверка безопасности приложения на CI

- MobSF – коллекция инструментов для автоматизированных проверок безопасности
- Среди них есть mobsfscan, который проходит по всей кодовой базе и выдает отчет с уязвимостями
- Его можно запускать на CI и использовать результаты проверок как блокеры на PR
- Это решение не даст 100% гарантий безопасности, но поможет не допустить уже известные ошибки
👎3🤡3
Как работают 3D трансформации View

Топовая серия постов про устройство матриц CATransform3D и линейную алгебру, используемую для расчетов трансформаций.
🔥22👏1
Советы по работе с Accessibility

Разработчик организовал себе челлендж – каждый день постить один твит про работу с Accessibility в iOS в течение года. Набралось уже 80 советов, среди которых есть много интересных идей.

- О событиях в приложении, которые происходят асинхронно, можно уведомлять через CoiceOver. По умолчанию такие уведомления прерывают друг друга. Чтобы этого не происходило, можно складывать их в очередь, передав специальный параметр в атрибутах.
- Если в результате действий пользователя меняется лэйаут, хорошей практикой будет переместить фокус VoiceOver, отправив layout changed notification.
- Если установить у вьюшки свойство isAccessibilityElement в true, то движок Accessibility перестанет учитывать ее сабвью, и все, что расположено на ней, перестанет быть доступно.
👍22👏5💯1
Реализация градиентов на шейдерах

Первая статья из планируемого цикла разработки шейдеров на Metal. Автор сравнивает реализацию градиента на CPU и GPU с 1D и 2D текстурами.
🔥40😱6👍4❤‍🔥3
Как использовать UIPasteControl, чтобы работать с буфером обмена

Начиная с iOS 16, приложения не могут свободно читать содержимое буфера обмена. Вместо этого у пользователя каждый раз запрашивается разрешение. Способ обойти запрос разрешения – использовать новый UIPasteControl.
🤯28🔥8🌚3👍1
SwiftUI и навигация через Tab

На macOS можно переходить между полями ввода с помощью нажатия Tab. Это удобно при работе с большими формами. В статье рассказывается, как можно переопределить логику определения следующего поля для фокуса, если поведение по умолчанию вам не подходит.
🤡8👍4👎3🕊2
Sendable и @Sendable

Среди последних нововведений в Swift Concurrency появились протокол Sendable и одноименный атрибут для функций. Их задача – гарантировать типобезопасность при передачи значений в многопоточном коде. В статье разбираются детали и ограничения работы с протоколом и то, как подготовить свой код к strict concurrency checking в Swift 6.
👍20👎3🔥1
Как устроено логирование в приложении Авито

- Точки отказа в мобильных приложениях
- Классификация типов ошибок
- Как в архитектуру приложения встроена система репортинга и логирования разных типов ошибок
- Зачем и как логировать ошибки с экранов приложения
- Примеры пользы, полученной от детального логирования
🤡48👍14🤔4
Создание и поддержка фермы из 200 Mac Mini

- Каждый день Agoda гоняет 800 билдов на CI, в рамках каждого из которых проходит 23000 тестов
- Быстрый рост количества тестов сделал невыгодными сторонние сервисы
- Детали про организацию электроснабжения и охлаждения фермы
- Подходы к виртуализации
- Плюсы и минусы поддержки своей фермы
🤯34🔥8👍21
Разбор нового компонента SwiftUI – Gauge

- Gauge – это view, которая умеет отображать прогресс изменения какого-то значения
- У Gauge есть много стилей: accessoryCircular, accessoryCircularCapacity, accessoryLinear, accessoryLinearCapacity, defaultStyle
- В твиттер-треде показаны видео с примерами его работы и короткие сниппеты с настройкой
👍33🌚12
Как работать с NSZombie не только локально

- NSZombie – это механизм, позволяющий отлавливать ошибки типа EXC_BAD_ACCESS
- Предоставляемый Apple тулинг работает только локально
- Похожую функциональность можно реализовать самостоятельно, включить на пользователях тестфлайта и получать в Crashlytics подробную информацию о крешах
- В продакшн тащить такой подход не рекомендуется
- Код доступен здесь
👍17
Новый Grid Layout в SwiftUI

- Новый вид сетки сразу же отрисовывает все дочерние элементы в отличие от LazyVGrid или LazyHGrid
- Настраивать можно как расстояния между рядами и столбцами, так и поведение внутри ячейки
- Разумно использовать этот контрол по умолчанию, и переключаться на Lazy версию только при работе с большим количеством данных
🔥9👍3👎2
Воркшоп по архитектуре Flux

MVVM – отличная архитектура, но при использовании ее со SwiftUI возникает много проблем. 22 августа в 20:00 Ексей Пантелеев расскажет, с какими проблемами приходится сталкиваться, как их можно решить, расширив MVVM с помощью SOA и Coordinator’ов, и покажет, как можно строить архитектуру по принципам Flux.

Вебинар является частью онлайн-курса «iOS Developer. Professional» от OTUS. Партнер курса: Certiport.
🤡61👍14👎4❤‍🔥3
Fucking Format Style

Подробная документация по FormatStyle и ParseableFormatStyle. Удобно смотреть все возможные атрибуты для перевода различных типов данных в локализованные строки.
❤‍🔥26🔥1
Kintsugi – решение конфликтов в project.pbxproj

При конфликте Kintsugi анализирует изменения, сделанные в pbxproj файле, отменяет их, и делает заново.
🤔20🌚5🤡4👎3😱3👍2🔥1
Пропозал по миграции компилятора Swift на Swift

- Важный этап в развитии любого языка – это бутстраппинг. Этот термин означает, что для того, чтобы скомпилировать новую версию компилятора, используется предыдущая версия этого же компилятора.
- Большая часть компилятора Swift написана на С++ и для ее компиляции Swift не нужен
- Исключение – несколько опциональных компонентов, которые уже реализованы на Swift. Среди них – Swift Driver, управляющий процессом компиляции, экспериментальный движок для pattern matching и некоторые SIL passes.
- Автор пропозала предлагает начать переписывать на Swift не только опциональные части компилятора
- Пост интересен в том числе как хороший инсайт в то, как сейчас организован процесс сборки компилятора
👍28👎4🥰2
2025/07/08 18:51:14
Back to Top
HTML Embed Code: