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
isKnownUniquelyReferenced

Про CoW, наверное, знаю все. Но не все, удивительно, понимают когда нам это пригодится. Немного про реализацию своего Deep Copy механизма.

На скриншотах два поведения:
1. Когда value семантика ведет себя как reference
2. Мы исправили поведение на ожидаемое

Здесь на помогает isKnownUniquelyReferenced.

Это функция, которая проверяет, существует ли только одна сильная ссылка на объект.

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

Когда нам требуется Value семантика? Например, в создании своих структур или коллекций

А еще я сделаю подборку задач на CoW, когда нам полезно понять или сделать на практике
91
Делаем офлайн мобильную конфу в мск в 2025?
Anonymous Poll
32%
Определенно да
11%
Точно да
12%
Неуверенно да
28%
Лучше онлайн
17%
Не знаю
🧬 Подборка задач и вопросов: Сopy-on-Write

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

В этом сборнике вы наконец поймете:
🟣что такое value и reference семантика
🟣чем Copy-On-Write отличается от полноценного копирования
🟣какие задачи решаются на практике с помощью CoW
🟣многое другое

💎 Получить доступ можно на бусти и в телеграмм.
Please open Telegram to view this post
VIEW IN TELEGRAM
3
Media is too big
VIEW IN TELEGRAM
Делюсь отрывком из двух часового подкаста с Сашей Сычевым

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

В этом отрывке он делится почему "накрутка опыта" — это показатель твоих скиллов и индикатор доверия. А доверие — это новый софт скилл
145
Mobile Meetup SberHealth

Привет, коллеги 👋

18 декабря в
18:00 приглашаем на предновогодний открытый митап для мобильных разработчиков в Москве 🩵

В программе доклады от:
▪️ Смирнова Кирилла, Технического лидера iOS команды, про компиляцию массивного проекта и как её готовить.
▪️Беспалова Владислава, Старшего разработчика, о процессе оптимизации аналитики в компании.

⭐️ В качестве приглашенного спикера Сычев Александр — руководитель разработки рекомендательной ленты Яндекс Go, он расскажет про будущее мобильной разработки на основе грядущих трендов.

Принять участие можно как офлайн, так и онлайн.

Узнать подробнее и зарегистироваться 🔗
Please open Telegram to view this post
VIEW IN TELEGRAM
17
👨‍🦱 Топ популярных техник для решения задач с массивами и строками

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

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

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

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

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

👨‍🦱 2. Метод скользящего окна. Используется для задач, связанных с подмассивами или подстроками, где важно анализировать последовательные элементы массива или строки.

👨‍🦱 3. Prefix Sum. создать массив prefix, где prefix[i] равно сумме всех элементов до i индекса включительно. Используется, когда нужно работать с суммами элементов подмассивов.

Эти техники очень сильно помогают улучшить навыки программирования
Please open Telegram to view this post
VIEW IN TELEGRAM
1382
Неваляшка

Вчера я писал о контенте с уникальным опытом. Вот текст, которым я хочу с вами поделиться.

Не так часто, но не очень редко, мне дают фидбэк, который почему-то трогает больше всего. Будь это менти, который захотел поучиться дисциплине. Руководитель, который хвалит за смелость. Родственники, которые довольны решительностью. Моя жена называет это «бойцовский iq». А мой психолог важным свойством, которое я не должен стесняться или пугаться.

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

Психологи говорят все идет с детства. Мой отец всю жизнь имел смелость заниматься тем, что ему нравилось. В 90е он испытывал проблему с работой в нашем поселке, месяцами в нашем дома даже не было света. В такие времена смелость набирает в цене. Каждый день он занимался спортом и пока все сбегали в алкоголь он с ним воевал, тк он забрал его отца. К нему пришли родители и сказали, что хотят чтоб он воспитывал их детей. Давал пример силы и характера. Так, не имея образования, каждый день делая свое любимое дело, его нашла не просто работа. Его нашло призвание.

Прошло 30 лет. Из простого учителя в поселке Казахстана он стал одни из лучших учителей боевого самбо в России.

Пусть традиционное воспитание оставляет свои шрамы, и наши отношения сильно похожи на отношения Атрея и Кратоса, но его история стала для меня тем примером, когда вера, смелость и сила сама приводит к тебе счастье.
1576
📺 Управление памятью в iOS: Stack, Heap, RAM

Три года назад я написал статью про управлению памятью. Тогда некоторые каналы называли «одной из самых подробных статей», а некоторые компании давали ее как рекомендацию для подготовки. Тогда это можно было считать знания для мидл+/сеньор-, но знания не стоят на месте.

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

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

В этой статье мы разберем:
🟣Что такое RAM и какие виды бывают
🟣Что такое стэк и куча
🟣Что такое Stack Pointer
🟣Сравним плюсы и минусы
🟣Какие данные хранятся в куче, а какие в стэке
🟣И многое другое

Подходящая статья, чтобы изучить глубже на выходных.

💎 Получить доступ можно на бусти и в телеграмм.

Я переделываю большой блок про память для книги. Хочется ультимативно подойди к этому вопросу. Изучить основы операционных систем, погрузиться в дебри Computer Sience, прочитать все пропозалы, посмотреть все WWDC, залезть в каждый исходник и комментарий. Для книги ожидается от 40 до 100 страниц только про память. Поэтому мой контент чуть замедлил скорость, но повысил качество.
Please open Telegram to view this post
VIEW IN TELEGRAM
20
🧠 Набор задач для закрепления популярных техник для массивов и строк

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

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

🟣 Не бегите сразу писать решение. Написание кода должно быть в последнюю очередь.
🟣Проговорите вслух условие. Много раз. Часто много проблем банально, что неправильно поняли задачу
🟣Подумайте о краевых кейсах. Обычно, во многих задачах специально спрятаны сценарии, которые должен найти кандидат
🟣Подумайте о решениях. Расскажите о них вслух. Оцените их понятность. Сгенерируйте в голове несколько и выберите лучшее
🟣Не смотрите сразу на ошибку и тест кейс, который выдает литкод. Попробуйте сами понять где могли ошибиться.
🟣Помните, ваша задача не просто сгененировать решение, копируя ответы. Вы качаете problem solving skills

Two pointers:
557. Reverse Words in a String III
917. Reverse Only Letters
2540. Minimum Common Value
283. Move Zeroes
2000. Reverse Prefix of Word

Sliding window:
209. Minimum Size Subarray Sum
1456. Maximum Number of Vowels in a Substring of Given Length
1208. Get Equal Substrings Within Budget

Prefix sum
1732. Find the Highest Altitude
724. Find Pivot Index
303. Range Sum Query - Immutable
Please open Telegram to view this post
VIEW IN TELEGRAM
10
This media is not supported in your browser
VIEW IN TELEGRAM
Про System Design

Скоро у нас будет подкасте про систем дизайн. Тимлид авито расскажет о своем "идеальном процессе" проектирования. У него большой опыт написания приложений сразу для андроид и иос.

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

В этом видосе очень емко и хорошо объясняется суть систем дизайна:
- нас оценивают не только по техничке, но и софты
- коммуникация — важна
- разраб не только решает проблемы своей платформы, но и смотрит на соседние
- у всех свои стандарты и "зазубрить систем дизайн" не получится
- работая только в стартапах чаще не видишь всех подводных камней крупной корпоративной разработки
10
Гайд по интервью в FAANG

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


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

🟣 Большинство кандидатов провалило 4-5 собеседований, прежде чем получить оффер.
🟣 Перенести собеседование, если вы не готовы - это нормальная практика. Для компании дата имеет не такое важное значение, как имеет для кандидата.
🟣 Facebook - наименее хаотична, так как уделяет много времени обучению собеседующих, дает меньше свободы в выборе задачек, все стандартизировано и регламентировано. Apple и Netflix имеют больше непредсказуемости, на успех влияет не только сам кандидат, но и какой собеседующий попадется, какие задачки выберет и какие вопросы задаст.
🟣 На встрече с HR не стоит озвучивать желаемую зарплату рекрутеру, также где параллельно собеседуютесь и на каких стадиях параллельные интервью.
Please open Telegram to view this post
VIEW IN TELEGRAM
92
Философия Самураев в ИТ

Я очень долго увлекался восточной боевой философией. Начиная с 10 лет и до 16 занимался дзюдо. Потом увлекся книгами и культурой. Даже сейчас считаю, что ближе всего по менталитету мне Япония.

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

Все мои любимые книги на 3/4 состоят из книг самураев. Будь это "Книга Пяти Колец" или "Самурай без меча".

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

В этой же статье автор делится советами как направить фундаментальные советы военных стратегов в современном ит
Please open Telegram to view this post
VIEW IN TELEGRAM
84
Три совета как сделать значимый импакт

Новый год — время новых роадмапов. Многие сами, или со своими лидами, уже прорабатывают новый ИПР, а кто-то и свой план роста. Значимый вклад можно делать в любой компании, вне зависимости от количества сотрудников, пользователей или нулей в зарплате. Автор статьи дает три совета как доказать свою важность

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

Автор дает три совета как всегда выдавать хороший результат:

🟣 Стремитесь к росту любой ценой

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

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

🔴 Отражайте свой вклад в метриках

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

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

🔘 Говорите открыто о своих победах

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

