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

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

Автор: @lvbond Senior iOS Yandex, ex-Avito, VK
Download Telegram
🔄 Паттерн: Reactor

lvl: mid

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

Один раз я встречал его на горе проекте, который взял концепцию ReactorKit, но смешал это с Worker'ами и Observer'ами.

Реакторы идеально ложатся на event-driven архитектуры. Где у нас есть общее событие для приложения, которое может повлиять на состояние экранов в разных местах. Допустим достижение нового уровня изменит наносимый и получаемый урон, откроет новые диалоги и локации.

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

В мире иос — реактором можно назвать обработку нажатий. Где есть Event Loop, который СИНХРОННО по-умолчанию выполняет обработку событий: тачи, таймеры, сигналы ОС. Очень важная деталь в синхронности, потому что если асинхронно, то это паттерн проактор.

Если этот пост наберет хоть один лайк, то когда-нибудь выйдет статья о реализации своего RunLoop'a
Please open Telegram to view this post
VIEW IN TELEGRAM
👍59
🤍О зрелости разработчика

В авито есть общие ценности. Я о них уже писал в начале карьеры и напишу о них на 9м месяце.

Больше всех мне нравится ценность «действуй масштабно и смело». С ней даже произошло пару забавных моментов. О них позже.

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

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

Благо этот вопрос решается здравым смыслом и оценками большинства.

Это очень важный принцип, который помогает в целеполагании и развитии.

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

Главное часто не проигрывать 😉
Please open Telegram to view this post
VIEW IN TELEGRAM
👍62🔥2
😁31
🗺 Крутейшая техническая статья про создание своего EventLoop'a

Event Loop — это цикл, который обрабатывает события. Это не уникальная особенность iOS платформы. Такой механизм почти всегда используются в графических интерфейсах (Windows) и на серверах (node.js) .

События, которые обрабатывает Event Loop:
- Нажатие кнопок, клавиатуры
- Вводные данные от устройств, датчиков
- Сообщения от других потоков и программ

У каждого потока есть свой собственный Event Loop, но он может не работать и придется запускать самому.

Автор статьи сам с нуля делает свой Event Loop. Очень полезно понять как все работает кодом, когда же почти всегда о ранлупе говорят только концептуально. В cтатье и ограничение иттераций, и реализация очереди для тасок с нуля
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥141👍1
Вопрос от коллеги из вконтакте
👍5🔥1
Кстати, если у вас есть идеи и предложения какие интересные задачи из собесов, статей, работы добавить в симулятор иосника, то пишите мне @lvbond. Или в чат.

Там эксперты из авито, редмадроботс, вконтанте, озона и любых других компаний попробуют оценить и решить задачу
👨‍💻 Об обучении и заинтересованности

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

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

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

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

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

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

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

Любая мотивация делится на 2 концепции: процессуальная и содержательная.

1️⃣ Процессуальная — эти теории базируются на причинах, по которым люди выбирают как им себя вести. Сюда относятся:

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

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

Теория X и теория Y. Это две теории подходят к мотивациям с двух противоположных сторон: авторитарной и демократической
👍5🔥5
365 дней богу Алгоритмов: Отчет за третью неделю

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

Как всегда где-то брутфорсил, где-то костылил, где-то подсматривал. Связанные списки какая-то срань. Где они вообще полезные?

17. Минимальная сумма подмассивов. Медиум таска из задач в сборнике техник двух поинтеров. Решил не сразу и чуть в лоб. Мб медиумы не нужно брать с начала недели пока

18. Реверс слов в массиве. Решил задачу в лоб и по общим решениям оказалось, что и не самое худшее

19. Удалить дубликаты в отсортированном связанном списке. Все время забываю, что связанный список — это референс тайп.

20. Каждый индекс сумма прошлых элементов. Одна из легчайших из легких

21. Кол-во хороших пар. Брутфорснул

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

23. Реверс связанного списка. Ну тут изи. Комментов нет

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

#365_дней_богу_алгоритмов
42🐳2👍1🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
💎 Новая сборка симулятора иосника

Версия 1.0 (10)

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

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

На экране достижений можно посмотреть текущие открытые и еще не полученные.

Ну как и обещали, всем бета-тестерам — уникальная ачивка

💎 Что ждать в будущем?

В чате бета-тестеров накидывают много идей. Из новых почти реализовали графики с прогрессом обучения и фильтрацию материалов по разным критериям.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥3
Структуры данных: Связанный список

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

Связанный список представляет собой объект, который обычно называют node. Она содержит все данные и ссылку на другую ноду.

В примере выше 2 реализации:
- через класс
- через enum
👍7
🗂 Как выбирать паттерн проектирования

Фреймворки — фреймят мышление.

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

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

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

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

Этим сложным вопросом часто и занимается архитектор: как выдержать баланс между качеством и стоимостью? В знаменитой книге банды четырех есть советы по выбору паттернов проектирования:

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

Как выбирать паттерн проектирования?

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

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

3. Изучить взаимосвязи паттернов. Какие-то паттерны лучше работают вместе, а какие-то вызывают лишние трудности

4. Проанализируйте паттерны со сходными целями. Каждый паттерн принадлежит к одной из трех частей: порождающие паттерны, структурные паттерны и паттерны поведе ния

5. Разберитесь в причинах, вызывающих перепроектирование.

Правила кажутся очень просто, но очень часто нарушаются.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍62