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

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

Автор: @lvbond Senior iOS Yandex, ex-Avito, VK
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
С праздником милых дам 🌷

Пусть моя аудитория на 90% мужская, но этот весенний праздник праздную как свой 🤣

Пусть у вас будет быстрый билд. Всегда последняя модель девайса. Четкий тимейт в семье.
Please open Telegram to view this post
VIEW IN TELEGRAM
34
💎 Обновление ноушена и комьюнити за неделю

Традиционный пятничный бриф что изменилось за неделю.

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

Цель комьюнити — собрать людей с горящими глазами. Тех, кто хочет разобраться. Тех, кто хочет найти любовь к своему делу. Тех, кто нашел ее и не видит себя нигде больше. Тех, кто хочет стать лучше. Тех, кто выбрал развитие. Тех, кто не боится пробывать и ошибаться. Тех, кто не останавливается. Тех, кто находит эффективные пути

Моя функция — поддерживать и менеджерить эффективное комьюнити. Слушать потребности аудитории, но при этом не затыкать свое Я.

Вкратце апдейты:
🟣 Провели первый созвон комьюнити. Выложил запись, материала и презу
🟣 Обновил задачи и ресурсы для алгоритмов
🟣 Как и зачем проводят собесы в Яндексе
🟣 Подборка задач от Яндекса на литкоде
🟣 Конспект тренировки по алгоритмам и разбор задач
🟣 Статья по system design: сбор требований
🟣 вопросы с собеседований: диспетчеризацияч
🟣 подборка обязательных секций WWDC
🟣 статьи про SwiftUI
🟣 делаем пет-проект на SwiftUI вместе

Полный чейнджлог на картинке.

Не преувеличивая, я еще не видел столько насыщенного полезной инфой иос-комьюнити нигде.

Вступить можно тут
Please open Telegram to view this post
VIEW IN TELEGRAM
83
☝️ Сравнение архитектур в SwiftUI

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

Это частая практика бигтех-продуктов, когда один проект имеет разные архитектурные паттерны в модулях. Почему так сделано и нет единой, централизованной архитектуры? Подробнее как-нибудь в следующих постах.

Мой выбор метается между Clean, MVI, TCA и Redux. Но даже выбрав стартовую, я опишу еще дополнительные. Все же это исследование.

Дополнительные подборки:
- Clean Architecture for SwiftUI
- Best architectures for SwiftUI
- SwiftUI Architecture and Best Practices

🦄 больше обсуждений по SwiftUI тут
Please open Telegram to view this post
VIEW IN TELEGRAM
12
💎 Вопросы для собесов: Память | уровень Middle ч.1

Начал наконец работать над методичкой по памяти. Собрал ~20 вопросов и планирую дойти до 40. Также будет десяток задачи и пару десятков ресурсов для закрепления. Тема памяти очень любимая в комьюнити и копать в нее можно до бесконечности.

Здесь я попытаюсь разобрать самое важное:
🟣Что такое HeapObject
🟣Когда создается SideTable и как работает с ссылками
🟣Сколько бывает счетчиков ссылок
🟣Что такое Memory Layout и как его считать
🟣Жизненный цикл объектов
🟣Memory Safety
🟣Что такое isa pointer?
🟢Многое другое

По традиции заполняется ориентировочно неделю с активными комментариями в чате.

🌿 Этот и другие сборники можно найти тут
Please open Telegram to view this post
VIEW IN TELEGRAM
11
This media is not supported in your browser
VIEW IN TELEGRAM
Ответ на главный вопрос почему дизайнеры забивают на андроид
115
Самые частые ошибки при обучении

IT — это самая быстро развивающаяся область. Будь ты новичок или опытный разраб тебе нельзя останавливаться.

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

Эксперт должен быть практикующим, на своем опыте понимать и чувствовать индустрию. Все остальное теория, инфоцыганство и диванная аналитика. Даже достигнув разок сеньора и тимлида ты очень легко можешь потерять эту роль в другой компании, ведь правила игры и конкуренция каждый день меняются.

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

