Skip to content

Instantly share code, notes, and snippets.

@DmitriiNazimov
DmitriiNazimov / js-methods.md
Last active August 12, 2022 17:17
Нативные методы JS ES6+ для работы со строками и массивами.

Нативные методы JS ES6+ для работы со строками и массивами.

Конспект актуален по состоянию на август 2022 года.

В данном конспекте отсутствует:

  • методы работы с юникодом.
  • устаревшие (deprecated) и эксперементальные методы.

✅ - часто используемый метод, рекомендуется запомнить в первую очередь.

@DmitriiNazimov
DmitriiNazimov / commitConvention.md
Last active November 12, 2024 20:32 — forked from bibendi/gist:7941823
Оформление коммитов #git

Как писать коммиты

Источники

В качестве основы используется Angular Git commit Message Convention - это наиболее авторитетный источник. Все остальные вариации конвенций по коммитам ссылаются на эту.

Также достаточно авторитетным источником является conventionalcommits.org

Ниже находится краткая выжимка того, как я понял эти конвенции.

Шаблон коммита

@DmitriiNazimov
DmitriiNazimov / pattern-visitor.js
Created August 30, 2019 15:12
[JS ES6 Паттерн ПОСЕТИТЕЛЬ (visitor)] #js #ES6 #ООП #Паттерны
/**
*
* ПАТТЕРН ПОСЕТИТЕЛЬ (visitor)
*
* ПОСЕТИТЕЛЬ — используется для расширения возможностей комбинации объектов, т.е. паттерн Посетитель позволяет
* добавлять объектам дополнительные операции, не изменяя их исходный код.
*
* Когда вам нужно выполнить какую-то операцию над всеми элементами сложной структуры объектов, например, деревом.
* Посетитель позволяет применять одну и ту же операцию к объектам различных классов. ИЛИ когда новое поведение имеет
* смысл только для некоторых классов из существующей иерархии.
@DmitriiNazimov
DmitriiNazimov / pattern-memento.js
Last active January 5, 2024 20:44
[JS ES6 Паттерн ХРАНИТЕЛЬ (memento)] #js #ES6 #ООП #Паттерны
/**
*
* ПАТТЕРН ХРАНИТЕЛЬ (memento)
*
* Паттерн ХРАНИТЕЛЬ (memento) - Паттерн Хранитель используется для реализации возврата к одному из предыдущих
* состояний (например, если пользователь выполнил команду «Отменить»).
* Хранитель – это объект, в котором сохраняется внутреннее состояния другого объекта – хозяина хранителя. Для работы
* механизма отката нужно, чтобы хозяин предоставил хранитель, когда возникнет необходимость записать контрольную точку
* состояния хозяина. Только хозяину разрешено помещать в хранитель информацию и извлекать ее оттуда, для других
* объектов хранитель непрозрачен.
@DmitriiNazimov
DmitriiNazimov / pattern-mediator.js
Created August 27, 2019 21:13
[JS ES6 Паттерн ПОСРЕДНИК (mediator) ] #js #ES6 #ООП #Паттерны
/**
*
* ПАТТЕРН ПОСРЕДНИК (mediator)
*
* Паттерн ПОСРЕДНИК (mediator) - это поведенческий паттерн проектирования, который позволяет уменьшить связанность
* множества классов между собой, благодаря перемещению этих связей в один класс-посредник.
* Паттерн Посредник используется для централизации сложных взаимодействий и управляющих операций между объектами.
* Один из модулей медиатора изменяет состояние -> оповещает об этом медиатор -> медиатор оповещает об этом другие
* модули, которым положено знать о случившемся.
* Довольно популярна реализация Посредника при помощи Наблюдателя. При этом объект посредника будет выступать
@DmitriiNazimov
DmitriiNazimov / pattern-flyweight.js
Created August 27, 2019 20:33
[JS ES6 Паттерн ПРИСПОСОБЛЕНЕЦ/ЛЕГКОВЕС (Flyweight)] #js #ES6 #ООП #Паттерны
/**
*
* ПАТТЕРН ПРИСПОСОБЛЕНЕЦ/ЛЕГКОВЕС (Flyweight)
*
* Паттерн ПРИСПОСОБЛЕНЕЦ/ЛЕГКОВЕС - структурный шаблон проектирования, при котором объект, представляющий себя как
* уникальный экземпляр в разных местах программы, по факту не является таковым.
* Данный паттерн проектирования позволяет вместить большее количество объектов в отведённую оперативную память.
* Легковес экономит память, разделяя общее состояние объектов между собой, вместо хранения одинаковых данных в
* каждом объекте.
@DmitriiNazimov
DmitriiNazimov / pattern-chain-of-responsibility.js
Last active May 1, 2024 15:46
[JS ES6 Паттерн ЦЕПОЧКА ОБЯЗАННОСТЕЙ (Chain of responsibility)] #js #ES6 #ООП #Паттерны
/**
*
* ПАТТЕРН ЦЕПОЧКА ОБЯЗАННОСТЕЙ (Chain of responsibility)
*
* Паттерн ЦЕПОЧКА ОБЯЗАННОСТЕЙ - это поведенческий паттерн проектирования, который позволяет передавать запросы
* последовательно по цепочке обработчиков. Каждый последующий обработчик решает, может ли он обработать запрос сам
* и стоит ли передавать запрос дальше по цепи.
*
* Пример: у вас есть три счета (A, B, C) с разными суммами и разным приоритетом использования. Сначала проверяется A,
* если на нем достаточно денег для покупки, то цепочка прерывается. Иначе проверяется B, затем C. Цепь будет
@DmitriiNazimov
DmitriiNazimov / pattern-builder.js
Last active May 1, 2024 15:46
[JS ES6 Паттерн СТРОИТЕЛЬ (builder)] #js #ES6 #ООП #Паттерны
/**
*
* ПАТТЕРН СТРОИТЕЛЬ (builder (композиционный конструктор обьекта))
*
* Паттерн СТРОИТЕЛЬ - это порождающий паттерн проектирования, который позволяет создавать сложные объекты пошагово.
* Строитель даёт возможность использовать один и тот же код строительства для получения разных представлений объектов.
* Применение: Паттерн Строитель нужен, если объект может существовать в разных вариациях или процесс
* инстанцирования состоит из нескольких шагов.
* В этом случае есть три варианта:
* - огромный конструктор(фабрика) со множеством if/else в котором легко запуться и который тяжело понять
@DmitriiNazimov
DmitriiNazimov / pattern-bridge.js
Last active April 25, 2024 15:25
[JS ES6 Паттерн МОСТ (bridge)] #js #ES6 #ООП #Паттерны
/**
*
* ПАТТЕРН МОСТ (bridge)
*
* Паттерн МОСТ - отделяет абстракцию от реализации, благодаря чему появляется возможность независимо изменять то и
* другое. Это структурный паттерн проектирования, который разделяет один или несколько классов на две отдельные
* иерархии — абстракцию и реализацию, позволяя изменять их независимо друг от друга.
* Например у нас есть класс Круг, и мы хотим создавать круги разного цвета, для этого нужно будет создать подклассы
* Синий Круг, Желтый круг и т.д. А если потом появятся квадраты и треугольники, то для них тоже нужно будет создавать
* большое количество подклассов. В итоге иерархия будет огромной. Логичнее создать две независимых иерархии -
@DmitriiNazimov
DmitriiNazimov / pattern-proxy.js
Last active April 25, 2024 15:24
[JS ES6 Паттерн ЗАМЕСТИТЕЛЬ (proxy)] #js #ES6 #ООП Паттерны#
/**
*
* ПАТТЕРН ЗАМЕСТИТЕЛЬ (proxy)
* Предоставляет суррогатный объект, управляющий доступом к другому объекту.
*
* Заместитель это обертка, которая применяется в следующих случаях:
* 1. Ленивая инициализация (виртуальный прокси). Когда у вас есть тяжёлый объект,
* грузящий данные из файловой системы или базы данных.
* 2. Защита доступа (защищающий прокси). Когда в программе есть разные типы пользователей, и вам хочется
* защищать объект от неавторизованного доступа. Прокси может проверять доступ при каждом вызове и передавать