Сегодня Стас Цыганов публикует на Хабре технический радар и подробно рассказывает про опыт iOS-команды Туту:
- как Data-Driven View помогает писать хорошие тесты,
- какие архитектуры пробовали и на чем остановились,
- как ребята режут большое приложение, чтобы у каждой фича-команды была своя комфортная зона ответственности.
https://habr.com/ru/company/tuturu/blog/648073/
p.s. Посмотреть техрадар отдельно от статьи можно здесь.
- как Data-Driven View помогает писать хорошие тесты,
- какие архитектуры пробовали и на чем остановились,
- как ребята режут большое приложение, чтобы у каждой фича-команды была своя комфортная зона ответственности.
https://habr.com/ru/company/tuturu/blog/648073/
p.s. Посмотреть техрадар отдельно от статьи можно здесь.
Хабр
4,5 года из жизни iOS-команды в пяти историях и одном техрадаре
Привет, я Стас, лид мобильной разработки Туту.ру. Хочу поделиться, к чему мы пришли, к чему только идём, а от чего избавились за пять лет, что я в компании. Часть решений может шокировать. Поехали!...
Доклад Peter Steinberger про то, как они в PSPDFKit реализовывали новую фичу с подписями на SwiftUI и с какими ограничениями столкнулись. Посмотрите, если интересно разобраться с:
- Интеграцией SwiftUI с большой легаси кодовой базой
- Работой с поповерами и тулбарами
- Багами с Geometry Reader
- Определением first responder
https://youtube.com/watch?v=mchbpoC19cU
- Интеграцией SwiftUI с большой легаси кодовой базой
- Работой с поповерами и тулбарами
- Багами с Geometry Reader
- Определением first responder
https://youtube.com/watch?v=mchbpoC19cU
YouTube
Peter Steinberger: Evolving Existing Projects With SwiftUI
Presented at Swift Heroes 2021
EVOLVING EXISTING PROJECTS WITH SWIFTUI
Peter Steinberger, Founder, PSPDFKit
In this presentation I'll be looking into strategically evolving existing older projects (that still contain Objective-C) with SwiftUI. We will…
EVOLVING EXISTING PROJECTS WITH SWIFTUI
Peter Steinberger, Founder, PSPDFKit
In this presentation I'll be looking into strategically evolving existing older projects (that still contain Objective-C) with SwiftUI. We will…
Раз мы начали день с языковых фичей, давайте ими же и закончим. Представьте, что у вас есть функция, возвращающая какое-то значение. Бывают случаи, когда вам надо просто ее вызвать без дальнейших операций с ее результатом. Если сделать это напрямую – получите варнинг. Чтобы обойти это, используйте аннотацию
https://twitter.com/BarekJaafar/status/1483577815253532676
@discardableResult.
https://twitter.com/BarekJaafar/status/1483577815253532676
Twitter
Jaafar Barek
💡 Swift Tip: If you have a function that has a return value, but in some scenarios you want to ignore it. You can use "@discardableResult" to avoid warnings or the usage of _ Example: #iOS #Swift #iosdev #programming #development
Статья с описанием того, как конкретно DocC преобразует граф символов в статический контент, и как подготовить его к размещению на GitHub Pages.
https://rhonabwy.com/2022/01/28/hosting-your-swift-library-docs-on-github-pages/
https://rhonabwy.com/2022/01/28/hosting-your-swift-library-docs-on-github-pages/
Rhonabwy
Hosting your Swift Library Docs on Github Pages
The beta for Xcode 13.3 dropped yesterday. With it came a released version of Swift 5.6 and a bunch of neat additions that the 5.6 release enables. A feature I was watching closely was two-fold: th…
iOS Good Reads – swift, разработка мобильных приложений, архитектура, блокчейн, VR, AR, карьера, IT
Я хочу потестить на канале новый формат – Q&A с классными экспертами в iOS разработке. Как это будет выглядеть – в определенный день эксперт подключается к нашему чату и в течение нескольких часов отвечает на все вопросы, которые прилетают. Потом мы из этого…
Готовимся тестировать новый формат на iOS Good Reads – Q&A с экспертами!
📆Дата: 11 февраля (пятница), с 11 до 13 часов
🙌Гость: Александр Зимин, которого вы знаете по бесконечности докладов, победам в контестах, и запускам крутых продуктов.
💬Формат: В 11 часов в следующую пятницу я запощу пост в канале с напоминанием о старте Q&A. В обсуждениях к нему пишите ваши вопросы к Саше, общайтесь, холиварьте и спорьте! После окончания я все подобью в удобный дайджест, чтобы опоздавшим было попроще поднять контекст.
👀Темы общения:
- Работа в стартапах
- Запуск своих проектов
- Из iOS-разработчика в продуктовый менеджмент
- NFT, запуск больших проектов
- Жизнь на Бали, жизнь в Лондоне
Ставьте ❤️, если придете, и приходите в реплаи к посту закидывать ваши идеи по улучшению формата!
📆Дата: 11 февраля (пятница), с 11 до 13 часов
🙌Гость: Александр Зимин, которого вы знаете по бесконечности докладов, победам в контестах, и запускам крутых продуктов.
💬Формат: В 11 часов в следующую пятницу я запощу пост в канале с напоминанием о старте Q&A. В обсуждениях к нему пишите ваши вопросы к Саше, общайтесь, холиварьте и спорьте! После окончания я все подобью в удобный дайджест, чтобы опоздавшим было попроще поднять контекст.
👀Темы общения:
- Работа в стартапах
- Запуск своих проектов
- Из iOS-разработчика в продуктовый менеджмент
- NFT, запуск больших проектов
- Жизнь на Бали, жизнь в Лондоне
Ставьте ❤️, если придете, и приходите в реплаи к посту закидывать ваши идеи по улучшению формата!
На Swift Forum активно обсуждается возможность добавления нового сахара для дженериков – дать возможность в параметрах функции вместо переусложненного синтаксиса использовать ключевое слово
https://forums.swift.org/t/pitch-opaque-parameter-types/54914/21
some.
https://forums.swift.org/t/pitch-opaque-parameter-types/54914/21
Swift Forums
[Pitch] Opaque parameter types
Hi all, Opaque result types have been part of the language for a while now. Ever since the early pitches, we've also talked about using some in parameter positions, which came up again in the recent thread on easing the learning curve for introducing generic…
Как в iOS устроен render loop, какие проблемы с производительностью могут возникнуть на разных его этапах и как с ними бороться.
https://habr.com/ru/post/647177/
https://habr.com/ru/post/647177/
Хабр
Оптимизация рендера в iOS: frame buffer, Render Server, FPS, CPU vs GPU
Render Loop крутится — кадры мутятся. Доброго времени суток, уважаемые читатели. Здесь я начинаю свой цикл статей о работе с графикой в iOS. В моих планах разобраться с работой базовых механик...
Чистый код – это очень расплывчатое понятие (как и архитектура, кек). В каком бы контексте оно не использовалось, полезно пытаться выделить конкретные качества кода, о которых идет речь: читаемость, переиспользуемость, консистентность, тестируемость. Посмотрите на неплохую статью с критикой термина и пополните свой словарик для комментариев на code review.
https://www.steveonstuff.com/2022/01/27/no-such-thing-as-clean-code
https://www.steveonstuff.com/2022/01/27/no-such-thing-as-clean-code
Смотрите, нашел классное приложение для мака с набором разных полезных для разработчика штук:
- Форматирование и валидация JSON
- Тестирование регулярок
- Генерация UUID
- JWT генератор
- и еще десяток похожих штук
Все это по отдельности реализовано уже сотню раз, но каждый раз гуглить нужный сервис и вспоминать, а какой из них наименее отвратительный, надоедает. Само приложение платное, но из исходников собрать его вроде довольно просто.
https://github.com/DevUtilsApp/DevUtils-app
- Форматирование и валидация JSON
- Тестирование регулярок
- Генерация UUID
- JWT генератор
- и еще десяток похожих штук
Все это по отдельности реализовано уже сотню раз, но каждый раз гуглить нужный сервис и вспоминать, а какой из них наименее отвратительный, надоедает. Само приложение платное, но из исходников собрать его вроде довольно просто.
https://github.com/DevUtilsApp/DevUtils-app
Меня недавно поругали, что как-то маловато появляется прикладных статей, которые помогают улучшить командные процессы разработки. Давайте попробуем почитать большой материал про фичефлаги: их интеграцию в приложение и влияние на процессы разработки. На мой взгляд, ничего нового нет, но давайте проверим, насколько вам понравится.
https://www.offnotes.org/feature-flags/
https://www.offnotes.org/feature-flags/
☕️Мы дожили до воскресенья, и это успех! Пора заварить чашечку кофе и нагнать пропущенные за неделю материалы. Помните, что я продолжаю писать дайджесты, только пока получаю публичное одобрение (я вообще зависимый от публичного одобрения человек), поэтому ставьте побольше положительных реакций вроде ❤️, 👍 и 🤩 – и я продолжу это делать!
🔥Лучшие материалы недели:
Apple разрешили выкладывать приложение в App Store в приватном режиме
Устройство render loop
Приложение-органайзер для разработчика
🏎Меня постоянно тянет читать статьи про оптимизацию перфоманса, а на этой неделе их было особенно много.
Перенастраиваем линкер для ускорения запуска
Твиттер-тред с разными советами по оптимизации
Сезон Podlodka iOS Crew про оптимизации перфоманса
👷♀️А теперь ударим в следующую группу – любителей почитать про архитектуру.
Как добавление локализации влияет на кодовую базу
Продолжение цикла про Microapps Architecture
Видео: Интеграция SwiftUI в легаси кодовую базу в PSPDFKit
Нет такой вещи как чистый код
💬Напоминаю, что 11 февраля будет исторический день – в iOS Good Reads появится что-то кроме ссылок на чужие статьи. К нам заглянет Александр Зимин и поотвечает в чате на ваши вопросы про продакт-менеджмент, Бали и NFT стартапы!
👀А если вам хочется читать интересные материалы про что-то кроме iOS, подписывайтесь на мои другие каналы: @leadgr, @droidgr и @qa_channel. Там на этой неделе были вот такие штуки:
У менеджеров есть альтернатива техдолгу – менеджерский долг
Две малоизвестные фичи Charles Proxy
Как тестировать модуль KMM с бизнес-логикой
Поддержите дайджест так, чтобы земля затряслась! Покажите вашу любовь и поставьте самую лучшую реакцибю из тех, что есть у вас под рукой. А если будут идеи, как формат улучшить – пишите в комментариях!
#digest
🔥Лучшие материалы недели:
Apple разрешили выкладывать приложение в App Store в приватном режиме
Устройство render loop
Приложение-органайзер для разработчика
🏎Меня постоянно тянет читать статьи про оптимизацию перфоманса, а на этой неделе их было особенно много.
Перенастраиваем линкер для ускорения запуска
Твиттер-тред с разными советами по оптимизации
Сезон Podlodka iOS Crew про оптимизации перфоманса
👷♀️А теперь ударим в следующую группу – любителей почитать про архитектуру.
Как добавление локализации влияет на кодовую базу
Продолжение цикла про Microapps Architecture
Видео: Интеграция SwiftUI в легаси кодовую базу в PSPDFKit
Нет такой вещи как чистый код
💬Напоминаю, что 11 февраля будет исторический день – в iOS Good Reads появится что-то кроме ссылок на чужие статьи. К нам заглянет Александр Зимин и поотвечает в чате на ваши вопросы про продакт-менеджмент, Бали и NFT стартапы!
👀А если вам хочется читать интересные материалы про что-то кроме iOS, подписывайтесь на мои другие каналы: @leadgr, @droidgr и @qa_channel. Там на этой неделе были вот такие штуки:
У менеджеров есть альтернатива техдолгу – менеджерский долг
Две малоизвестные фичи Charles Proxy
Как тестировать модуль KMM с бизнес-логикой
Поддержите дайджест так, чтобы земля затряслась! Покажите вашу любовь и поставьте самую лучшую реакцибю из тех, что есть у вас под рукой. А если будут идеи, как формат улучшить – пишите в комментариях!
#digest
Apple
Unlisted App Distribution - Support - Apple Developer
Release your apps that aren’t suited for public distribution as unlisted on the App Store, discoverable only with a direct link. Unlisted apps don’t appear in any App Store categories, recommendations, charts, search results, or other listings. In addition…
Довольно холиварная статья от ВК про то, что использование переборов и сопоставлений – возможный признак плохого кода.
https://habr.com/ru/company/vk/blog/646789/
https://habr.com/ru/company/vk/blog/646789/
Хабр
Почему я против enum
Меня зовут Саша Терентьев, я из команды ленты ВКонтакте. В этой статье поделюсь мыслями о проблемах кода, где используются enum и сопоставления типов. Часто...
Максимально простой инструмент, чтобы проверить, как иконка приложения будет выглядеть на вашем устройстве:
1. Загружаете иконку
2. Сохраняете страницу на рабочий стол
3. Профит!
https://iosfeeds.com/tools/icon-preview
1. Загружаете иконку
2. Сохраняете страницу на рабочий стол
3. Профит!
https://iosfeeds.com/tools/icon-preview
Iosfeeds
App Icon Preview | iOS Feeds
Newest iOS/Swift articles and videos from the community + newsletters & podcasts. Learn something new!
При работе с асинхронным кодом вопросам управления памятью нужно уделять еще больше времени, чем обычно. Например, легко случайно напороться на неявный захват объекта в каком-то из потоков, и получить утечку памяти. В статье рассматриваются особенности управления памятью при работе async/await и то, как защититься от частых ошибок.
https://swiftbysundell.com/articles/memory-management-when-using-async-await/
https://swiftbysundell.com/articles/memory-management-when-using-async-await/
Swift by Sundell
Memory management when using async/await in Swift | Swift by Sundell
Managing an app’s memory is something that tends to be especially tricky when it comes to asynchronous code, so let’s take a look at how to do just that when using async/await.
➡️ Делаем оффер iOS- и Android-разработчикам за один день. Приглашаем в команды Мобильного банка, Тинькофф Инвестиций, Тинькофф Бизнеса и еще трех проектов.
Вы — в течение одного дня общаетесь с нашей командой. Мы — делаем оффер, если работа подойдет вам по условиям, а задачи — по скиллам.
🖇 Все будет онлайн, 19 февраля. Заявки принимаем до 15 февраля включительно. Подробности и регистрация по ссылке: https://l.tinkoff.ru/mobile-onedayoffer
Вы — в течение одного дня общаетесь с нашей командой. Мы — делаем оффер, если работа подойдет вам по условиям, а задачи — по скиллам.
🖇 Все будет онлайн, 19 февраля. Заявки принимаем до 15 февраля включительно. Подробности и регистрация по ссылке: https://l.tinkoff.ru/mobile-onedayoffer
Команда Swift уже какое-то время работает над интеропом с C++. Благодаря этому компилятор Swift уже сейчас может импортировать и использовать некоторые плюсовые API, например
На прошлой неделе произошел важный шаг – вокруг проекта по интеропу была сформирована отдельная рабочая группа. Обычно это означает, что направление переходит в разряд фокусных и ему будет уделяться сильно больше внимания. Короче, отличные новости!
Если вам интересно узнать побольше про текущий подход к C++ интеропу, прочитайте этот манифест. А если хотите следить за новостями в этом направлении, то подписывайтесь на эту ветку Swift Forums.
https://forums.swift.org/t/swift-and-c-interoperability-workgroup-announcement/54998
std::vector.
На прошлой неделе произошел важный шаг – вокруг проекта по интеропу была сформирована отдельная рабочая группа. Обычно это означает, что направление переходит в разряд фокусных и ему будет уделяться сильно больше внимания. Короче, отличные новости!
Если вам интересно узнать побольше про текущий подход к C++ интеропу, прочитайте этот манифест. А если хотите следить за новостями в этом направлении, то подписывайтесь на эту ветку Swift Forums.
https://forums.swift.org/t/swift-and-c-interoperability-workgroup-announcement/54998
Swift Forums
Swift and C++ interoperability workgroup announcement
Over the past few years there has been a huge amount of interest in bidirectional interoperability between Swift and C++. Thanks to the hard work of zoecarver, egor.zhdan, gribozavr, Michael Forster, Marcel Hlopko, scentini, and many other contributors, the…
В Swift есть 13 различных числовых типов. Понимать их различия – супер важно, потому что от этого зависит, как вы будете выражать в коде доменную модель вашего приложения. В статье рассматривается тип Decimal, его особенности и подходящие юзкейсы.
https://www.jessesquires.com/blog/2022/02/01/decimal-vs-double/
https://www.jessesquires.com/blog/2022/02/01/decimal-vs-double/
Jesse Squires
When should you use Decimal instead of Double?
In Swift there are 13 numeric types. Like most other programming languages, Swift provides signed integers of various sizes, corresponding unsigned integers,...
Если с Decimal вы разобрались, то можно посмотреть на NSMeasurement – специальный класс для работы с различными единицами измерения, который в паре с соответствующим форматтером еще и хорошо поддается локализации.
https://www.andyibanez.com/posts/using-nsmeasurement-for-working-with-dimensions-and-units/
https://www.andyibanez.com/posts/using-nsmeasurement-for-working-with-dimensions-and-units/
Andy Ibanez - iOS Developer
Using NSMeasurement For Working with Dimensions and Units
Learn how to use NSMeasurement to work with dimensions and units.
Гайд по использованию и настройке утилиты Bloaty McBloatface, которая помогает оценить влияние каждого модуля на итоговый размер бинарника и показывает диффы на CI.
https://asifmohd.github.io/ios/2022/02/03/bloaty-ios-introduction.html
https://asifmohd.github.io/ios/2022/02/03/bloaty-ios-introduction.html
Asif’s Blog
Profiling binary size on iOS using Bloaty
I’ve been using this tool called Bloaty McBloatface1 to attribute the contribution of each swift module or file to our app’s binary. And it has worked out really well for me, the CLI tool is super fast, gives lots of information, supports diffing and has…
📱26 февраля компания Flo проведет онлайн hiring event для Android, iOS и Front-End Web инженеров.
Пройти собеседование, получить job offer и welcome-бонус в размере $5 000 можно всего за несколько часов.
Для участия приглашаются Senior (6+ лет опыта на схожей позиции), а также Middle+ Mobile инженеры.
Чтобы принять участие вам надо пройти регистрацию:
👉Android инженеры https://grnh.se/b4d3a0663us
👉iOS инженеры https://grnh.se/861e33bc3us
👉Web инженеры https://grnh.se/5caa722f3us
Пройти собеседование, получить job offer и welcome-бонус в размере $5 000 можно всего за несколько часов.
Для участия приглашаются Senior (6+ лет опыта на схожей позиции), а также Middle+ Mobile инженеры.
Чтобы принять участие вам надо пройти регистрацию:
👉Android инженеры https://grnh.se/b4d3a0663us
👉iOS инженеры https://grnh.se/861e33bc3us
👉Web инженеры https://grnh.se/5caa722f3us