iOS Makes Me Hate
3.94K subscribers
1.16K photos
168 videos
15 files
1.33K links
Авторский канал про iOS разработку. Путь продуктовых самураев в MAANG.

Самое больше iOS сообщество практиков: https://boosty.to/lionbond/

Автор: @lvbond Senior iOS Yandex, ex-Avito, VK
Download Telegram
📺Подборка реализаций Observer’ов

Одна из самых частых на практике задач — это обновление экрана при изменении какой-то сущности.

Например, вы авторизовались и нужно изменить статус, отправить всем потребителям об изменении свойств:
🔘Добавили товар в корзину и нужно пересчитать стоимость в 3-4 местах.
🔘Удалили услугу из избранного.
🔘измененили статус юзера или его тип.

Если ты этого не делал, то значит не прошел боевой опыт новичка. Почти все плееры или чаты основаны на этом паттерне.

Чтобы это все понять лучше нужно погрузиться глубже. Мы уже разбирали создание своего Notification Centre'а. Сейчас я поднапрягся и решил узнать как можно сделать это в 2к25. По современному.

В посте мы познакомимся самым популярным и обыденным вариантом: Combine в SwiftUI.
Это тоже обсервер, который работает скрыто в ядре движка. А в базе знаний расширенная статья.

Ну и допом я решил собрать все самые популярные и не очень решения этой задачи в одном месте с важными вопросами. Это будет новый формат с теорией, практикой и квизом:
🌟Теория и определения. С диаграмой
🌟в чем отличие Delegate vs Observer vs Мультиделегат (а также пара секретных паттернов Mediator и тп)
🌟Разберем 10 самых интересных реализаций
🌟Для чего нужны отписки и где их писать
🌟и другое


🌴А также собрал все самые полезные материалы чтобы быть экспертом. Получить доступ по последней летней скидке можно 💰тут или ⭐️ тут

Лето заканчивается, а значит настал новый сезон контентов
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
1111
В комьюнити мы решили делать регулярные созвоны, где в неформальной форме будем обсуждать разные вопросы под пивас.

Если всем зайдет, то будет публичный доступ.

Удивлен, что тема AI так популярна
171
Так, ну че. Ща будет анпакинг.

Целый год засматривался на фитнес браслет whoop. Мне дико нравится тема с более детальным изучением сна и циклами восстановления. Поэтому буду тестить.

Почему не watch от Apple? Ну лично я считаю часы и наушники max оверпрайсами. Ватчи хуже откалиброваны и в целом это больше мультиорганайзер, чем фитнес браслет.

У кого есть такой делитесь впечатлениями.

Это не реклама если че
9511
⌨️ Практический Swift Councurrency: Batching

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

Например, уже полтора месяца активно разбираем Swift Councurrency, проводим опросы и анализ что интересно аудитории, как вокруг внезапно за последние недели начинают выпускать новые статьи или роадмапы. Даже льстит, что мы так влияем на индустрию 🫣

Хватит шуток, приступим к работе. Этот месяц мы активно решили разбирать практические задачи. Одна из частых в продакшене, но непопулярных у популистов задач — это батчинг.

🌿 Batching — это важный инструмент оптимизации. Мы копим события или элементы и отправляем их пачкой по одному из правил. Где это встречается:
- при проектировании аналитических модулей
- чаты
- сложные логеры

Зачем это нужно?
- меньше сетевых запросов
- улучшение перфоманса
- экономия батарейки

Это очень крутая задача для лайфкодинга или систем дизайна. Можно много где развернуться и оценить как свои знания, так и кандидата.

На скрине сделал очень простую версию для знакомства с концепцией. Более production ready будет в закрытой базе вместе с другими практическими задачами. С более детальным описанием многих корнер-кейсов.

Интересные ссылки:
- Algorithm | Concurrent Batch Processing | Swift
- Простая реализация батчей
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
7
📺Всё про MobDevOps

По опросу в канале аудитория посчитала, что это легче, чем "красить кнопки". Я посчитал это булщитом и большим заблуждением в сети. Поэтому я искал эксперта, кто может пояснить за CI/CD.

Мы с @MeGaPk решили разобрать подробнее все мифы и заблуждения этой темы.

В этом выпуске мы поговорили про:
🟡почему зарплаты MobDevOps'ов самые большие на рынке
🟡Почему многие думают, что СI/CD это только настройка Xcode Cloud или Jenkins
🟡как внедряют АИ кодревьюеров в CI/CD флоу
🟡Самые полезные функции для работяг
🟡Стоимость настройки на стандартном проекте
🟡Fastlane и другие тулкиты
🟡Как доказать бизнесу важность CI/CD

🧬 Получить доступ 💰тут или ⭐️ тут
Please open Telegram to view this post
VIEW IN TELEGRAM
41
Architecture Decision Records

Мы уже выяснили, что архитектуры — это не про выбор паттерна между VIPER/TCA/MVP. Писали это посте "Вы переоцениваете UI-архитектуры" и "О, нет! Ты выбрал неправильную UI архитектуру!". И нет, выбор архитектуры это тоже не про шаблонное рисование схем "System Design Interview: как сделан ютуб".

