Skip to content

Instantly share code, notes, and snippets.

View maplemap's full-sized avatar
🇺🇦

Serhiy Illarionov maplemap

🇺🇦
View GitHub Profile
@maplemap
maplemap / pattern-chain-of-responsibility.js
Created May 1, 2024 15:46 — forked from DmitriiNazimov/pattern-chain-of-responsibility.js
[JS ES6 Паттерн ЦЕПОЧКА ОБЯЗАННОСТЕЙ (Chain of responsibility)] #js #ES6 #ООП #Паттерны
/**
*
* ПАТТЕРН ЦЕПОЧКА ОБЯЗАННОСТЕЙ (Chain of responsibility)
*
* Паттерн ЦЕПОЧКА ОБЯЗАННОСТЕЙ - это поведенческий паттерн проектирования, который позволяет передавать запросы
* последовательно по цепочке обработчиков. Каждый последующий обработчик решает, может ли он обработать запрос сам
* и стоит ли передавать запрос дальше по цепи.
*
* Пример: у вас есть три счета (A, B, C) с разными суммами и разным приоритетом использования. Сначала проверяется A,
* если на нем достаточно денег для покупки, то цепочка прерывается. Иначе проверяется B, затем C. Цепь будет
@maplemap
maplemap / pattern-builder.js
Created May 1, 2024 15:46 — forked from DmitriiNazimov/pattern-builder.js
[JS ES6 Паттерн СТРОИТЕЛЬ (builder)] #js #ES6 #ООП #Паттерны
/**
*
* ПАТТЕРН СТРОИТЕЛЬ (builder (композиционный конструктор обьекта))
*
* Паттерн СТРОИТЕЛЬ - это порождающий паттерн проектирования, который позволяет создавать сложные объекты пошагово.
* Строитель даёт возможность использовать один и тот же код строительства для получения разных представлений объектов.
* Применение: Паттерн Строитель нужен, если объект может существовать в разных вариациях или процесс
* инстанцирования состоит из нескольких шагов.
* В этом случае есть три варианта:
* - огромный конструктор(фабрика) со множеством if/else в котором легко запуться и который тяжело понять
@maplemap
maplemap / pattern-command.js
Created May 1, 2024 15:44 — forked from DmitriiNazimov/pattern-command.js
[JS ES6 Паттерн КОМАНДА (command)] #js #ES6 #Паттерны #ООП
/**
*
* ПАТТЕРН КОМАНДА
*
Смысл: отделить объект-источник запроса от объекта, принимающего и выполняющего эти запросы.
Паттерн КОМАНДА — это поведенческий паттерн проектирования, который превращает запросы в объекты, позволяя передавать
их как аргументы при вызове методов, ставить запросы в очередь, логировать их, а также поддерживать отмену операций.
Убирает прямую зависимость между объектами, вызывающими операции, и объектами, которые их непосредственно выполняют.
Позволяет реализовать простую отмену и повтор операций.
@maplemap
maplemap / tokens.md
Created December 17, 2023 14:14 — forked from zmts/tokens.md
Про токены, JSON Web Tokens (JWT), аутентификацию и авторизацию. Token-Based Authentication

Про токены, JSON Web Tokens (JWT), аутентификацию и авторизацию. Token-Based Authentication

Last major update: 25.08.2020

  • Что такое авторизация/аутентификация
  • Где хранить токены
  • Как ставить куки ?
  • Процесс логина
  • Процесс рефреш токенов
  • Кража токенов/Механизм контроля токенов
@maplemap
maplemap / algorithms-and-data-structure.js
Last active August 13, 2023 07:08
Javascript :: Algorithms and Data Structure
/*
#### Searches Algorithms ####
*/
/* ## Linear Search ## */
const array = [1,4,5,8,5,1,2,7,5,2,11]
let count = 0
function linearSearch(array, item) {
for (let i = 0; i < array.length; i++) {
@maplemap
maplemap / event-bus.js
Last active July 13, 2022 14:19
Event Bus implementations
/*
* EventBus with multiply calling
*/
/*
* Based on Custom Element
*/
function EventBus() {
const bus = document.createElement('fakeelement');
@maplemap
maplemap / load-script-by-promise
Created July 13, 2021 09:10
Load script by Promise
const loadScriptByPromise = (url: string) =>
new Promise(resolve => {
const head = document.getElementsByTagName('head')[0]
const script = document.createElement('script')
script.type = 'text/javascript'
script.addEventListener('load', function listener(){
this.removeEventListener('load', listener)
resolve(script)
})
script.src = url
@maplemap
maplemap / clean_code.md
Created September 5, 2020 05:34 — forked from wojteklu/clean_code.md
Summary of 'Clean code' by Robert C. Martin

Code is clean if it can be understood easily – by everyone on the team. Clean code can be read and enhanced by a developer other than its original author. With understandability comes readability, changeability, extensibility and maintainability.


General rules

  1. Follow standard conventions.
  2. Keep it simple stupid. Simpler is always better. Reduce complexity as much as possible.
  3. Boy scout rule. Leave the campground cleaner than you found it.
  4. Always find root cause. Always look for the root cause of a problem.

Design rules

@maplemap
maplemap / pattern-singleton.js
Created July 19, 2020 09:35 — forked from DmitriiNazimov/pattern-singleton.js
[JS Паттерн ОДИНОЧКА SINGLETON + синтаксис ООП ES6] #js #ООП #ES6 #Инкапсуляция #Паттерны
/**
*
* ПАТТЕРН SINGLETON
*
* Паттерн Одиночка гарантирует, что класс имеет только один экземпляр, и предоставляет глобальную точку доступа к этому экземпляру.
*
*/
@maplemap
maplemap / pattern-observer.js
Created July 19, 2020 09:34 — forked from DmitriiNazimov/pattern-observer.js
[JS ES6 Паттерн НАБЛЮДАТЕЛЬ (observer)] #ООП #js #ES6 #Паттерны
/**
*
* ПАТТЕРН НАБЛЮДАТЕЛЬ (почтальон)
* Несколько наблюдателей (подписчиков) могут получать данные от одного субьекта (почтальона)
*
*/
class Publisher { // субьект, получает и рассылает данные
constructor() {
this.observersList = []; // реестр наблюдателей (подписчиков)