🔘 1. Зацикливаться на одном навыке. Частая проблема всех — это не знать когда остановиться. Что у джунов, что у сеньоров есть одна проблема. Начинающие изучают язык, но не переходят в UIKit. Поэтому они могут отсортировать массив, но не знают как сверстать кнопку со списком из этого массива.

А опытные могут рассказать кишки кнопки или устройство многопоточности, но не смогут хорошо запроектировать, потому что не изучили архитектуры или принципы проектирования. Игнорировали алгоритмы.

🔘 2. Мало программировать. Почему-то этим страдают чаще публичные личности или новички. Когда многие путают эрудицию и реальные скиллы.

Программиста отличает навык программирования. Здесь и помогают алгоритмы, проектирование, тестирование.

Знание статей, пересказ документации, выступление с докладами, запись видео на ютубе или чтение чатов не дает навык писать код.

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

🔘 3. Ждать помощи и бездействовать. Самостоятельность — главная переменная в уравнении самообучения. Большинство разработчиков ждут, когда за них найдут информацию или сделают задачу. Это их парализует и останавливает. В этой гонке это критично.

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

🔘 4. Плохо коммуницировать. Главный навык после программирования — это эффективное общение. А зачастую даже главнее. Ты можешь быть отличным программистом, но непонятным или токсичным.

У ит есть своя культура. Свой менталитет и свое днк. Мало зазубрить словарь этого языка, в этой культуре нужно вариться и работать. Получать опыт у тех, для кого она стала родной.

🔘 5. Критиковать и не предлагать. Критика без предложений никогда не сработает. В 90% компаний фраза на собесе "эта задача никогда не будет на практике. зачем вы мне ее задаете?" будет критической и красным флагом.

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

🧬 Еще больше культуры практикующих инженеров в нашем сообществе
Please open Telegram to view this post
VIEW IN TELEGRAM
1551
Как создавать большие приложения с SwiftUI: Гайд по модульной архитектуре

В чате скинули крутеший материал с разбором всех самых животрепещущих вопросов крупных компаний.

В блоге разбирается:
🔴 Модульная архитектура
🔴 Проблемы MVVM в SwiftUI
🔴 Разбор MV(x) паттернов
🔴 Навигацию
🔴Тестирование
🔴Многое другое

Когда искал серебро, а нашел золото
Please open Telegram to view this post
VIEW IN TELEGRAM
12
🧬 Архитектуры SwiftUI: MVI

В нашем пет-проекте мы почти определились с базовой архитектурой. Я уже создал в проекте первый мерджреквест с MVI архитектурой, написал статью и пролил кровь. Почему она?

UDF архитектуры главный тренд последних лет. Чем она так интересна?
🔘Декларативность и реактивность органично смотрится
🔘Однонаправленость очень удобна для понимания и работы
🔘Новенькая в мире иос
🔘Перспективная и крутая
🔘Хорошо показала себя в web и андроид

Некоторые экраны будут на VIPER, TCA. Так мы на практике тоже их попробуем.

Следующие разборы кодом будут про DI и навигацию.

🟣 Изучить вместе и накидать комменты можете здесь
Please open Telegram to view this post
VIEW IN TELEGRAM
10
Дефицит усидчивости, переизбыток дофамина и барыги сдвг

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

Соц.сети нас обманывают. Телеграм, ютуб и инста и тп — это маркетплейсы дешевых эмоций. Целевая аудитория этих инструментов для продаж — люди, кто не умеет долго сосредотачиваться.

Они ищут быстрые эмоции, смотря рилсы, где не помнят что было пять роликов назад. Они ищут быструю дозировку мотивацией, но забыв, чего хотели утром. Они ищут быстрые пути, но не могут отсидеть 8 часов на одной работе. Они бегают из сообщества в сообщество. Меняют одно занятие на другое. Их внимание крадет каждая провокация, каждый инфоподов. Они перестали контролировать себя и стали марионеткой сммщиков и блогеров.

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

Но это все обман. Главная победа — научиться не отвлекаться и фокусироваться. Досиживать, дочитывать, доделывать. Так ты перестаешь быть жертвой любой провокации и сохраняешь контроль своей жизни.