Выбор архитектуры — это оценка ресурсов, сроков. Где выбирая архитектуру ты должен задумываться об ее росте и сопротивлению деградации. Так тебе и команде проще жить.

Теперь перейдем из абстрактных советов к практике. Один из важных инструментов, которые помогают разрабам — это ADR.

Когда архитектура ПО развивается в результате ряда решений, которые сами по себе рождаются из гипотез и экспериментов, проверяющих эти гипотезы, командам разработчиков нужен способ отслеживать принятые ими архитектурные решения.


В больших и сложных проектах, где внедрение или изменение технологий может идти годами. Может произойти такой момент, где все потеряют смысл и вектор происходящего. Зачем мы это делаем? Почему такое было сделано? Куда мы идем?

В этот момент помогают такие инструменты как TDR или ADR. На моей работе даже сейчас одна из сложных задач — это понять и зафиксировать вектор, а также не размыть и потерять все контексты.

Если у вас такие же проблемы, то вот отличные подборки публичных гайдов:

🌟 adr-tools
🌟 Amazon
🌟 GitHub
🌟 RedHat
Please open Telegram to view this post
VIEW IN TELEGRAM
19
🌄 Swift Concurrency: изоляция MainActor?

DispatchQueue.main.async ВСЁ! Теперь в современном мире мы используем MainActor. Но с ним есть множество нюансов, которые нужно учитывать.

Большинство иосеров думают, что @MainActor просто гарантирует выполнение кода на main thread. Но это лишь верхушка айсберга. Реальная магия и потенциальные проблемы скрываются в том, КАК именно Swift изолирует ваши данные.

Допустим, что если класс помечен @MainActor, весь код выполняется на main thread, верно?


@MainActor
class ViewModel: ObservableObject {
@Published var data: [Item] = []

// Весь ли код выполнится на main thread?
func loadData() async {
let items = await apiService.fetchItems()
self.data = items
}
}


На самом деле MainActor изолирует только доступ к свойствам, а не выполнение методов. Из прошлых постов про изоляцию мы уже поняли что await может переключить контекст.

Почему это важно? Ну, во-первых, это может сломать код, если после await apiService вы работаете с UI элементами.

Давайте разберем еще несколько важных примеров, где MainActor === изоляция данных, а не изоляция выполнения кода. Я мало где видел, чтобы спрашивали такие детали. Можете брать задачи для собеседований в свою компанию.

Получить доступ к еще большим разборам по последней летней скидке можно 💰тут или тут

Полезные ссылки:
- MainActor usage in Swift explained to dispatch to the main thread
- @MainActor – The Rules!
- How to use @MainActor to run code on the main queue
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
8
Forwarded from TechSparks
Гугл не только других учит, как ИИ использовать, но и сам отчитался о целых 14 способах, которыми его сотрудники используют ИИ.
1. Естественно, генерация кода. 30% нового кода пишет ИИ
2. Ускорение всей разработки. Не только написание кода, но и его ревью, тестирование, миграции.
3. Приоритизация и починка багов
4. Помощь с креативами
5. Написание контента
6. Создание всякого визуального
7. Тестирование новых идей
8. Ускорение создания коммерческих предложений
9. Улучшение качества лидов
10. Генерация заметок после встреч и обсуждений
11. Безопасность пользователей на всех платформах: обнаружение контента, нарушающего правила
12. Улучшение работы с отзывами пользователей
13. Поиск новых талантов для найма
14. Снижение количества пищевых отходов
Масштаб, конечно, разный у разных пунктов, но в целом подход впечатляет. И это только начало, утверждается: Ultimately, AI not only boosts efficiency and fosters creativity but also leads to the creation of new roles and opportunities that help our teams concentrate on high-impact work
https://blog.google/technology/ai/google-ai-workplace-examples/
3
О благодарности.

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

Спасибо Вам. Ведь Ваша благодарность также является топливом.
130
ADR, System Design и глобальные рефакторинги

Кстати, отличная новость для тех, кто не знает чем заняться в субботу.

❣️ Тут в Яндексе устраиваем фестиваль практики и технобатлов для мобильных разрабов.

Если хотите увидеться, то я выступаю с нашим руководителем мобилки. Это не совсем доклад, а peerlab. Здесь ценится обмен живым опытом и общение.

На нем мы:
🌟поделимся опытом с каким вызовами сталкиваемся в разработке сложных продуктов большой экосистемы
🌟обсудим про mobile system design
🌟какие сложные задачи мы делаем в команде
🌟как планируются и реализуются сложные рефакторинги
🌟что такое ADR и как у нас происходит арх.ревью

Короче, глубоко погрузимся в Mobile System Design. Здесь будет много практики и закрытой кухни, которую обычными докладами и статьями не перенесешь.

А также многое другое. На этом ивенте мы будем много общаться и дискутировать.

📍Приходите поддержать)
Please open Telegram to view this post
VIEW IN TELEGRAM
210421