#fundamental #patterns #cheatsheet
📌 Состояние (англ. State) — поведенческий паттерн, позволяющий объектам менять поведение в зависимости от своего состояния.
Идея: программа может находиться в одном из нескольких состояний, сменяющих друг друга. Количество состояний и переходов между ними конечно. Находясь в разных состояниях, программа может по-разному реагировать на одни и те же события, которые происходят с ней.
Проблема: машину состояний чаще всего реализуют с помощью условных операторов (if/switch), проверяющих текущее состояние объекта. Набор возможных состояний бывает трудно предопределить заранее, поэтому они добавляются в процессе развития программы, что впоследствии может вызвать проблемы.
Решение: создать отдельные классы для каждого состояния, в котором может пребывать объект, а затем вынести туда поведения, соответствующие этим состояниям.
Паттерн применяется, когда:
✔️Есть объект, поведение которого кардинально меняется.
✔️Код класса содержит множество похожих условных операторов.
📌 Состояние (англ. State) — поведенческий паттерн, позволяющий объектам менять поведение в зависимости от своего состояния.
Идея: программа может находиться в одном из нескольких состояний, сменяющих друг друга. Количество состояний и переходов между ними конечно. Находясь в разных состояниях, программа может по-разному реагировать на одни и те же события, которые происходят с ней.
Проблема: машину состояний чаще всего реализуют с помощью условных операторов (if/switch), проверяющих текущее состояние объекта. Набор возможных состояний бывает трудно предопределить заранее, поэтому они добавляются в процессе развития программы, что впоследствии может вызвать проблемы.
Решение: создать отдельные классы для каждого состояния, в котором может пребывать объект, а затем вынести туда поведения, соответствующие этим состояниям.
Паттерн применяется, когда:
✔️Есть объект, поведение которого кардинально меняется.
✔️Код класса содержит множество похожих условных операторов.
Как правильно общаться с удаленным сервером через SSH
О правилах безопасного SSH-подключения и способах его улучшения с примерами для систем на основе RHEL/CentOS и Ubuntu.
https://proglib.io/sh/0gQwGSZrpB
О правилах безопасного SSH-подключения и способах его улучшения с примерами для систем на основе RHEL/CentOS и Ubuntu.
https://proglib.io/sh/0gQwGSZrpB
Суперменом может стать каждый: разделяем дизайн и данные в React
Забавный рассказ с интерактивными иллюстрациями (и соответствующим кодом) о ментальной модели, которая поможет новичкам в React запомнить, как правильно с ним работать.
https://proglib.io/sh/Az5o9VJyhd
Забавный рассказ с интерактивными иллюстрациями (и соответствующим кодом) о ментальной модели, которая поможет новичкам в React запомнить, как правильно с ним работать.
https://proglib.io/sh/Az5o9VJyhd
#fundamental #patterns #cheatsheet
📌 Стратегия (англ. Strategy) — поведенческий паттерн, опредяющий семейство схожих алгоритмов и помещающий каждый из них в собственный класс, после чего алгоритмы можно взаимозаменять во время исполнения программы.
Идея: использовать различные бизнес-правила или алгоритмы исходя из контекста.
Проблема: по типу клиента (или по типу обрабатываемых данных) выбрать подходящий алгоритм, который следует применить.
Решение: определить семейство схожих и часто изменяющихся/расширяющихся алгоритмов, и вынести их в собственные классы-стратегии.
Паттерн Состояние можно рассматривать как надстройку над Стратегией, но в Стратегии объекты не знают друг о друге и никак не связаны, а в Состоянии сами состояния могут переключать контекст.
Паттерн применяется, когда:
✔️Необходимо использовать разные вариации какого-то алгоритма внутри одного объекта.
✔️Есть множество похожих классов, отличающихся только некоторым поведением.
✔️Не хотитите обнажать детали алгоритмов для других классов.
📌 Стратегия (англ. Strategy) — поведенческий паттерн, опредяющий семейство схожих алгоритмов и помещающий каждый из них в собственный класс, после чего алгоритмы можно взаимозаменять во время исполнения программы.
Идея: использовать различные бизнес-правила или алгоритмы исходя из контекста.
Проблема: по типу клиента (или по типу обрабатываемых данных) выбрать подходящий алгоритм, который следует применить.
Решение: определить семейство схожих и часто изменяющихся/расширяющихся алгоритмов, и вынести их в собственные классы-стратегии.
Паттерн Состояние можно рассматривать как надстройку над Стратегией, но в Стратегии объекты не знают друг о друге и никак не связаны, а в Состоянии сами состояния могут переключать контекст.
Паттерн применяется, когда:
✔️Необходимо использовать разные вариации какого-то алгоритма внутри одного объекта.
✔️Есть множество похожих классов, отличающихся только некоторым поведением.
✔️Не хотитите обнажать детали алгоритмов для других классов.
Менеджмент игровых проектов: от идеи до релиза
Как грамотно организовать рабочие процессы в геймдев-команде, какие инструменты использовать и на что обратить внимание в процессе создания продукта.
https://proglib.io/sh/XVdukb9x0J
Как грамотно организовать рабочие процессы в геймдев-команде, какие инструменты использовать и на что обратить внимание в процессе создания продукта.
https://proglib.io/sh/XVdukb9x0J
Пишем бота для Instagram на Python
Пошаговое руководство по созданию бота для Instagram на Python, который будет всё делать за вас: лайки, подписки, комментарии, анализ постов... Остаётся лишь фотографировать!
https://proglib.io/sh/GqdZ8bFv3t
Пошаговое руководство по созданию бота для Instagram на Python, который будет всё делать за вас: лайки, подписки, комментарии, анализ постов... Остаётся лишь фотографировать!
https://proglib.io/sh/GqdZ8bFv3t
Нечасто встретишь в интернете материалы про информационную безопасность, раскрывающие внутреннюю кухню организации. На Хабре появился очень любопытный текст, где специалист по информбезопасности Газпромбанка развеивает популярные мифы о защите персональных данных в банках и даёт представление о том, как устроена ИБ в финансовой организации.
Хабр
Защита персональной информации клиентов банка: как она работает?
Часто в комментариях на Хабре приходится встречать высказывания, что российские банки не умеют хранить персональные данные, да и вообще не очень-то расположены защищать клиента, например, при покупках через интернет. На самом деле система безопасности банков…
«Контейнер дал течь»: проверьте безопасность Docker-образа
Установленные в контейнере Docker пакеты, используемые библиотеки и даже базовый образ – любой компонент может создать уязвимость. Рассказываем, как вовремя найти и устранить течь.
https://proglib.io/sh/DAzwckGt08
Установленные в контейнере Docker пакеты, используемые библиотеки и даже базовый образ – любой компонент может создать уязвимость. Рассказываем, как вовремя найти и устранить течь.
https://proglib.io/sh/DAzwckGt08
Нейросети в помощь геймдев-художнику: машинное обучение для создания игрового пиксель-арта
О том, как генеративно-состязательные нейросети с Pix2Pix-архитектурой помогают художникам ускорить создание игрового дизайна.
https://proglib.io/sh/YO0C7fVusE
О том, как генеративно-состязательные нейросети с Pix2Pix-архитектурой помогают художникам ускорить создание игрового дизайна.
https://proglib.io/sh/YO0C7fVusE
FirstVDS запустили инициативу #SaveFirst на время пандемии
Чтобы облегчить жизнь людей в период самоизоляции, многие компании снизили цены на услуги, а некоторые и вовсе помогают бесплатно. В FirstVDS считают, это правильный путь, и не хотят оставаться в стороне, поэтому создали инициативу #SaveFirst.
Суть инициативы в том, что компания готова предоставить вычислительные мощности бесплатно. Главное, чтоб выполнялись два условия — сервисы и онлайн-проекты, размещенные на серверах, также должны быть бесплатны для людей и при этом касаются таких направлений, как:
🔸 предоставление ПО для организации процессов удалённой работы;
🔸 онлайн-образование;
🔸 решения в области здравоохранения;
🔸 организация культурного досуга.
Узнать больше об инициативе и подать заявку можно на сайте https://bit.ly/2UYQIbp
Чтобы облегчить жизнь людей в период самоизоляции, многие компании снизили цены на услуги, а некоторые и вовсе помогают бесплатно. В FirstVDS считают, это правильный путь, и не хотят оставаться в стороне, поэтому создали инициативу #SaveFirst.
Суть инициативы в том, что компания готова предоставить вычислительные мощности бесплатно. Главное, чтоб выполнялись два условия — сервисы и онлайн-проекты, размещенные на серверах, также должны быть бесплатны для людей и при этом касаются таких направлений, как:
🔸 предоставление ПО для организации процессов удалённой работы;
🔸 онлайн-образование;
🔸 решения в области здравоохранения;
🔸 организация культурного досуга.
Узнать больше об инициативе и подать заявку можно на сайте https://bit.ly/2UYQIbp
FirstVDS
Акция завершена | FirstVDS
#tools #frontend #library
Darkmode.js
Библиотека позволяет добавить темный/ночной режим на ваш сайт за несколько секунд.
Статья, которой был вдохновлен проект: https://proglib.io/w/847b44f2
Ссылка на репозиторий: https://proglib.io/w/8e6a3d86
Darkmode.js
Библиотека позволяет добавить темный/ночной режим на ваш сайт за несколько секунд.
Статья, которой был вдохновлен проект: https://proglib.io/w/847b44f2
Ссылка на репозиторий: https://proglib.io/w/8e6a3d86
Когда антивирус бессилен: распознавание вредоносных программ методами компьютерного зрения
Небольшая заметка про отображение бинарных файлов в виде картинок и применение средств computer vision для обнаружения троянов и вирусов.
https://proglib.io/sh/tsCQgE6hXy
Небольшая заметка про отображение бинарных файлов в виде картинок и применение средств computer vision для обнаружения троянов и вирусов.
https://proglib.io/sh/tsCQgE6hXy
Во время самоизоляции многие работодатели наконец-то признали, что удалённые работники вполне эффективны. Пути назад нет — бизнес идёт туда, где ему выгодно, и скоро всё меньше рабочих мест будут требовать физического присутствия работника в офисе.
Мы предлагаем встретить эти перемены во всеоружии. С 14 по 16 апреля GeekBrains проводит серию бесплатных вебинаров «Все об удалёнке: как работать эффективно и зарабатывать»
Рассмотрим весь путь фрилансера: от принятия решения и выбора биржи, до навыков удалённого делегирования задач и организации работы команды. Пройдёмся по наиболее часто задаваемым вопросам, осветим неочевидные аспекты и проблемы работы из дома.
Переходите по ссылке, чтобы узнать больше и записаться: https://proglib.io/w/f9ed33d1
Мы предлагаем встретить эти перемены во всеоружии. С 14 по 16 апреля GeekBrains проводит серию бесплатных вебинаров «Все об удалёнке: как работать эффективно и зарабатывать»
Рассмотрим весь путь фрилансера: от принятия решения и выбора биржи, до навыков удалённого делегирования задач и организации работы команды. Пройдёмся по наиболее часто задаваемым вопросам, осветим неочевидные аспекты и проблемы работы из дома.
Переходите по ссылке, чтобы узнать больше и записаться: https://proglib.io/w/f9ed33d1
Большинство из нас уже дико устали от карантина: готовка как будто 24/7 или поглощение фаст-фуда, сложности с заказом продуктов (а выходить всё-таки не хочется!), риск закончить карантин с лишними кг на боках.
Трать время на то, в чём ты профессионал, а не на оладьи. А мы возьмём готовку на себя!
Почему тебе нужно попробовать justfood:
✅ 4 линейки питания. Два варианта для спортсменов, а также премиальная и вегетарианская линейки
✅ +500 блюд во всех линейках. Есть супы, салаты, курица и говядина, правильные десерты, фрукты и овощи
✅ У каждой линейки дневная калорийность от 1300 ккал до 2500 ккал. На каждый день 5-7 блюд
✅ Привозим по всей Москве и даже до Бетонки
✅ Антисептик в подарок. Безопасная доставка и абсолютное соблюдение мер предосторожности на производстве
Месяц питания от 21 384 ₽. Пробный день от 990 ₽!
По промокоду Biblioprog дополнительная скидка на заказ от 5 дней.
Заказывай по ссылке: https://bit.ly/2XhLOYD
Трать время на то, в чём ты профессионал, а не на оладьи. А мы возьмём готовку на себя!
Почему тебе нужно попробовать justfood:
✅ 4 линейки питания. Два варианта для спортсменов, а также премиальная и вегетарианская линейки
✅ +500 блюд во всех линейках. Есть супы, салаты, курица и говядина, правильные десерты, фрукты и овощи
✅ У каждой линейки дневная калорийность от 1300 ккал до 2500 ккал. На каждый день 5-7 блюд
✅ Привозим по всей Москве и даже до Бетонки
✅ Антисептик в подарок. Безопасная доставка и абсолютное соблюдение мер предосторожности на производстве
Месяц питания от 21 384 ₽. Пробный день от 990 ₽!
По промокоду Biblioprog дополнительная скидка на заказ от 5 дней.
Заказывай по ссылке: https://bit.ly/2XhLOYD
Бесплатный видеокурс «Язык R для пользователей Excel»
Курс по языку R для пользователей Microsoft Excel: 12 уроков об архитектуре tidyverse и входящих в неё пакетах: readr, vroom, dplyr, tidyr и ggplot2.
https://proglib.io/sh/wmjQxCs70V
Курс по языку R для пользователей Microsoft Excel: 12 уроков об архитектуре tidyverse и входящих в неё пакетах: readr, vroom, dplyr, tidyr и ggplot2.
https://proglib.io/sh/wmjQxCs70V
Чтобы активировать на сайте proglib.io темную тему, нужно полайкать и добавить в закладки любую из статей
#fundamental #patterns #cheatsheet
📌 Шаблонный метод (англ. Template Method) — поведенческий паттерн, определяющий основу алгоритма и позволяющий подклассам переопределять некоторые шаги алгоритма, не меняя его общей структуры.
Проблема: код нескольких классов содержит довольно много общего в части решения какой-то задачи, от чего необходимо избавиться. Остальной код, работающий с объектами этих классов, наполнен условиями, проверяющими тип обработчика перед началом работы. Этот код можно упростить, если слить все классы воедино либо свести их к общему интерфейсу.
Решение: разбить алгоритм на последовательность шагов, описать эти шаги в отдельных методах и вызывать их в одном шаблонном методе друг за другом, что позволит подклассам переопределять некоторые шаги алгоритма, оставляя без изменений его структуру.
Паттерн применяется, когда:
✔️Подклассы должны расширять базовый алгоритм, не меняя его структуры.
✔️Есть несколько классов, реализующих одно и то же с незначительными отличиями.
📌 Шаблонный метод (англ. Template Method) — поведенческий паттерн, определяющий основу алгоритма и позволяющий подклассам переопределять некоторые шаги алгоритма, не меняя его общей структуры.
Проблема: код нескольких классов содержит довольно много общего в части решения какой-то задачи, от чего необходимо избавиться. Остальной код, работающий с объектами этих классов, наполнен условиями, проверяющими тип обработчика перед началом работы. Этот код можно упростить, если слить все классы воедино либо свести их к общему интерфейсу.
Решение: разбить алгоритм на последовательность шагов, описать эти шаги в отдельных методах и вызывать их в одном шаблонном методе друг за другом, что позволит подклассам переопределять некоторые шаги алгоритма, оставляя без изменений его структуру.
Паттерн применяется, когда:
✔️Подклассы должны расширять базовый алгоритм, не меняя его структуры.
✔️Есть несколько классов, реализующих одно и то же с незначительными отличиями.
Ускоряем загрузку сайта с помощью Chrome DevTools
В этом подробном туториале показываем, как использовать Chrome DevTools, чтобы ускорить загрузку сайта, используя вкладки Audits, Network и Performance.
https://proglib.io/sh/iRbyk6ujzQ
В этом подробном туториале показываем, как использовать Chrome DevTools, чтобы ускорить загрузку сайта, используя вкладки Audits, Network и Performance.
https://proglib.io/sh/iRbyk6ujzQ
ТОП-10 лучших игр для программистов 🧩
10. В TIS-100 игроки должны решать различные типы головоломок, соревнуясь друг с другом в оптимизации кода на игровом многопотоковом ассемблере. Игра выполнена в необычной и стильной эстетике компьютерных руководств 80-х годов.
9. Human Resource Machine — игра про программирование с увлекательным набором головоломок, где игрок использует свои навыки кодинга, чтобы управлять маленькими офисными работниками, которые должны перемещать объекты между различными областями.
8. Screeps — это MMO стратегия, в которой игрок должен использовать JavaScript для управления игровыми сущностями и построения собственной империи.
Узнать про остальные игры, а заодно и получить 50% скидку на годовую подписку JavaRush, можно воооот здесь.
10. В TIS-100 игроки должны решать различные типы головоломок, соревнуясь друг с другом в оптимизации кода на игровом многопотоковом ассемблере. Игра выполнена в необычной и стильной эстетике компьютерных руководств 80-х годов.
9. Human Resource Machine — игра про программирование с увлекательным набором головоломок, где игрок использует свои навыки кодинга, чтобы управлять маленькими офисными работниками, которые должны перемещать объекты между различными областями.
8. Screeps — это MMO стратегия, в которой игрок должен использовать JavaScript для управления игровыми сущностями и построения собственной империи.
Узнать про остальные игры, а заодно и получить 50% скидку на годовую подписку JavaRush, можно воооот здесь.
JavaRush
Качаем скиллы, отдыхая. Топ-10 лучших игр для программистов
Программирование — это весело и увлекательно, не так ли? С этим утверждением не согласятся многие новички, которые пытаются овладеть всеми нюансами Java или другого ЯП, изучая скучные туториалы...
Перевод статьи под названием «10 Extraordinary GitHub Repos for All Developers», в которой содержатся ссылки на полезные репозитории для всех разработчиков.
https://proglib.io/w/5f3b3092
https://proglib.io/w/5f3b3092
Medium
10 Extraordinary GitHub Repos for All Developers
Interview resources, build your own X, a list of great public APIs, and more