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
🧬 Some and Any

Ключевые слова some и any не новы в Swift. слово Some было введено в Swift 5.1, тогда как any было введено в Swift 5.6.

Если вкратце, то:

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

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

Попробовал показать пользу и решение проблем этих слов в изображениях.

Больше разборов some и any с комментариями и какие проблемы он решает в закрытой базе
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
216
Как джуны романтизируют сеньоров

Частое заблуждение у новичков — сеньоры и лиды все знают и поэтому должны меня обучать. Это разрушительно-губительное мышление.
ИТ невероятно быстро развивается и невозможно быть практикующим или экспертным разарбом, обучать других, если ты непрактикующий спец. Но и представлять, что практикующий спец с 10 годами в FAANG'ах, должен знать абсолютно — плохо.

Главная разница между опытным разрабом и начинающим это:
1. Уметь работать с неопределенностью
2. Задавать правильные вопросы
3. Знать как найти решение

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

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

Это все великая ложь.
9
В России обяжут apple сделать сторонние сторы

Как и следовало ожидать, уступки ЕС цепной реакцией будут требоваться и у нас.

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

Зато у банков вакансий больше станет.
12
Форма для вопросов к собеседованиям

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

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

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

Тыкни сюда

*ответ можно отправлять множество раз

UPD: смотрю ваши ответы и походу скоро будет много дополнений по джунам. Спасибо
8
Как работает сортировка в Swift

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

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

Сложность по времени функции sort — O(nlogn)

@eleev в чате дал комментарий:

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


let partIdx = try _partition(within: range, by: areInIncreasingOrder)
try _introSortImpl(
within: range.lowerBound..<partIdx,
by: areInIncreasingOrder,
depthLimit: depthLimit &- 1)
try _introSortImpl(
within: partIdx..<range.upperBound,
by: areInIncreasingOrder,
depthLimit: depthLimit &- 1)
}
}

Но
introsort использовалась pre Swift 5.0
; после
Swift 5.0
был введен
timsort
, который пришел в Swift
отсюда
.


Для подписчиков ноушена больше материала про разные виды сортировок c разбором исходников.
92
Навык программирования или как не путать искусство и искусствоведение

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

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

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

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

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

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

Программирование — это искусство. Безграничное, бездонное. Каждый может во что-нибудь влюбиться.
143
💎 Закончил первый блок вопросов для собеседований на джунов

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

📺 ~80 вопросов с ответами
📺 ~30 задач с объяснениями
📺 ~50 ресурсов и ссылок для изучения

Вышло больше, чем я планировал. Заоодно и прокачал себя. Но после вчерашнего опроса и комментов в чате понял, что упустил или упростил очень много инфы. А некоторое и сам не знал 🤣

Поэтому было решено сделать еще 2-3 части для джуниорова и других грейдов.

Нельзя объять необъятное, но мы попробуем.

💎 Доступ к ноушену тут. Забирай себе чтобы проводить или проходить. Также не стесняйтесь задавать вопросы прям в чат.

🌄 Опрос пройди еще раз.
Please open Telegram to view this post
VIEW IN TELEGRAM
81
Метод двух указателей

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

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

💎 Когда использовать этот метод?
1. Поиск пары элементов, сумма которых равна в отсортированном массиве.
2. Удаление дубликатов из отсортированного массива.
3. Определение длины самого длинного подмассива с нужной суммой.
4. Нахождение наименьшего подмассива с нужной суммой.
5. Нахождение ближайшей пары точек на 2D-плоскости.
6. Определение максимальной суммы подмассива в заданном массиве.
7. Поиск первого неповторяющегося символа в строке.

🧬 Как мы его используем? Каков подход?
1. Инициализируйте два указателя, обычно в начале и конце массива или списка.
2. Проверьте, соответствуют ли текущие элементы по двум указателям заданому условию.
3. Если условие выполнено, верните результат.
4. Если условие не выполняется, переместите один из указателей на основе необходимой логики, чтобы уменьшить размер пространства для поиска.
5. Повторяйте шаги со 2 по 4, пока указатели не встретятся или условие не будет выполнено.
6. Если условие не выполнено, верните дефолтный результат.

В скриншотах разбор одной из самых популярных задач "Two sum"

Дополнительные задачи для практики:
- Удаление дубликатов из отсортированного массива
- Удаление элементов
- Поиск палиндрома

Разбор этих задач и другие техники уже есть в ноушене
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
1532
Реверс инженеринг тиктока

Если вы решили стать хакером айфонов, то вот видос. Здесь автор учит как менять контент используя знания iOS + Objc + LLDB.

Теперь и вы можете рисовать котиков не только в Xcode
83
👓 Новый раздел в ноушене: SwiftUI

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

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

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

UPD: в чате придумали идея делать общий проект с общим ревью друг друга
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
10
Как чуваки от SwiftUI отказывались

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

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

Думаю, самое время изучить SwiftUI. Ноушен буду наполнять только самыми проверенными вещами, чтобы не превратить в мусорку
171
30
⚙️ Обновление ноушена: раздел архитектура

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

Архитектура очень близко лежит с System Design'ом и только этот навык, а не алгоритмы или знания платформы, определяет сеньорность.

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

Прокачать себя в архитектурах можно здесь. Скоро начнем делать продукт по SUI. Там посмотрим на современные практики проектирования.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
931
Привычки великих инженеров

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

Тезисно о чем статья:
Обучайтесь не только в коде. Часто как разработчик вы будете писать код лишь 20% времени.
Получайте удовольствие от работы. Тут все понятно. Даже мой канал старается искать лучшее в программировании и любить это ремесло.
Копайте глубже. Могу сказать по-своему опыту в бигтехах, что многие разработчики утопают в абстракциях и многие их навыки атрофируются. Они не хотят знать или забывают как работают внутри многие вещи, легко деградируя как спецы.
Развивайте системное мышление. Нужно не только понимать кишки, но и обширно видеть работу систем за границами своих ответственностей, платформ.
Технический детокс. Не забывайте изучать реальный мир и отдыхать от компа
Всегда формируйте свою базу знаний и ищите разные подходы к решению задач. С годами чужие мнения слабеют и у вас появляются свои взгляды на решение проблем
Делайте простыми сложные вещи. Эта идея также впитана в мой канал. Если вы не можете объяснить это просто, значит, вы недостаточно хорошо это понимаете
Please open Telegram to view this post
VIEW IN TELEGRAM
17
Подборка книг для улучшения программирования

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

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

Делитесь и вы в комментах
13