Как это можно сделать:
- Пишите обновления по проекту для всех заинтересованных коллег и команд в компании.
- Делитесь успехами и вызовами с вашим руководителем — это помогает показать прогресс и получить поддержку.
- Проводите презентации для команды или всей компании, где рассказывайте о ваших проектах, достижениях и новых фичах.
- Будьте активны в рабочих чатах, обсуждениях и документации. Пусть создается ощущение, что вы находитесь везде, где что-то происходит.
Please open Telegram to view this post
VIEW IN TELEGRAM
9
This media is not supported in your browser
VIEW IN TELEGRAM
Задача отрефакторить код. Тестирую интеграцию чатгпт с Xcode. Ну слушайте, не идеально, но все же очень хорошо.

Вообще ИИ правда заменяет много рутины. На днях нужно было написать потокобезопасный сервис, который будет записывать данные в UserDefaults. Написал черновик за 4 секунды и работа успростилась в разы.

Плюс многие компании говорят, что начали юзать ИИ для написания тестов.
117
Об успехе и любви

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

Между делом определяли понятие слова «успех». Мне стали близки его слова, так как к такому же определению я пришел и в ит.

Успех это не твой грейд. Успех это не сумма твоей зп. Успех это не твой развитый блог и количество менти 🤡

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

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

Именно поэтому читеры быстро теряют интерес к играм. Именно поэтому накрутчики мониторят все каналы и реагируют на любую критику, прибегая с рейдами на обидчиков или в лс и предлагая коллабы… Именно поэтому люди, кто не достиг профессиональных высот, чаще завидуют тем, кто работает в FAANGA’ах, яндексах и других компаниях, куда нечестным трудом они не попадут на высокие грейды. Именно поэтому людей с натянутым успехом считают «некрасивой богатой девушкой, которая навязчиво пытается подкатить и истерит, когда ей отказываешь»(с). Потому что в них нет трушности и они пропитаны кринжем. Потому что нет уверенности. Я самурай, мне не интересен твой гринд ради гринда. Я отправлю тебя в чс и откажусь от коллаб.

В этом нет эстетики. Это минус вайб и просто самоутешение. Они создают эхо комнаты и рассказывают мифы и оправдания пытаясь обмануть свой мозг. Но менталка раскалена и уязвима на любую критику и попытку хоть как разрушить иллюзию «успешности». Такое состояние не дает покоя и удовлетворения.

Единственный способ померить свою настоящую подготовку — соревнования. Я встречал многих спортсменов, кто в тренажерных залах показывали отличный результат. Но как говорил Майк Тайсон «любая стратегия забывается после первого удара».

Твой ежедневный результат будет хуже на собесе. Твой результат будет хуже на дедлайнах. Твой результат будет хуже при стрессе и выходом из тепличных условий. Когда был конкурс телеграмма и я конкурировал в экстремальных условиях, по 12 часов программируя, я сказал своей жене: «наконец я чувствую себя живым». Иногда, нам нужно такое состояние. Нам всем нужна страсть.

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

Также как и в программировании. Легко не накрутишь знание алгосов, систем дизайна, инженерного мышления. Это также быстро выветрится и будет стресс.

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

Весь твой успех — это борьба с самим собой. Ни чужое мнение, ни количество бабок, ни размеры опыта не дадут тебе счастья. Особенно, когда это накручено
Please open Telegram to view this post
VIEW IN TELEGRAM
20124
🧬 Сборник платных контентов из Литкода: Массивы и строки

Пару неделю назад я купил блок в литкоде Data Structures and Algorithms. Блок офигенный. Пока это лучший контент про базовые техники прохождения собесов на алгоритмы.

Больше всего мне же понравились задачи, которые идеально сбалансированы. Когда же заходишь в литкод впервые, то легко насрать в штаны от рандомной задачи.

В этом же курсе платформа сбалансировала сложность и тебе не придется чувствовать унижение.

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

Контент будет обновляться

💎 Получить доступ можно на бусти и в телеграмм.
Please open Telegram to view this post
VIEW IN TELEGRAM
15
Media is too big
VIEW IN TELEGRAM
Позвал Сергея Ермолаева — тимлид Авито, Google Android Expert, ex-директор ПК Podlodka Android Crew, организатор Android Academy

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

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

Обсудили
🟣Насколько идеальный процесс систем дизайна
🟣На что смотреть при оценке
🟣Как оценивать
🟣Зачем это все
🟣Разница между процессами в разных компаний у нас и зарубежом
🟣Какие ресурсы для подготовки советует Серега
🟣и многое другое

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

Канал Сереги: @se_development
Please open Telegram to view this post
VIEW IN TELEGRAM
184