Что помогает? Учеба. Спорт. Шахматы. Алгоритмы. Людям, с сдвг, сложно решать задачи, которые требуют глубокого погружения. Мы все страдаем этим. Так работает наш быстрый мозг, который не хочет сложности и подменяет понятие лени меркантильностью. Бездумно выбирая легкие пути ты делаешь сделку с дьяволом, который забирает очки защиты у твоей системы внимания. Принимаешь рабство.

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

Я закончил подборку вопросов по диспетчеризации и решил создать ознакомительный пост.

Сейчас в ноушене уже доступно больше 100 вопросов, 50 задач и ресурсов:

🔘Вопросы для собеседований: Многопоточка | Junior ч. 1
🔘Вопросы для собеседований: Память (Junior) ч. 1
🔘Вопросы на собеседованиях: Swift | Junior ч. 1
🔘Вопросы на собеседованиях: UIKit | Junior ч. 1
🔘Вопросы для собесов: Память | уровень Middle ч. 1
🔘Вопросы для собеседований | Диспетчеризация | ч. 1

🔘Частые алгоритмические задачи
🔘Задачи на собеседовании System Design

Цель — создать самый детализированный сборник вопросов и ответов для прохождения и проведения собесов.

Все сборники фиксятся и обновляются: находятся ошибки, неточности и новые детали. Впереди еще много других частей.

🖥 Получить сборник можно здесь
Please open Telegram to view this post
VIEW IN TELEGRAM
13
This media is not supported in your browser
VIEW IN TELEGRAM
🖱 Реализация спойлеров телеграма на UIKit

В нашем чате мы решили испытать себя и написать свой телеграм. Начали с эффекта спойлеров. Я набросал статью в ноушене как сделал его с помощью UIKit.

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

Когда-то давно я уже участвовал в конкурсе телеги и делал прикольные анимации. К ее коду уже привык. Вот решил освежить знания.

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

💎 Вступай в сообщество для таких разборов
Please open Telegram to view this post
VIEW IN TELEGRAM
343
Dependency Injection через паттерн Coodinator в SwiftUI

В рамках нашего проекта по swiftUI многим интересно 2 стартовых инфраструктурных механизма:
- Управление зависимостями
- Навигация

Сейчас мы добиваем DI, но сразу после пойдем экспериментировать с навигацией. Здесь я хочу глубже познакомиться с привычным мне паттерном Coordinator, который я почти всегда юзал в UIKit. Плюс много вопросов как сделать механизм диплинков без него

В ролике же показан простой пример, когда мы объединяем навигацию и маршрутизацию. Не уверен, что это хорошо, но для примера сойдет
8
🚘🚘 Высокая производительность для Swift приложений

Процесс оценки перфоманса довольно холливарный.

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

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

Когда-нибудь может я поделюсь внутрянкой, но а пока советы из статьи:

🟣 1. Тестировать нужно на реальных устройствах и метрики собирать оттуда.
🟣 2. Профилируйте с помощью данных и метрик.
🟣 3. Трекайте время запуска до первого экрана
🟣 4. Трекайте скорость откликов вашей апки.
🟣 5. Подбирайте разные алгоритмы для улучшения скорости
🟣 6. Используйте многопоточку
🟣 7. Нужно знать математику

💎 Больше советов и практик мы обсуждаем в нашем сообществе
Please open Telegram to view this post
VIEW IN TELEGRAM
11
🌄 DI в SwiftUI

В ноушене вышла очередная статья посвященная внедренюю зависимостей.

Попытался разобрать:
🔘 Constructor Inject
🔘 Environment Inject
🔘 Разницей EnvironmentObject и Environment

А также примеры с кодом:
🔘 Coordinator + DI
🔘 MVVM + Swinject
🔘 Наш уникальный подход MVI + DI (как зальем реквест)

🌋 Увидеть код и прочитать статью можно здесь
Please open Telegram to view this post
VIEW IN TELEGRAM
6
Как ускорить время вызова приватного кода и ускорить сборку

Крутой способ хакнуть язык и ускорить билды с помощью оператора _silgen_name. Там мы помечаем методы и создаем прямые ссылки в скомпилированном коде.

Этот хак часто используется в исходниках Swift. Но стоит его юзать аккуратно, тк могут быть непредвиденные последствия.
5
💎 Обновление ноушена и комьюнити за неделю

Традиционно каждую пятницу я подвожу итоги обновлений ноушена.

Эта неделя была практикующей, мы много обсуждали, но и много кодили:

🔘Разобрали частые ошибки при обучении
🔘 Сделали MVI архитектуру в нашем проекте
🔘Подключили в нем DI
🔘Сделали эффект спойлеров в телеграме
🔘В чате разобрали как можно сделать эффект Таноса из телеграма. Пост будет позже.
🔘В середине недели в чате разобрали понятие "хобби". Почему крипто-стартапы это скам. А также почему бигтехи любят переусложнять жизнь и убивать таланты рутиной.
🔘Начали заполнять вопросы по памяти для мидлов

Весь чейнджлог можно посмотреть в первом скрине

❤️ А еще я собрал отзывы. Очень приятно получать слова благодарности и это улучшает стремление делать контент лучше или не отпускать планку. Найди на нем импостера. Скрин 2.

🧬 Вступить можно и повлиять на контент можно тут
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
942
Носители счастья. Состояние потока.

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

Любовь — это работа и искусство. Как дойти до такого состояния и организовать свой путь, чтобы он наполнился стратью? Научил закрывать глаза на изъяны. Как дойти до состояния транса, когда любимое дело тебя захватило? До состояния потока, которое как супер-сила, бустит и прокачивает тебя.

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

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

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

Любовь — это главная валюта. Ты не откупишь от нее подарками или деньгами. Она требует внимание. Если ты такой богатый, то что же такой несчастный?

Я не отрицаю важность финансовой свободы. Это первый базовый шаг к поиску. Она дает свободу рабам, но не дает ответа чем заполнить опустевшее место. А вопрос предназначения гораздо сложнее поиска бабок.

Только зацикливаться на бабках — путь в пустоту. Радость и счастье возникает не от кол-ва бабок на счету. Она на границе между скукой и боязнью не справиться, когда сложность задачи соответствует уровню мастерства, необходимому для ее решения. Калибровка такого состояния — одна из обязоностей и моя ответственность перед теми, кто решил идти в одну сторону.
167
Делюсь первыми дизайнами онлайн-кинотеатра, нашего пет-проекта на SwiftUI. К нам присоединился дизайнер и нарисовал такую красоту.

Напоминаю, что в рамках нашего закрытого комьюнити мы делаем пет-проект. Задачи нарезы на пол года вперед. Мы хотим попробывать все на сеньорном уровне:

🔘 Максимальные возможности SwiftUI
🔘 Сложные анимации и графику
🔘 Грамотное проектирование (system design)
🔘 Архитектурные и другие паттерны
🔘 Хранине данных
🔘 Все виды популярных архитектур: SwiftUI, TCA, VIPER, MVI
🔘 DI практики
🔘 CI/CD
🔘 Тесты и многое другое

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

🧬 Ты можешь всегда писать в комменты свои предложения или вступить в чат и ускорить разработку
Please open Telegram to view this post
VIEW IN TELEGRAM
18433
🖥 Релиз вопросов для собесов по памяти для мидлов ч. 1

В ноушене закончил работу над ранее анонсированным сборником. Изначально обещал 40 вопросов, но из-за насыщенности решил 25 прям впритык, так как материала вышло прям плотно:
🟣Что хранится в SideTable?
🟣Отличия autorelease vs autorelease pool
🟣Жизненный цикл объектов
🟣Memory Safety
🟣Что такое isa pointer?

Дополнительно 17 статей с рекомендациями для изучения. А также 5 необычных задач с ответами и объяснением, которые проверят насколько хорошо понимаете память. Скоро будет вторая часть.

🌿 Этот и другие сборники можно найти тут
🧬 Ознакомиться с другими сборниками тут
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
14