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
Набросали с @itsoveragain прототипы новой аватарки через нейросеть и получилось такое…. Промт был «если бы Apple дизайнили самурая». Понравилась фраза в одном из каналов:

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


Будем рисовать вручную
18
Forwarded from Тимур Тибеев | BigTechDream (Timur Tibeyev)
🐰Почему вы должны уйти из MAANG?

- Не пытайся стать синьором, Нео. Это невозможно. Вместо этого просто попробуй осознать истину.
- Какую истину?
- Уровней не существует

Я в последнее время начал больше интересоваться стартапами и разными тусовками. У YCombinator есть серия лекций, под названием “Startup School”. Я бы сказал, что это обширные, но не очень глубокие лекции.

Так вот, одна из лекций называется “Why You Should Leave Your FAANG Job”. Мне прям понравился взгляд на big tech компенсации со стороны. Интересные мнения, а не эти ваши Тимуры и почему стоит идти в BigTech.

🔸Первый инсайт. Всевозможные титулы Junior/Middle/Senior/Staff и это способ вовлечь нас в игру, в бесконечную погоню за следующим уровнем. Игра никогда не кончается, меняются условия квеста.

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

🔸Третий инсайт. “Работать у нас это единственный способ получить опыт работы над высоконагруженными системами“ - это маркетинговый ход MAANG компаний, чтобы привлечь новых сотрудников. Интервью процесс тоже отчасти является частью промо-компании.

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

⁉️А часто ли у вас возникает ощущение, что вы участвуете в бесконечных крысиных бегах в погоне за карьерой? И засыпаете ли вы с мыслью, что живете не той жизнью, какой хотели бы?

➡️Ссылка на лекцию
https://www.startupschool.org/curriculum/why-you-should-leave-your-faang-job
Please open Telegram to view this post
VIEW IN TELEGRAM
17
Тимур Тибеев | BigTechDream
🐰Почему вы должны уйти из MAANG? - Не пытайся стать синьором, Нео. Это невозможно. Вместо этого просто попробуй осознать истину. - Какую истину? - Уровней не существует Я в последнее время начал больше интересоваться стартапами и разными тусовками. У YCombinator…
Помню был период, я всегда уходил в компании, которые оценивали меня ниже всех остальных и не сильно обижали зарплатой в офферах. Типа если платят мидлу как сеьнору, то это ведь круто. Всегда казалось, если я найду середину, то значит и расти есть куда в техничке и зп

Я осознанно наступал на капкан и брал вызовы «ах если вы меня недооценили то я докажу вам». Спустя время я понял, что это были все уловки реверсивной психологии…
14
😏 Самая популярная задача на управление памятью

Начнем понедельник с разминки.

После 100 вопросов на управлении памятью (это только первая часть) есть амбициозная задача сделать 100 задач на управление памятью. Кстати, этот сборник помог все же мне сократить содержание будущей книги на две: одна техническая, а другая профессиональная

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

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

Скидывайте свои любимые задачи
Please open Telegram to view this post
VIEW IN TELEGRAM
10
Насколько глубоко надо зарываться

Иногда в чате мы прям пытаемся глубоко зарываться и тут нужны прям артбитры, которые разрулят. Например, Глеб Лукьянец, разработчик из JetBrains, наваливает базы о языке Swift. А кто как не он лучше всего разбирается в памяти и языках.

Вчера, составляя очередную подборку с задачами на память, я наткнулся на вопрос "Как связаны классы и структуры с диспетчеризацией (final/dynamic)". Пытался углубиться, связать кучу со стэком и диспетчеризацию (не просто рассказав о табличных методах диспетчеризации), но тут нам все объяснили в нашем чате на пальцах.

Иногда некоторые вопросы не обязательно должны иметь ответ. И уж если Глеб говорит, что не все надо знать, то стоит прислушаться
25
Forwarded from ermolnik — GDE, Digital Nomad, mobile team lead (Sergei Ermolaev)
Что вы знаете про Perfomance Review?
166
UIKit: viewIsAppearing

Изучать UIKit в 2к25 кажется уже для скуфов, но он продолжает развиваться и далеко не скоро уйдет с радаров.

Для тех, кто пропустил. Еще в 2023 году в iOS 17 был добавлен новый метод viewIsAppearing.

Чем отличаются viewWillAppear от viewIsAppearing и для чего же он нужен? Этот метод вызывается после viewWillAppear, но до viewDidAppear.

Ранее в viewWillAppear вьюха еще не была добавлена в иерархию и поэтому его размеры и свойства могли быть неточны. А viewDidAppear уже слишком поздный метод.

viewIsAppear дает же нам более точный метод для внесения изменений прям перед самой отрисовкой.

Разберем на примерах
135
🧬 Управление памятью: SideTable, RefCount, HeapObject, Object Lifecycle

Продолжаем углубляться в тему управления памятью. На этот раз мы углубимся в исходники Swift и узнаем для чего нужны:
🟣SideTable: когда создается и зачем нужна
🟣RefCount: какие бывают счетчики ссылок
🟣Зачем нужен HeapObject
🟣Object Lifecycle и жизненного цикла объекта:
🟣И другое

