Поговорим о не особо популярных паттернах, но встречающихся гораздо чаще, чем мы ожидаем. На секунду даже удивился, что это устаканенный паттерн.
Один раз я встречал его на горе проекте, который взял концепцию ReactorKit, но смешал это с Worker'ами и Observer'ами.
Реакторы идеально ложатся на event-driven архитектуры. Где у нас есть общее событие для приложения, которое может повлиять на состояние экранов в разных местах. Допустим достижение нового уровня изменит наносимый и получаемый урон, откроет новые диалоги и локации.
Реактор — это тот паттерн, который поможет управлять нашими событиями. Он как телефоный оперетор, который отвечает на звонки и переводит их на необходимые контакты.
В мире иос — реактором можно назвать обработку нажатий. Где есть Event Loop, который СИНХРОННО по-умолчанию выполняет обработку событий: тачи, таймеры, сигналы ОС. Очень важная деталь в синхронности, потому что если асинхронно, то это паттерн проактор.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍59
В авито есть общие ценности. Я о них уже писал в начале карьеры и напишу о них на 9м месяце.
Больше всех мне нравится ценность «действуй масштабно и смело». С ней даже произошло пару забавных моментов. О них позже.
Эта ценность стала понятней после десятков спринтов, а еще сильнее, когда начал делать симулятор иосера. Она говорит об умении отпустить задачи.
Теперь о забавных ситуациях. Сама ценность говорит о потенциальном скоп-дропе, о задачах на которые ты согласился, но потом отбросил из-за низкой приоритетности. В этот момент владельцы этих задач могут написать нехороший фидбэк на перф ревью. Ведь их задачи не масштабные и амбициозные по-твоему мнению.
Благо этот вопрос решается здравым смыслом и оценками большинства.
Это очень важный принцип, который помогает в целеполагании и развитии.
Зрелый разработчик может опустить задачу с минимальным импактом пожертвовав немного внешними показателями, ради большей выгоды. Пусть даже ее не получив и потерпел поражение. Сама смелость приветствуется
Главное часто не проигрывать 😉
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤2🔥2
Event Loop — это цикл, который обрабатывает события. Это не уникальная особенность iOS платформы. Такой механизм почти всегда используются в графических интерфейсах (Windows) и на серверах (node.js) .
События, которые обрабатывает Event Loop:
- Нажатие кнопок, клавиатуры
- Вводные данные от устройств, датчиков
- Сообщения от других потоков и программ
У каждого потока есть свой собственный Event Loop, но он может не работать и придется запускать самому.
Автор статьи сам с нуля делает свой Event Loop. Очень полезно понять как все работает кодом, когда же почти всегда о ранлупе говорят только концептуально. В cтатье и ограничение иттераций, и реализация очереди для тасок с нуля
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥14⚡1👍1
Что будет в консоли?
Anonymous Quiz
2%
С, B, A, A
17%
B, C, A, C
16%
A, B, C, C
2%
A, C, B, C
41%
A, B, C
1%
C, A, B
20%
B, C
👍5🔥1
Нет смысла повторять, что для итшника уметь учиться — жизненная необходимость. В отличии от других консервативных сфер, где технологии и навыки не меняются десятилетия, наш инструмент работы может измениться следующим апдейтом.
Мы в такой сфере, что любой навык может устареть еще на этапах согласования и утверждения учебного материала. Хоть нас всех в будущем заменят chatGPT и ИИ, все универы перестанут быть нужны и люди станут лишними. Вот уже в пятый раз получаю образование. Просто на бессознательном уровне начинаю погружаться в методы и техники. Да и вырос в семье учителей. В процессе вношу заметки и хочу поделиться:
Хороший препод должен не только дать знания, но и замотивировать их получить. От хорошего препода важно не только ожидать профессиональной экспертизы, но и навыки организовывать сессии и делать инструменты обмена знаний. Для себя выделю, что мотивацию считаю важнее.
Многие преподы могут обладать высоким уровнем экспертизы, но поделиться и научить не способны даже до базового уровня. Скилл менторинга и педагога также важен для работы. Когда технический специалист просто не обладает нужной экспертизой педагогики, которая помогает шарить знания эффективно.
На этом абзаце должна быть нагло всунута реклама какого-нибудь курса иосников от яндекс.практикума, но мне никто не хочет платить миллиарды. Но тема о другом. Этот принцип высокой экспертизы и удобного шаринга хочется оцифровать в симуляторе иосника.
Вероятнее всего вы знаете примеры уже хороших учебных порталов и скините мне их. Тут нет в планах делать сайты и тп, а скорее создать живое комьюнити актуальных знаний по нашей специфике
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9
Концепции мотивации
Кстати, делюсь контентом с учебы. Знаю, среди вас есть те, кто уже тимлид и руководит человеками. Ща прохожу основы менеджмента и знакомлюсь с основами мотивации. Как делать свою и чужую работу более эффективной. Знать более прикладные и предметные инструменты считаю полезно на любых уровнях. И это не про косметические решения: мотивирующие истории и лозунги в стиле "просто делай", а почти научные подходы.
Любая мотивация делится на 2 концепции: процессуальная и содержательная.
1️⃣ Процессуальная — эти теории базируются на причинах, по которым люди выбирают как им себя вести. Сюда относятся:
Теория ожиданий по Вруму — где подразумевается, что исполнитель лучше понимает работу, если знает как его вознаградят. А вознаграждение должно учитывать потребности вознаграждаемого.
Теория справедливости по Адамсу. В основе нее лежит старая добрая идея равенства. Модель хрупкая и простая, за что неоднократно подвергалась сомнению.
Теория X и теория Y. Это две теории подходят к мотивациям с двух противоположных сторон: авторитарной и демократической
Кстати, делюсь контентом с учебы. Знаю, среди вас есть те, кто уже тимлид и руководит человеками. Ща прохожу основы менеджмента и знакомлюсь с основами мотивации. Как делать свою и чужую работу более эффективной. Знать более прикладные и предметные инструменты считаю полезно на любых уровнях. И это не про косметические решения: мотивирующие истории и лозунги в стиле "просто делай", а почти научные подходы.
Любая мотивация делится на 2 концепции: процессуальная и содержательная.
1️⃣ Процессуальная — эти теории базируются на причинах, по которым люди выбирают как им себя вести. Сюда относятся:
Теория ожиданий по Вруму — где подразумевается, что исполнитель лучше понимает работу, если знает как его вознаградят. А вознаграждение должно учитывать потребности вознаграждаемого.
Теория справедливости по Адамсу. В основе нее лежит старая добрая идея равенства. Модель хрупкая и простая, за что неоднократно подвергалась сомнению.
Теория X и теория Y. Это две теории подходят к мотивациям с двух противоположных сторон: авторитарной и демократической
👍5🔥5
365 дней богу Алгоритмов: Отчет за третью неделю
Еженедельный отчет. Эта неделя прошла чуть сложнее из-за резкого дефицита времени, но получилось как получилось.
Как всегда где-то брутфорсил, где-то костылил, где-то подсматривал. Связанные списки какая-то срань. Где они вообще полезные?
17. Минимальная сумма подмассивов. Медиум таска из задач в сборнике техник двух поинтеров. Решил не сразу и чуть в лоб. Мб медиумы не нужно брать с начала недели пока
18. Реверс слов в массиве. Решил задачу в лоб и по общим решениям оказалось, что и не самое худшее
19. Удалить дубликаты в отсортированном связанном списке. Все время забываю, что связанный список — это референс тайп.
20. Каждый индекс сумма прошлых элементов. Одна из легчайших из легких
21. Кол-во хороших пар. Брутфорснул
22. Сабсущность. Смотря на решение пары дней назад даже не понимаю каким воспаленным мозгом я к нему пришел
23. Реверс связанного списка. Ну тут изи. Комментов нет
Один из главных выводов — работа над ошибками. Все же к некоторым задачам нужно приходить снова подтянув теорию и практику
#365_дней_богу_алгоритмов
Еженедельный отчет. Эта неделя прошла чуть сложнее из-за резкого дефицита времени, но получилось как получилось.
Как всегда где-то брутфорсил, где-то костылил, где-то подсматривал. Связанные списки какая-то срань. Где они вообще полезные?
17. Минимальная сумма подмассивов. Медиум таска из задач в сборнике техник двух поинтеров. Решил не сразу и чуть в лоб. Мб медиумы не нужно брать с начала недели пока
18. Реверс слов в массиве. Решил задачу в лоб и по общим решениям оказалось, что и не самое худшее
19. Удалить дубликаты в отсортированном связанном списке. Все время забываю, что связанный список — это референс тайп.
20. Каждый индекс сумма прошлых элементов. Одна из легчайших из легких
21. Кол-во хороших пар. Брутфорснул
22. Сабсущность. Смотря на решение пары дней назад даже не понимаю каким воспаленным мозгом я к нему пришел
23. Реверс связанного списка. Ну тут изи. Комментов нет
Один из главных выводов — работа над ошибками. Все же к некоторым задачам нужно приходить снова подтянув теорию и практику
#365_дней_богу_алгоритмов
⚡4❤2🐳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
Связанный список — это та самая структура данных, которую почти все спрашивают на собесах, но никогда не применяют в жизни. Даже один из ее создателей признавался, что почти никогда не юзал эту структуру в жизни.
Связанный список представляет собой объект, который обычно называют node. Она содержит все данные и ссылку на другую ноду.
В примере выше 2 реализации:
- через класс
- через enum
👍7
Фреймворки — фреймят мышление.
Почему-то в мобилке все чаще юзаются архитектурные фреймворки. Люди выбирают шаблоны не по решению проблем, а по шаблонизации проекта. Маскируя плохой дизайн аргументом единообразия.
Архитектор. Как много в этом слове загадочного и неопределенного. В каждой компании эту должность занимает какой-то старый опытный дед, а его функцию никто не понимает.
Не знаю как вы, но я часто задаю вопрос какой паттерн заюзать в решении разных проблем. Здесь лучше маршрутизатор или координатор? А тут может мультиделегат или обсервер? Билдер или фабрику?
Каждый паттерн — это решение под конкретную проблему. Хороший паттерн понятен по названию, описывает мотивацию и результаты. Но к любой проблеме можно подойти с разных сторон и нет однозначного ответа. Есть только ресурсы и время.
Этим сложным вопросом часто и занимается архитектор: как выдержать баланс между качеством и стоимостью? В знаменитой книге банды четырех есть советы по выбору паттернов проектирования:
Как выбирать паттерн проектирования?
1. Подумать, как паттерн решает проблему. Это самое сложное. Иногда хочется запихнуть какой-то паттерн или архитектуру только потому, что прочитал чей-то доклад или статью. Или так модно.
2. Лучше изучить их назначение. Первые связаны с процессом создания объектов. Вторые имеют отношение к композиции объек тов и классов. Паттерны поведения характеризуют то, как классы или объекты взаимодействуют между собой.
3. Изучить взаимосвязи паттернов. Какие-то паттерны лучше работают вместе, а какие-то вызывают лишние трудности
4. Проанализируйте паттерны со сходными целями. Каждый паттерн принадлежит к одной из трех частей: порождающие паттерны, структурные паттерны и паттерны поведе ния
5. Разберитесь в причинах, вызывающих перепроектирование.
Правила кажутся очень просто, но очень часто нарушаются.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6⚡2