iOS Good Reads – swift, разработка мобильных приложений, архитектура, блокчейн, VR, AR, карьера, IT
12.5K subscribers
695 photos
65 videos
4.07K links
Самые интересные статьи, видео и новости, связанные с iOS разработкой. Не больше трёх материалов в день.

Регистрация в РКН: https://gosuslugi.ru/snet/67b464d698a28c4e866d827a

Размещение рекламы: @tanyasanovna
Download Telegram
Большое исследование тимлидов и руководителей разработки

Из айосеров обычно получаются лучшие руководители разработки, потому что если ты познал покраску вьюшек, то познал практически все. Поэтому очень жду вашего участия в моем новом исследовании тимлидов. Если вы руководите кем-то, проходите его сами, а если руководят вами, отправляйте своему тимлиду! Результаты будут в открытом доступе в конце марта.

🤔Какие навыки для руководителей самые важные
💰По каким критериям оценивают их работу
💻Сколько времени уходит на написание кода
👋Как попадают в профессию, и куда из нее уходят
📚Полезные для развития каналы, курсы и книги

👉Пройти опрос
🤡25😁11👍6🔥1🌭1
Пропозал по добавлению в Swift `package` – нового модификатора видимости

Если вы хотите сделать какие-то функции доступными всем модулям внутри пакета, но при этом недоступными другим пакетам, нормальной возможности для этого у вас нет. Приходится все объявлять public, но это сильно усложняет дальнейшую поддержку публичного API.

В пропозале предлагается добавить в Swift новый модификатор видимости – package. Он делает символы публичными в рамках текущего пакета, но при этом они не доступны его внешним пользователям. В первую очередь фича будет полезна авторам библиотек, поэтому, если среди вас такие есть, залетайте в обсуждение и накидывайте на вентилятор – продлится оно до 8 февраля.
👍28👎8🔥2🤡1🌭1
Доступ к командной строке из XCTest

Представьте, что вы сможете получить доступ к консоли прямо из тела теста. Это может открыть много неочевидных полезных возможностей:

📱Дергать недоступные через XCTest API фичи симулятора – отправку пушей, подмену локации, захват экрана
🎁Настраивать полноценный внешний мок-сервер
💻Выполнять любые действия с macOS через AppleScript

Реализация довольно очевидная – поднимаете локальный HTTP сервер, он дергает нужные команды в консоли, и возвращает их результат обратно в тест.

Перевод на русский язык
👍17🔥3🤡1🌭1
Как работает очистка URLCache

В документации нигде не рассказано, как URLCache ведет себя при достижении лимита по памяти. Очевидное предположение о том, что под капотом используется LRU алгоритм неверно – на практике URLCache удаляет вообще все закешированное, как только упрется в лимит.

Автор попробовал отнаследоваться от URLCache и переопределить это поведение, так как в целом документация предполагает такой сценарий. Но это оказалось очень плохой идеей.

Перевод на русский язык
👍8😁7🔥1🤡1🌭1
This media is not supported in your browser
VIEW IN TELEGRAM
Лучший способ показывать пароль при логине

Не очень очевидный, но очень милый способ показывать и прятать введенный пароль.
🔥129🤡54💅31👏118❤‍🔥4😁2🌭2🤔1🗿1
Ускорение старта приложения DoorDash

DoorDash оптимизировали время старта приложения на 60% с помощью следующего:

🖌️Переезд со String(describing:) на ObjectIdentifier – это помогло избавиться от подкапотных protocol conformance checks.
🤷‍♂️Отказ от использования AnyHashable в пользу все того же ObjectIdentifier.
👀Аудит сторонних фреймворков, и перенос инициализации на время после вызова main().

Перевод на русский язык
❤‍🔥30👍11💅6🔥4🤡1🌭1
Как следить за позицией скролла в SwiftUI

ScrollView в SwiftUI, в отличие от UIScrollView из UIKit, не дает простого способа следить за изменением позиции скролла. В статье разбирается, как с помощью GeometryReader можно получать текущий фрейм content view, а потом переводить его в нужную нам систему координат. Как бонус – вспомните, как вообще под капотом работает скролл!

Перевод на русский язык
🤡27👍22🔥2👎1💅1
Темизация кастомных компонентов SwiftUI

Большой гайд по использованию SwiftUI view style API для того, чтобы переиспользовать стили между различными кастомными компонентами в приложении. Помимо цветов, выравнивнивания и других визуальных параметров, темизации так же поддаются и параметры accessibility.

Перевод на русский язык
👍29🔥1💅1
Как создавать кастомные SF Symbols

Если вы хотите использовать один из существующих SF Symbols, но он не до конца вас устраивает, его можно подкрутить вручную:

📥Экспортируйте его из SF Symbols через File->Export, и откройте в Sketch
🖌️Подкрутите нужный вам слой
📤Экспортируйте его в SVG и перенесите обратно в SF Symbols

Перевод на русский язык
17💅9👍7😱5😁2
Как ускорить инкрементальный билд, если вы используете SwiftLint

warning build: Run script build phase 'SwiftLint' will be run during every build because it does not specify any outputs

Если вы видите такой ворнинг в своем проекте, то статья помодет не только избавиться от него, но и существенно ускорить инкрементальный билд, благодаря тому, что SwiftLint будет запускаться не всегда.

Перевод на русский язык
🤡16👍6💅6🔥5🗿1
Перевод GitHub Action Runners на self hosted macOS виртуалки

- Cilicon – инструмент для запуска macOS виртуалок, под капотом которого используется Virtualization Framework.
- Авторы Cilicon используют его для того, чтобы экономить на дорогих macOS агентах в GitHub.
- Помимо экономии, они получили профит и в скорости – MacBook Pro на M1 справляются с задачами где-то в 3 раза быстрее обычных агентов.

Перевод на русский язык
🔥17👍4🤡2😱1💅1
This media is not supported in your browser
VIEW IN TELEGRAM
Play – инструмент для работы с дизайном интерфейсов на iOS

Кажется, это первый полноценный редактор UI на мобильных устройствах. Из интересного:

*️⃣Импорт из Figma
*️⃣Разработка интерактивных макетов с поддержкой жестов
*️⃣В макеты можно встраивать нативные контролы iOS
🤔28🔥16👍5❤‍🔥1💅1
Конференция Podlodka iOS Crew про инфраструктуру

👀Поддержка AB тестирования и аналитики для большого проекта
👀Выстраивание архитектуры сложных CI/CD скриптов
👀Решение dependency hell с помощью Bazel
👀Работа с App Store Connect API без Fastlane
👀Продвинутые фичи Firebase, Gitlab CI и GitHub Actions

А так, все как вы любите – куча воркшопов, разбор экспертами ваших кейсов, прикладные tips&tricks и куча общения в закрытом сообществе в Телеге.

📆Даты: 27 февраля – 3 марта
👍12🔥5🤡2💅1
Эволюция архитектуры iOS приложения Facebook

10 лет быстрого роста команды и постоянно меняющихся требований привели архитектуру Facebook к следующему состоянию:

🤯Классов настолько много, что Xcode не может их загрузить.
📦Apple SDK практически нигде не используется напрямую, вокруг всего написаны свои абстракции.
🛠️Куча кодогенерации на Buck.
Если отключить кастомные механизмы кеширования, билд приложения занимает сутки.

В статье разбирается, как кодовая база дошла до такого состояния и как принимались технические решения.


Перевод на русский язык
🤡60😱20😁5💅41👍1
VK подготовили Weekend Offer в команды Дзена, Почты Mail.ru, Антиспама и Маруси для ML- и мобильных разработчиков

Java-разработчиков тоже ищут, в команде ML Дзена (для тех, кто хотел начать развиваться в ML).

Отклики всех причастных ждут до 16 февраля: до этого времени с вами свяжутся HR, коротко расскажут о командах и назначат слот для онлайн-интервью в выходные.

Оставить отклик можно тут
🤡79👍9👎4🌭1💅1
Как избегать ошибок в релизном пайплайне

В отличие от обычных билдов, релизный пайплайн запускается редко. Из-за этого легко пропустить появление в нем проблем, и столкнуться с ними только в сам момент релиза. Например, такие проблемы састо появляются на этапах архивации и загрузки билда в стор.

В статье предлагается схема регулярных ночных прогонов релизных пайплайнов, которые помогут заметить ошибки максимально рано, и не двигать из-за них дату релиза.

Перевод на русский язык
👍5💅3👎2
Как прокачать работу с i18n в вашем приложении

На первый взгляд, в локализации нет ничего сложного – закидываешь строки в Localizable.strings, отдаешь каким-нибудь переводчикам, и готово. Но не все так просто. С ростом кодовой базы, размера команды или частоты релизов вы начнете сталкиваться с ограничениями такого подхода.

Ребята из OTUS делают классный открытый урок про разные техники работы с локализацией и полезные инструменты, которые могут упростить вам жизнь. В программе воркшопа:

🐞Проблемы с разработкой и тестированием локализации
🛠Кодогенерация с помощью SwiftGen и R.swift
🔢Тонкости работы с плюрализмом в строках
🇬🇧Автоматизация ревью строковых констант с помощью Localinter
💸Платформы для профессиональных переводов строк

Воркшоп является частью онлайн-курса «iOS Developer. Professional» от OTUS
📆16 февраля в 20:00
👉Регистрация
🤡6🔥5👍2👎21💅1