На 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…
👍10👎5🤔5
Как в 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. В моих планах разобраться с работой базовых механик...
🔥45👍3🤩1
Чистый код – это очень расплывчатое понятие (как и архитектура, кек). В каком бы контексте оно не использовалось, полезно пытаться выделить конкретные качества кода, о которых идет речь: читаемость, переиспользуемость, консистентность, тестируемость. Посмотрите на неплохую статью с критикой термина и пополните свой словарик для комментариев на 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
👏10
Смотрите, нашел классное приложение для мака с набором разных полезных для разработчика штук:
- Форматирование и валидация JSON
- Тестирование регулярок
- Генерация UUID
- JWT генератор
- и еще десяток похожих штук
Все это по отдельности реализовано уже сотню раз, но каждый раз гуглить нужный сервис и вспоминать, а какой из них наименее отвратительный, надоедает. Само приложение платное, но из исходников собрать его вроде довольно просто.
https://github.com/DevUtilsApp/DevUtils-app
- Форматирование и валидация JSON
- Тестирование регулярок
- Генерация UUID
- JWT генератор
- и еще десяток похожих штук
Все это по отдельности реализовано уже сотню раз, но каждый раз гуглить нужный сервис и вспоминать, а какой из них наименее отвратительный, надоедает. Само приложение платное, но из исходников собрать его вроде довольно просто.
https://github.com/DevUtilsApp/DevUtils-app
🥰55🔥8👍3👎1
Меня недавно поругали, что как-то маловато появляется прикладных статей, которые помогают улучшить командные процессы разработки. Давайте попробуем почитать большой материал про фичефлаги: их интеграцию в приложение и влияние на процессы разработки. На мой взгляд, ничего нового нет, но давайте проверим, насколько вам понравится.
https://www.offnotes.org/feature-flags/
https://www.offnotes.org/feature-flags/
👍18
☕️Мы дожили до воскресенья, и это успех! Пора заварить чашечку кофе и нагнать пропущенные за неделю материалы. Помните, что я продолжаю писать дайджесты, только пока получаю публичное одобрение (я вообще зависимый от публичного одобрения человек), поэтому ставьте побольше положительных реакций вроде ❤️, 👍 и 🤩 – и я продолжу это делать!
🔥Лучшие материалы недели:
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…
👏47🔥29👍22👎3🥰2❤1🤩1
Довольно холиварная статья от ВК про то, что использование переборов и сопоставлений – возможный признак плохого кода.
https://habr.com/ru/company/vk/blog/646789/
https://habr.com/ru/company/vk/blog/646789/
Хабр
Почему я против enum
Меня зовут Саша Терентьев, я из команды ленты ВКонтакте. В этой статье поделюсь мыслями о проблемах кода, где используются enum и сопоставления типов. Часто...
👎39💩18👍8🤔5🤮2👏1
Максимально простой инструмент, чтобы проверить, как иконка приложения будет выглядеть на вашем устройстве:
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!
👎8👍5
При работе с асинхронным кодом вопросам управления памятью нужно уделять еще больше времени, чем обычно. Например, легко случайно напороться на неявный захват объекта в каком-то из потоков, и получить утечку памяти. В статье рассматриваются особенности управления памятью при работе 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.
👍11🔥1
➡️ Делаем оффер iOS- и Android-разработчикам за один день. Приглашаем в команды Мобильного банка, Тинькофф Инвестиций, Тинькофф Бизнеса и еще трех проектов.
Вы — в течение одного дня общаетесь с нашей командой. Мы — делаем оффер, если работа подойдет вам по условиям, а задачи — по скиллам.
🖇 Все будет онлайн, 19 февраля. Заявки принимаем до 15 февраля включительно. Подробности и регистрация по ссылке: https://l.tinkoff.ru/mobile-onedayoffer
Вы — в течение одного дня общаетесь с нашей командой. Мы — делаем оффер, если работа подойдет вам по условиям, а задачи — по скиллам.
🖇 Все будет онлайн, 19 февраля. Заявки принимаем до 15 февраля включительно. Подробности и регистрация по ссылке: https://l.tinkoff.ru/mobile-onedayoffer
💩10🔥9
Команда 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…
🎉27👍6❤2👎2
В 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,...
👍19👎2
Если с 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.
👍17❤1
Гайд по использованию и настройке утилиты 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…
🔥8👎1
📱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
🔥10👍2
В iOS 15.4 Apple впервые за семь лет пересмотрели свое отношение к поддержке PWA (Progressive Web Applications, стандарт такой для мобильного веба), и наконец-то реализовали поддержку веб-пушей и части других API, которые дают доступ к разным нативным фичам iOS. Это важно, потому что PWA – хорошая альтернатива другим кроссплатформенным решениям, которые позволяют быстро сделать прототип своего продукта.
https://firt.dev/ios-15.4b
https://firt.dev/ios-15.4b
firt.dev
Push Notifications, WebXR, and better PWA support coming to iOS-firt.dev
New APIs, capabilities, bugs, and challenges for Safari and PWAs running in iOS 15.4 and iPadOS 15.4, including Web Push Notifications, WebXR
💩55👍10🤮6🔥3
В обсуждении подходов к работе с диплинками в Mobile Native Foundation разработчики из AirBnb рассказали про свой подход.
Их цель – сделать так, чтобы каждая продуктовая команда отвечала за свои конкретные диплинки, логику их обработки и навигации. Чтобы это работало, core-команда реализовала плагинную систему, в которой каждый диплинк – это плагин, инжектящийся в общий URL handling сервис. Если стало интереснее, почитайте комментарий с деталями.
https://github.com/MobileNativeFoundation/discussions/discussions/144#discussioncomment-2008969
Их цель – сделать так, чтобы каждая продуктовая команда отвечала за свои конкретные диплинки, логику их обработки и навигации. Чтобы это работало, core-команда реализовала плагинную систему, в которой каждый диплинк – это плагин, инжектящийся в общий URL handling сервис. Если стало интереснее, почитайте комментарий с деталями.
https://github.com/MobileNativeFoundation/discussions/discussions/144#discussioncomment-2008969
GitHub
Deeplinking at Scale · MobileNativeFoundation discussions · Discussion #144
Hey y'all, I would like to start a discussion about how Deeplinking is handled in different companies. I didn't find many articles or videos about deeplinking architecture, troubleshooting,...
👍9
Держите памятку с главными шорткатами для Xcode, которые могут полностью заменить собой мышь или тачпад.
https://swiftcraft.io/static/images/xcode-keyboard-only-workflow-print.pdf
https://swiftcraft.io/static/images/xcode-keyboard-only-workflow-print.pdf
👍32🔥25
В открытый доступ выложили все доклады недавней конференции iOS Conf SG 2022. Я пролистал плейлист, и самыми интересными показались следующие:
Continuous Feature Delivery with Scenario Driven App Development процесса
Swift Concurrency Under the Hood
Special Effects with SwiftUI
Continuous Feature Delivery with Scenario Driven App Development процесса
Swift Concurrency Under the Hood
Special Effects with SwiftUI
YouTube
iOS Conf SG 2022 - YouTube
👏10🔥5👍2
Кажется, подошел к концу цикл статей про Microapps Architecture. Напоминаю, что это – развитие идей модульной архитектуры, построенное вокруг SwiftPM.
Можете прочитать последнюю статью про Dependency Injection, а можете, если откладывали, пройтись по всему циклу:
SwiftPM Basics
Feature Modules
Resources and Localization
Dependency Injection
Можете прочитать последнюю статью про Dependency Injection, а можете, если откладывали, пройтись по всему циклу:
SwiftPM Basics
Feature Modules
Resources and Localization
Dependency Injection
Swift with Majid
Microapps architecture in Swift. SPM basics.
This week I want to start a series of posts about the new approach I use to build scalable apps in Swift. Microapps architecture allows you to reduce the compile-time and enhances the separation of concerns in your codebase. Teams can produce a module per…
👍32👎2❤1🔥1