С этим материалом вы закрепите понимание более глубоких вещей и хорошо прокачаетесь. До конца января я хочу еще разборать темы с Copyable, borrowing and consuming, Memory Safety и другие непопулярные вещи. Поэтому статей будет больше.

Предыдущие статьи:
🔘Управление памятью в iOS: Stack, Heap, RAM
🔘Управление памятью: MRC/MRR, ARC, Auto Release, Memory Leaks
🔘100 вопросов для подготовки к собеседованию по управлению памятью

Наверное, это уже самый объемный публичный материал про память в рунете.

💎 Поддержать или получить доступ к материалам можно в бусти
🧬 И в боте трибьюта если вы не из СНГ (рекомендовано)
Please open Telegram to view this post
VIEW IN TELEGRAM
7
Размер имеет значение: исследование виртуальной памяти в iOS

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

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

При отладке крупного iOS-приложения на устройстве автор столкнулся с постоянными сбоями приложения сразу после запуска. Это мешало выявлению и исправлению ошибок.

Автор выяснил, что в iOS размер виртуального адресного пространства зависит от объема физической памяти устройства. Например, устройства с более чем 3 ГБ ОЗУ имеют адресное пространство 15,375 ГБ, из которых только 7,375 ГБ доступны для процесса. Остальная часть зарезервирована системой.

При отладке большие двоичные файлы с отладочной информацией занимают значительную часть доступного адресного пространства. В случае автора, суммарный размер исполняемого файла и библиотек превышал 3 ГБ, оставляя менее 370 МБ для кучи и стека потоков, что приводило к сбоям из-за нехватки памяти.

В iOS 14 было введено право Extended Virtual Addressing, позволяющее процессу использовать полное 64-битное адресное пространство. Добавив это право в файл прав приложения для отладочных сборок, автор смог устранить сбои, связанные с нехваткой памяти, и продолжить отладку.

🏥 Вывод:
Понимание особенностей виртуальной памяти в iOS и использование новых возможностей системы, таких как Extended Virtual Addressing, могут помочь разработчикам эффективно решать проблемы, связанные с ограничениями памяти при разработке и отладке приложений.
Please open Telegram to view this post
VIEW IN TELEGRAM
73
Архитектурная секция в Яндексе

Вы, наверное, видели этот видос, но я снова его дам в ленту.

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

Чисто такой минимализм в лучших традициях Apple.

Монтажер Яндекса. Напиши мне, или я украду все у тебя
17
Легальный и полезный метод рефакторинга

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

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

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

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

Вот лайфхак: не называйте это рефакторингом, называйте апгрейдом. Если у вас есть модуль Chat, добавьте версионирование. Назовите старый модуль v1, а новый — v2. Докажите его преимущества перед старой версией. Так вы никого не обидите, сможете продвинуть идею упрощенной интеграции и получить дополнительную фактуру для промо.

Мне кажется, это один из ключевых пунктов, если вы хотите играть в promo-driven-development. А также главный двигатель вечных апдейтов, редизайнов и тп
135
This media is not supported in your browser
VIEW IN TELEGRAM
ставь лайк, если после твоего увольнения развалилась компания
21
BDUI – величайший скам в истории мобильной разработки
10
🧬 Flow: путь познания и создания смыслов

На прошлой недели, в посте про поиск глубины, Вася Усов дал комментарий:

Между «знанием» и «познанием» тонкая грань, но разница все же есть. По моему мнению, Лев, ты занимаешься познанием, поэтому читать тебя интересно. Было бы круто окунуться в тему чуть глубже.


Вася автор замечательной книги, которую я сам начинал читать еще ~7 лет назад, когда только начал изучать iOS. Слова Васи очень приятны, так как он сам авторитетный автор книг и разработчик. Приятно, когда такие слова говорят именно такие люди. Значит я двигаюсь в правильном направлении.

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

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

До тех пор пока занятия и увлечения, приносящие нам удовлетворение, не связаны воедино высшим смыслом, мы не защищены от вторжения хаоса и разрушения нашей психической энергии


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

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

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

Конечно, слова "высшая цель" звучат довольно пафосно. Но моя она как раз совсем недавно сформулировалась.

Можете чаще давать приятные слова в комментах и я буду вас рекламировать😏
Please open Telegram to view this post
VIEW IN TELEGRAM
1136
This media is not supported in your browser
VIEW IN TELEGRAM
Ставь лайк, если завалил
23
This media is not supported in your browser
VIEW IN TELEGRAM
Ну и весь день я игрался с составлением своего стиля в видео. Я месяц честно искал разные стили: ультранасилие и пиксель графика а-ля Hotline Miami, восточно-западная тематика воинов. Хотелось оставить все детские хотелки в оформление. Но все же мой блог про технологии и далеко уйти не пришлось… взял стиль WWDC и през Apple. А там уже внутри спрячем детали. Дресс-код — кэжуал пиджак, водолазка, джинсы и кроссовки

По результатам опроса многим все же нравится видеоформат, поэтому самые интересные темы мы все же будем выносить в видео. Не обещаю, что его будет много, но все же самые интересные темы я ЭКРАНИЗИРУЮ

На экране очень сырой набросок первых прототипов

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

Телемост подрубается
15