Mobile Party в Ozon Tech для iOS разработчиков
Ozon Tech ищет мобильных Middle- и Senior-разработчиков. Поэтому ребята 4 июня устраивают Mobile Need For Tech — событие, совмещающее финальные собеседования и офлайн-вечеринку, где вы сможете неформально пообщаться с разработчиками Ozon Tech.
Вас ждёт насыщенная программа: экскурсия по офису, NFT-выставка и фуршет с приглашённым диджеем.
Чтобы туда попасть, нужно пройти несколько этапов:
1. Подать заявку: https://bit.ly/39rVaZP
2. Успешно пройти предварительное интервью
3. Прийти на финальное собеседование 4 июня
Если живёте не в Москве, Ozon Tech оплатит потенциальным кандидатам поездку на мероприятие.
Иду на Mobile Party
Ozon Tech ищет мобильных Middle- и Senior-разработчиков. Поэтому ребята 4 июня устраивают Mobile Need For Tech — событие, совмещающее финальные собеседования и офлайн-вечеринку, где вы сможете неформально пообщаться с разработчиками Ozon Tech.
Вас ждёт насыщенная программа: экскурсия по офису, NFT-выставка и фуршет с приглашённым диджеем.
Чтобы туда попасть, нужно пройти несколько этапов:
1. Подать заявку: https://bit.ly/39rVaZP
2. Успешно пройти предварительное интервью
3. Прийти на финальное собеседование 4 июня
Если живёте не в Москве, Ozon Tech оплатит потенциальным кандидатам поездку на мероприятие.
Иду на Mobile Party
Переход к async/await в Swift влечет за собой и пересмотр того, как мы подходим к обработке ошибок. Вместо передачи Result в коллбэке мы можем использовать throw-catch.
В статье разбирается несколько подходов к тому, как работать с ошибками в новой парадигме.
В статье разбирается несколько подходов к тому, как работать с ошибками в новой парадигме.
Swift with Majid
Modeling errors in Swift
The new Swift Concurrency feature doesn’t only bring new opportunities for writing safer and more maintainable async code but also changes the way we handle errors. I didn’t use throw-catch keywords too much in my legacy code because usually, I had a completion…
Немного tech porn – мокап нового процессора M2 от Apple
SwiftUI меняется очень быстро. Для реализации одной и той же логики в SwiftUI версий 1, 2 и 3 часто нужно писать разный код. В статье рассматривается классный подход, который позволит не забыть удалить устаревшие места в вашей кодовой базе, когда вы решите бросить поддержку старых версий SwiftUI или любых других фреймворков.
Комбинируйте
Комбинируйте
#if
с условиями, объявленными в Build Settings, например: #if TARGETING_SWIFTUI_2 || TARGETING_SWIFTUI_1
, и компилятор напомнит вам удалить ставшие ненужными воркэраунды при обновлении версии фреймворка.Dave DeLong
Conditional Compilation, Part 4: Deployment Targets
Recently I was thinking about the idea I’d posted on simplifying backwards compatibility in Swift, and was also thinking about some of the principles of kindness that I wrote about in my article on API design.
23-29 мая пройдет серия бесплатных конкурсов по SwiftUI.
📆Понедельник – на скорость реализуете дизайн по предоставленному скриншоту
📆Вторник – делитесь известными вам хаками и воркэраундами в SwiftUI
📆Среда – реализуете микроанимации
📆Четверг – делаете простое приложение для macOS
📆Пятница – добавляете в семпловое приложение так много accessibility фичей, как только сможете
Отличная возможность потренироваться в SwiftUI!
📆Понедельник – на скорость реализуете дизайн по предоставленному скриншоту
📆Вторник – делитесь известными вам хаками и воркэраундами в SwiftUI
📆Среда – реализуете микроанимации
📆Четверг – делаете простое приложение для macOS
📆Пятница – добавляете в семпловое приложение так много accessibility фичей, как только сможете
Отличная возможность потренироваться в SwiftUI!
Apple представила новые Accessibility фичи, не дожидаясь WWDC:
🚪Door Detection, с помощью камеры и лидара определяющая местонахождение двери и способ ее открытия
⌚️Apple Watch Mirroring на айфон с возможностью управления часами с помощью Voice Control и других фичей
💬Live Captions – автоматические субтитры для любого аудиоконтента, включая звонки, на iOS/macOS
🚪Door Detection, с помощью камеры и лидара определяющая местонахождение двери и способ ее открытия
⌚️Apple Watch Mirroring на айфон с возможностью управления часами с помощью Voice Control и других фичей
💬Live Captions – автоматические субтитры для любого аудиоконтента, включая звонки, на iOS/macOS
Apple Newsroom
Apple previews innovative accessibility features
Apple today previewed innovative software features that introduce new ways for users with disabilities to get the most out of Apple products.
В последнее время процесс ревью в App Store стал занимать намного меньше времени, чем годы назад. Расскажите, сколько в среднем за последние месяцы у вас занимало ревью без учета дополнительных этапов и реджектов!
Anonymous Poll
2%
До 30 минут
4%
От 30 минут до 2 часов
13%
От 2 до 12 часов
12%
От 12 часов до дня
14%
1-2 дня
3%
2-4 дня
2%
5-7 дней
2%
Больше недели
48%
Посмотреть результаты
Разбор отличий в том, как организована работа со подсчетом ссылок в Swift 3 и Swift 4. А если захотите более глубокого погружения в тему, то вам – в классику от Mike Ash.
Medium
A deep dive into Swift reference counting
Disclaimer: This is not a beginner level article on reference counting. This article assumes that you have some basic idea on ARC in Swift.
В работе со Swift Packages в Xcode есть масса неудобств и ограничений, которые пока не поправили. Если вы страдаете от них, попробуйте перейти на VSCode со Swift плагином – кажется, там все реализовано существенно лучше.
Tim Condon
Editing Swift Packages in Visual Studio Code | Tim Condon
Learn how to edit Swift packages in VSCode with the Swift for VSCode extension
Если вы загружаете Xcode не из App Store, а напрямую с сайта Apple, то вы получаете его в виде *.xip архива. Распаковка его стандартными средствами работает медленно, и, если вы часто скачиваете предрелизные версии, это может начать раздражать. Попробуйте утилиту unxip, которая написана специально для работы с этим форматом и быстрой распаковки Xcode.
GitHub
GitHub - saagarjha/unxip: A fast Xcode unarchiver
A fast Xcode unarchiver. Contribute to saagarjha/unxip development by creating an account on GitHub.
Серия статей про Metal для тех, кто хочет вкатиться в тему:
📌Введение в Metal и разбор основных компонентов
📌Рендеринг с текстурами и шейдерами
📌Работа с прозрачностью
📌Сглаживание
📌Введение в Metal и разбор основных компонентов
📌Рендеринг с текстурами и шейдерами
📌Работа с прозрачностью
📌Сглаживание
Moog Engineering
Metal Part 1: Basics - Moog Engineering
Since Apple released Metal in 2014, it has become the leading graphics API (application programming interface) for iOS and macOS. During that time, Moog has used Metal in Model 15, Model D, and, most recently, Animoog Z. Moog uses rendering APIs like Metal…
31 мая в 18:00 пройдет онлайновый Avito iOS Meetup. В программе новая модульная система Авито, диплинки и особенности логирования ошибок в аналитику.
Регистрируйтесь и добавляйте в календарь
Регистрируйтесь и добавляйте в календарь
avitotech.timepad.ru
Avito iOS meetup #9 / События на TimePad.ru
На свежем iOS-митапе выступаят трое спикеров из платформенных команд Авито. Они занимаются созданием инструментов для iOS-разработчиков компании и расскажут про нашу новую систему модульности, deep linking и логирование ошибок.
Пять видеоуроков PointFree про парсинг сырого инпута в структуры данных
💻Использование библиотеки swift-parsing для написания своих парсеров
🍏Сравнение со Swift Regex DSL
🚏Реализация URL роутинга в iOS приложении
🕸Реализация роутинга в серверном Vapor приложении
🔂Трансформация URL роутеров в API клиенты
💻Использование библиотеки swift-parsing для написания своих парсеров
🍏Сравнение со Swift Regex DSL
🚏Реализация URL роутинга в iOS приложении
🕸Реализация роутинга в серверном Vapor приложении
🔂Трансформация URL роутеров в API клиенты
www.pointfree.co
Parsing › Tour of Parser-Printers
A tour of our parser-printer library for parsing unstructured data into structure data, and simultaneously being able to print the unstructured data back into structured data. We built a few parser-printers from scratch, building up complexity along the way…
Пару месяцев назад я выкладывал в канале опрос про то, планируют ли мобильные разработчики релоцироваться. Автор подвела результаты и выложила статью с аналитикой. Ответ на ваш главный вопрос – 40% планирует уехать, 48% не планирует, 12% уже уехали
rb.ru
В поисках мобильных разработчиков. Рекомендации для компаний и результаты опроса | RB.RU
Участники поделились, планируют ли релокацию, какие условия работы для них важны и др.
QuickLook framework можно использовать не только для просмотра различных редких типов файлов, но и как браузер для изображений с поддержкой отличной анимации его закрытия.
Twitter
Jordan Morgan
What!! I was today year's old when I realized you can use the QuickLook framework to perform this custom view controller transition for you.... ....with one delegate method 🤯 I have written this transition myself several times, and it is *not* trivial to…
Тип Color в SwiftUI не является Codable по умолчанию. В статье разбирается, как сериализовать оба типа цветов – константные и динамические, меняющиеся в зависимости от контекста. Если хочется сразу посмотреть код – то вот GitHub.
Nil Coalescing
Encode and decode SwiftUI color
Add custom encoding and decoding logic for SwiftUI Color that is not Codable by default to be able to save it to disk or remote database.
Выполнять базовые операции с Git умеет каждый iOS разработчик. Но вот более редкие фичи, которые иногда могут сэкнономить бесконечность времени, знают не все. Несколько примеров:
🕵🏻♂️`git bisect` – бинарный поиск коммита, внесшего баг в код, по всей истории за нужный интервал времени
🧊`git lfs` – расширение, позволяющее версионировать различные большие файлы
🍒`git cherry-pick` – перенос отдельных коммитов из одной ветки в другую
Если вы хотите улучшить свои знания Git, держите видеокурс от наших партнеров. Но, чтобы получить к нему доступ, сначала придется пройти тест на настоящего iOS разработчика!
🕵🏻♂️`git bisect` – бинарный поиск коммита, внесшего баг в код, по всей истории за нужный интервал времени
🧊`git lfs` – расширение, позволяющее версионировать различные большие файлы
🍒`git cherry-pick` – перенос отдельных коммитов из одной ветки в другую
Если вы хотите улучшить свои знания Git, держите видеокурс от наших партнеров. Но, чтобы получить к нему доступ, сначала придется пройти тест на настоящего iOS разработчика!
Если вы подключаете через SPM к проекту зависимости с большим объемом исходного кода, то можете встретить кучу проблем с перфомансом. Чтобы это обойти, попробуйте подключать их сразу скомпилированными в XCFramework. В статье разбирается, как это сделать.
Хабр
Правильно подключаем тяжелые зависимости к Xcode проекту через Swift Package Manager
В этой статье я расскажу о проблемах с которыми я столкнулся при подключении тяжелых зависимостей к iOS проекту с помощью Swift Package Manager и о способе их решения. Тяжелые зависимости Для начала...
В январе проскакивала новость, что Apple добавили в App Store новый тип распространения приложений – Unlisted. При его использовании приложение недоступно в каталоге и через поиск, и открыть его можно только по ссылке. В статье детально разбирается процесс публикации приложения в таком статусе, формы, которые надо заполнять, и проблемы, к котором могут придраться на ревью.
Bendodson
Unlisted App Distribution on the App Store
The somewhat uninituitive steps to get a private app distribution link on the App Store
В Swift 5.6 в SPM завезли поддержку плагинов:
📌Build Tools, которые запускаются до и во время сборки
📌Commands, которые запускаются с помощью CLI
В гайде разбирается, как созлавать простые Command-плагины, как со своей собственной логикой, так и обертки над другими инструментами вроде swift-format.
📌Build Tools, которые запускаются до и во время сборки
📌Commands, которые запускаются с помощью CLI
В гайде разбирается, как созлавать простые Command-плагины, как со своей собственной логикой, так и обертки над другими инструментами вроде swift-format.
Theswiftdev
Beginner's guide to Swift package manager command plugins - The.Swift.Dev.
Learn how to create command plugins for the Swift Package Manager to execute custom actions using SPM and other tools.