#fundamental #patterns #cheatsheet
📌 Посетитель (англ. visitor) — поведенческий паттерн, позволяющий добавлять в функционал новые операции, не изменяя классы объектов, над которыми эти операции могут выполняться.
Проблема: над каждым объектом некоторой структуры выполняется одна или более операций, но вам требуется определить новую операцию, не изменяя классы объектов.
Решение: разместить новое поведение в отдельном классе, вместо его размножения сразу в нескольких классах. Объекты, с которыми должно было быть связано поведение, не будут выполнять его самостоятельно. Вместо этого вы будете передавать эти объекты в методы посетителя.
Паттерн применяется, когда:
✔️Требуется выполнить какую-то операцию над всеми элементами структуры объектов, например, деревом.
✔️Над объектами сложной структуры объектов необходимо выполнять некоторые не связанные между собой операции, но вы не хотите «засорять» классы такими операциями.
✔️Новое поведение имеет смысл только для некоторых классов из существующей иерархии.
📌 Посетитель (англ. visitor) — поведенческий паттерн, позволяющий добавлять в функционал новые операции, не изменяя классы объектов, над которыми эти операции могут выполняться.
Проблема: над каждым объектом некоторой структуры выполняется одна или более операций, но вам требуется определить новую операцию, не изменяя классы объектов.
Решение: разместить новое поведение в отдельном классе, вместо его размножения сразу в нескольких классах. Объекты, с которыми должно было быть связано поведение, не будут выполнять его самостоятельно. Вместо этого вы будете передавать эти объекты в методы посетителя.
Паттерн применяется, когда:
✔️Требуется выполнить какую-то операцию над всеми элементами структуры объектов, например, деревом.
✔️Над объектами сложной структуры объектов необходимо выполнять некоторые не связанные между собой операции, но вы не хотите «засорять» классы такими операциями.
✔️Новое поведение имеет смысл только для некоторых классов из существующей иерархии.
Ближайшие онлайн-мероприятия
– Online LoGeek Night Russia, 28 апреля
– Адаптивная верстка с Flexbox и Grid, 28 апреля
– IT Jam. Frontend, 30 апреля
– Как обеспечить команду IT разработчиков крупными заказами с помощью Linkedin на Западе, 30 апреля
– Как стать Python-разработчиком, 30 апреля
Персонализированную рассылку мероприятий можно получать в нашем боте: @event_listener_bot
– Online LoGeek Night Russia, 28 апреля
– Адаптивная верстка с Flexbox и Grid, 28 апреля
– IT Jam. Frontend, 30 апреля
– Как обеспечить команду IT разработчиков крупными заказами с помощью Linkedin на Западе, 30 апреля
– Как стать Python-разработчиком, 30 апреля
Персонализированную рассылку мероприятий можно получать в нашем боте: @event_listener_bot
Создавай цифровые решения будущего и получи приз!
Мы объявляем онлайн-хакатон VirusHack от Ростелекома, организованный в партнерстве с Агентством инноваций Москвы и РАЭК. В нем вы прокачаете свои навыки в разработке технологий, которые помогут людям, бизнесу и государству приспосабливаться к нестандартным условиям жизни.
Победитель реализует свой проект при поддержке крупнейших компаний страны!
Призовой фонд хакатона 2 500 000 рублей!
Онлайн-хакатон пройдет с 3 по 5 мая 2020 года — успейте зарегистрироваться на него до 30 апреля 2020-го: https://proglib.io/w/602e358e
Добавляйтесь в чат хакатона: https://bit.ly/2RAQgOx
Мы объявляем онлайн-хакатон VirusHack от Ростелекома, организованный в партнерстве с Агентством инноваций Москвы и РАЭК. В нем вы прокачаете свои навыки в разработке технологий, которые помогут людям, бизнесу и государству приспосабливаться к нестандартным условиям жизни.
Победитель реализует свой проект при поддержке крупнейших компаний страны!
Призовой фонд хакатона 2 500 000 рублей!
Онлайн-хакатон пройдет с 3 по 5 мая 2020 года — успейте зарегистрироваться на него до 30 апреля 2020-го: https://proglib.io/w/602e358e
Добавляйтесь в чат хакатона: https://bit.ly/2RAQgOx
Все инженеры умеют программировать, но не все программисты могут быть инженерами. Действительно, почему не все программисты могут называться инженерами и какими навыками обладают настоящие инженеры-разработчики?
На AppTractor вышла отличная статья, в которой даны ответы на все вышеперечисленные вопросы.
https://proglib.io/w/4ad32a81
На AppTractor вышла отличная статья, в которой даны ответы на все вышеперечисленные вопросы.
https://proglib.io/w/4ad32a81
AppTractor
Все инженеры умеют программировать, но не все программисты могут быть инженерами: в чем отличие?
Никто не может стать инженером за два месяца, за шесть месяцев или за год. Почему не все программисты могут называться инженерами и какими навыками обладают настоящие инженеры-разработчики?
Матричные преобразования для редактирования изображений в C#
Учимся вращать, растягивать, отражать и перекрашивать картинки с помощью основ линейной алгебры и C#. Формируем матрицы трансформаций и проверяем результат в демо-приложении.
https://proglib.io/sh/4e7xgV9wIH
Учимся вращать, растягивать, отражать и перекрашивать картинки с помощью основ линейной алгебры и C#. Формируем матрицы трансформаций и проверяем результат в демо-приложении.
https://proglib.io/sh/4e7xgV9wIH
Библиотека программиста
Матричные преобразования на C# для редактирования изображений
Учимся вращать, растягивать, отражать и перекрашивать картинки с помощью основ линейной алгебры и C#. Формируем матрицы трансформаций и проверяем результат в демо-приложении.
Чтобы React «заиграл»: 8 инструментов разработки
Если для создания веб-приложений вы избрали React, вам также будут полезны инструменты стилизации, управления состоянием и тестирования. Рассказываем о них в нашей подборке.
https://proglib.io/sh/RJ3banBNLS
Если для создания веб-приложений вы избрали React, вам также будут полезны инструменты стилизации, управления состоянием и тестирования. Рассказываем о них в нашей подборке.
https://proglib.io/sh/RJ3banBNLS
Анимация графиков в Python за 4 шага
Преобразуем датафрейм в gif-анимацию. Краткий туториал по анимированной визуализации данных с помощью Python и библиотеки moviepy на примере распространения COVID-19.
https://proglib.io/sh/omGfqsSXZ0
Преобразуем датафрейм в gif-анимацию. Краткий туториал по анимированной визуализации данных с помощью Python и библиотеки moviepy на примере распространения COVID-19.
https://proglib.io/sh/omGfqsSXZ0
Задумываетесь о смене специальности?
11 мая в HTML Academy стартует онлайн-курс «Профессия «Фронтенд-разработчик»:
6 месяцев обучения и живых лекций, 27 часов голосовых консультаций с наставником. В конце – стажировка и гарантированное трудоустройство.
30 апреля, в 13:00 ребята проведут лайв и расскажут:
– Где и как выучиться на фронтендера без лишних трат времени;
– Что надо уметь в 2020 году для приглашения на работу;
– Как написать резюме, пройти собеседование и выполнить тестовое задание.
11 мая в HTML Academy стартует онлайн-курс «Профессия «Фронтенд-разработчик»:
6 месяцев обучения и живых лекций, 27 часов голосовых консультаций с наставником. В конце – стажировка и гарантированное трудоустройство.
30 апреля, в 13:00 ребята проведут лайв и расскажут:
– Где и как выучиться на фронтендера без лишних трат времени;
– Что надо уметь в 2020 году для приглашения на работу;
– Как написать резюме, пройти собеседование и выполнить тестовое задание.
#tools
BuildWith
Данный инструмент представляет из себя браузерное расширение, позволяющее посмотреть технический стек посещаемого вами сайта. Если вы занимаетесь парсингом или исследуете безопасность сайта, то информация, предоставляемая расширением, может стать существенным подспорьем в вашей задаче. Существует также веб-версия платформы, в которой предоставляется множество дополнительной аналитической информации по каждой веб-технологии (все возможности платформы).
Расширение для Google Chrome
Расширение для Firefox
BuildWith
Данный инструмент представляет из себя браузерное расширение, позволяющее посмотреть технический стек посещаемого вами сайта. Если вы занимаетесь парсингом или исследуете безопасность сайта, то информация, предоставляемая расширением, может стать существенным подспорьем в вашей задаче. Существует также веб-версия платформы, в которой предоставляется множество дополнительной аналитической информации по каждой веб-технологии (все возможности платформы).
Расширение для Google Chrome
Расширение для Firefox
Как правильно использовать анимацию в дизайне интерфейсов
Ключевые принципы создания пользовательских интерфейсов для различных платформ. 28 превосходных анимированных иллюстраций-сравнений: как нужно делать и как делать нельзя.
https://proglib.io/sh/gChnTScdoj
Ключевые принципы создания пользовательских интерфейсов для различных платформ. 28 превосходных анимированных иллюстраций-сравнений: как нужно делать и как делать нельзя.
https://proglib.io/sh/gChnTScdoj
#fundamental #patterns #cheatsheet
📌 Посредник (англ. Mediator) — поведенческий паттерн, позволяющий свести к минимуму связанность множества классов между собой посредством перемещения этих связей в один класс-посредник.
Проблема: необходимо обеспечить взаимодействие множества объектов, сформировав при этом слабую связанность и избавив объекты от необходимости явно ссылаться друг на друга.
Решение: заставить объекты общаться не напрямую друг с другом, а через отдельный объект-посредник, который знает, кому необходимо перенаправить тот или иной запрос.
Паттерн применяется, когда:
✔️Сложно менять некоторые классы из-за того, что они имеют множество хаотичных связей с другими классами.
✔️Нет возможности повторно использовать класс, поскольку он зависит от большого количества других классов.
✔️Приходится создавать множество подклассов компонентов, чтобы использовать одни и те же компоненты в разных контекстах.
📌 Посредник (англ. Mediator) — поведенческий паттерн, позволяющий свести к минимуму связанность множества классов между собой посредством перемещения этих связей в один класс-посредник.
Проблема: необходимо обеспечить взаимодействие множества объектов, сформировав при этом слабую связанность и избавив объекты от необходимости явно ссылаться друг на друга.
Решение: заставить объекты общаться не напрямую друг с другом, а через отдельный объект-посредник, который знает, кому необходимо перенаправить тот или иной запрос.
Паттерн применяется, когда:
✔️Сложно менять некоторые классы из-за того, что они имеют множество хаотичных связей с другими классами.
✔️Нет возможности повторно использовать класс, поскольку он зависит от большого количества других классов.
✔️Приходится создавать множество подклассов компонентов, чтобы использовать одни и те же компоненты в разных контекстах.
Наша работа над Proglib. Апрель 2020
В конце каждого месяца мы рассказываем о работе над proglib.io, проведённой за этот период. Лучшие материалы за апрель и описание нововведений: тёмная тема, авторизация через Telegram, интерактивные статьи.
https://proglib.io/sh/NZyIg0UX8P
В конце каждого месяца мы рассказываем о работе над proglib.io, проведённой за этот период. Лучшие материалы за апрель и описание нововведений: тёмная тема, авторизация через Telegram, интерактивные статьи.
https://proglib.io/sh/NZyIg0UX8P
За два года спрос на профи в Data Science вырос вдвое. По сведениям hh дата-сайентисты получают от 100 тыс. руб./мес. Но обычно знания приходится собирать по крупицам. К счастью, Geekbrains подготовили курс по машинному обучению:
💎 65 часов контента с практикой к каждому занятию,
💎 30 онлайн-уроков с живыми преподавателями,
💎 5 проектов – всё по-взрослому.
Курс длится 5 месяцев, занятия ведут дата-сайентисты, работающие в крупных компаниях. Подробнее: https://proglib.io/w/31fa3dfd
💎 65 часов контента с практикой к каждому занятию,
💎 30 онлайн-уроков с живыми преподавателями,
💎 5 проектов – всё по-взрослому.
Курс длится 5 месяцев, занятия ведут дата-сайентисты, работающие в крупных компаниях. Подробнее: https://proglib.io/w/31fa3dfd
Какие вы цели ставите перед собой в карьерном плане? Есть ли среди них трудоустройство в крупную зарубежную IT-компанию? Или вы столкнулись с проблемой, как и автор статьи, заключающейся в прохождении сложных собеседований, и это стало барьером для вас.
Радует то, что у автора статьи всё получилось, и своим опытом она делится в статье. Обо всех подводных камнях прохождения собеседований в FAANG (Facebook, Amazon, Apple, Netflix, Google и подобные) в статье: https://proglib.io/w/0b3e6144
Радует то, что у автора статьи всё получилось, и своим опытом она делится в статье. Обо всех подводных камнях прохождения собеседований в FAANG (Facebook, Amazon, Apple, Netflix, Google и подобные) в статье: https://proglib.io/w/0b3e6144
Хабр
Подготовка к собеседованиям в IT-гиганты: как я преодолела проклятье алгоритмического собеседования
Дисклеймер: Я не программирую с трёх лет, не знаю наизусть Кнута, не являюсь призёром олимпиад по информатике и чемпионатов по спортивному программированию, не...
Мы теперь есть в Яндекс.Мессенджере. Присоединяйтесь:
https://yandex.ru/chat/#/join/627c55a9-89c7-4d27-86ed-287d33a5ce7d
https://yandex.ru/chat/#/join/627c55a9-89c7-4d27-86ed-287d33a5ce7d
Как с помощью Flutter достичь адаптивности приложений
Показываем на примерах Dart-кода, как в Flutter реализовать кроссплатформенный адаптивный дизайн для смартфонов, планшетов и больших экранов.
https://proglib.io/sh/YdCyARNm06
Показываем на примерах Dart-кода, как в Flutter реализовать кроссплатформенный адаптивный дизайн для смартфонов, планшетов и больших экранов.
https://proglib.io/sh/YdCyARNm06
Библиотека программиста
Как с помощью Flutter достичь адаптивности приложений
Показываем на примерах Dart-кода, как в Flutter реализовать кроссплатформенный адаптивный дизайн для смартфонов, планшетов и больших экранов 📱💻🖥️
70 YouTube-каналов для фронтенд-разработчика
Подборка YouTube-каналов, плейлистов и подкастов, посвящённых фронтенду: вёрстка, JS, библиотеки и фреймворки, уроки и скринкасты, доклады на конференциях и записи встреч локальных сообществ. Приятного просмотра!
https://proglib.io/sh/jDIsKbMWxa
Подборка YouTube-каналов, плейлистов и подкастов, посвящённых фронтенду: вёрстка, JS, библиотеки и фреймворки, уроки и скринкасты, доклады на конференциях и записи встреч локальных сообществ. Приятного просмотра!
https://proglib.io/sh/jDIsKbMWxa
Имеются монеты достоинством 1, 2, 5, 10, 25, 50 копеек. Нужно представить определенную сумму с помощью наименьшего количества монет. Какой алгоритм предпочтительнее всего использовать?
Anonymous Poll
21%
Динамическое программирование
49%
"Жадный" алгоритм
15%
С помощью чисел Фибоначчи
15%
Ни один из вышеперечисленных
Правильный ответ: "жадный" алгоритм.
Алгоритмы, предназначенные для решения задач оптимизации, обычно представляют собой последовательность шагов, на каждом из которых предоставляется некоторое множество выборов. Определение наилучшего выбора, руководствуясь принципами динамического программирования, во многих задачах оптимизации напоминает стрельбу из пушки по воробьям. Другими словами, для этих задач лучше подходят более простые и эффективные алгоритмы. Поскольку "жадный" алгоритм дает для этого набора монет оптимальное решение, то нет смысла использовать динамическое программирование или числа Фибоначчи.
Алгоритмы, предназначенные для решения задач оптимизации, обычно представляют собой последовательность шагов, на каждом из которых предоставляется некоторое множество выборов. Определение наилучшего выбора, руководствуясь принципами динамического программирования, во многих задачах оптимизации напоминает стрельбу из пушки по воробьям. Другими словами, для этих задач лучше подходят более простые и эффективные алгоритмы. Поскольку "жадный" алгоритм дает для этого набора монет оптимальное решение, то нет смысла использовать динамическое программирование или числа Фибоначчи.
📕 25 лучших книг для программистов
Список наиболее часто рекомендуемых книг о программировании, составлен по результатам анализа упоминаний в интернет-публикациях. Книги об алгоритмах, чистом коде, паттернах проектирования, а также пособия для развития soft skills и прохождения собеседований.
https://proglib.io/sh/hwx5MziQen
Список наиболее часто рекомендуемых книг о программировании, составлен по результатам анализа упоминаний в интернет-публикациях. Книги об алгоритмах, чистом коде, паттернах проектирования, а также пособия для развития soft skills и прохождения собеседований.
https://proglib.io/sh/hwx5MziQen
Гиперграф — это обобщённый вид графа, ... ?
Anonymous Quiz
12%
в котором вершины могут быть инцидентными, не соединяясь при этом ребром
52%
в котором каждым ребром могут соединяться не только две вершины, но и любые подмножества вершин
23%
который содержит одновременно ориентированные и неориентированные ребра
13%
указанные ответы неверны