Skip to content

Instantly share code, notes, and snippets.

View AlexManSPB's full-sized avatar
Working

Alexander AlexManSPB

Working
  • Saint-Petersburg
  • 14:42 (UTC +03:00)
View GitHub Profile
@AlexManSPB
AlexManSPB / tokens.md
Created January 14, 2024 21:30 — 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

  • Что такое авторизация/аутентификация
  • Где хранить токены
  • Как ставить куки ?
  • Процесс логина
  • Процесс рефреш токенов
  • Кража токенов/Механизм контроля токенов
@AlexManSPB
AlexManSPB / pattern-singleton.js
Created February 13, 2023 12:17 — forked from DmitriiNazimov/pattern-singleton.js
[JS Паттерн ОДИНОЧКА SINGLETON + синтаксис ООП ES6] #js #ООП #ES6 #Инкапсуляция #Паттерны
/**
*
* ПАТТЕРН SINGLETON
*
* Паттерн Одиночка гарантирует, что класс имеет только один экземпляр, и предоставляет глобальную точку доступа к этому экземпляру.
*
*/
@AlexManSPB
AlexManSPB / script.js
Created February 13, 2023 12:16 — forked from DmitriiNazimov/script.js
[Пример наследования в JS ES6] #ООП #js #ES6
// Если сделать вот так, то свойство _done реально становится приватным.
const _done = Symbol('done');
class Task {
constructor(title, initiateMessage = 'Создание задачи') {
this.title = title; // Зачем нижнее подчеркивание: название геттеров и сеттеров не должно совпадать
// с названием свойств обьекта. И т.к. здесь у нас есть сеттеры/геттеры, то свойству обьекта
// добавили нижнее почеркивание, чтобы не было ошибки.
// Таким образом свойство становится ПРИВАТНЫМ (на самом деле с ним можно делать что хочешь, но
// по соглашению такие свойства приватные).
@AlexManSPB
AlexManSPB / pattern-observer.js
Created February 13, 2023 12:09 — forked from DmitriiNazimov/pattern-observer.js
[JS ES6 Паттерн НАБЛЮДАТЕЛЬ (observer)] #ООП #js #ES6 #Паттерны
/**
*
* ПАТТЕРН НАБЛЮДАТЕЛЬ (почтальон)
* Несколько наблюдателей (подписчиков) могут получать данные от одного субьекта (почтальона)
*
*/
class Publisher { // субьект, получает и рассылает данные
constructor() {
this.observersList = []; // реестр наблюдателей (подписчиков)
@AlexManSPB
AlexManSPB / pattern-decorator.js
Created February 13, 2023 12:09 — forked from DmitriiNazimov/pattern-decorator.js
[JS ES6 Паттерн ДЕКОРАТОР (decorator)] #Паттерны #ООП #js #ES6
/**
*
* ПАТТЕРН ДЕКОРАТОР (обертка)
* Позволяет наделить обьект новыми возможностями не меняя первоначальный класс и не создавая дочерние классы
* Принцип работы: декоратор помещает целевой обьект в обьект обертку, кот-й запускает базовое поведение обьекта,
* а затем добавляет/отнимает что-то свое.
*
*/
class interface_Coffee {
@AlexManSPB
AlexManSPB / applying-patterns.txt
Created February 13, 2023 12:09 — forked from DmitriiNazimov/applying-patterns.txt
[Краткое описание паттернов проектирования] #Паттерны #ООП
ПАТТЕРНЫ ПРОЕКТИРОВАНИЯ:
Паттерны предназначены для решения типичных задач, возникающих в ходе проектирования. Любой паттерн описывает задачу, которая снова и снова возникает в нашей работе, а также принцип ее решения, причем таким образом, что это решение можно потом использовать миллион раз, ничего не изобретая заново.
Все паттерны обеспечивают возможность изменения некоторой части системы независимо от других частей.
-- Паттерн — решение задачи в контексте.
Не самое понятное определение, вы не находите? Не беспокойтесь, мы разберем все его составляющие — все эти контексты, задачи и решения:
- Контекстом называется ситуация, в которой применяется паттерн. Ситуация должна быть достаточно типичной и распространенной.
- Задачей называется цель, которой вы хотите добиться в контексте, в совокупности со всеми ограничениями, присущими контексту.
- Решением называется обобщенная архитектура, которая достигает заданной цели при соблюдении набора ограничений. Решение должно быть возможно применять снова
@AlexManSPB
AlexManSPB / pattern-command.js
Created February 13, 2023 12:08 — forked from DmitriiNazimov/pattern-command.js
[JS ES6 Паттерн КОМАНДА (command)] #js #ES6 #Паттерны #ООП
/**
*
* ПАТТЕРН КОМАНДА
*
Смысл: отделить объект-источник запроса от объекта, принимающего и выполняющего эти запросы.
Паттерн КОМАНДА — это поведенческий паттерн проектирования, который превращает запросы в объекты, позволяя передавать
их как аргументы при вызове методов, ставить запросы в очередь, логировать их, а также поддерживать отмену операций.
Убирает прямую зависимость между объектами, вызывающими операции, и объектами, которые их непосредственно выполняют.
Позволяет реализовать простую отмену и повтор операций.
@AlexManSPB
AlexManSPB / pattern-adapter.js
Created February 13, 2023 12:08 — forked from DmitriiNazimov/pattern-adapter.js
[JS ES6 Паттерн АДАПТЕР (adapter)] #ES6 #js #Паттерны #ООП
/**
*
* ПАТТЕРН АДАПТЕР
*
Обеспечивает совместимость классов с разными интерфейсами, т.е. выполняет роль переводчика.
В итоге клиент (тот кто вызывает методы) через адаптер может работать с разными классами с разными интерфейсами, даже не подозревая об этом,
хотя умеет пользоваться только одним интерфейсом.
*/
@AlexManSPB
AlexManSPB / pattern-facade.js
Created February 13, 2023 12:08 — forked from DmitriiNazimov/pattern-facade.js
[JS ES6 Паттерн ФАСАД (facade)] #js #ES6 #Паттерны #ООП
/**
*
* ПАТТЕРН ФАСАД
*
Предоставляет унифицированный интерфейс к группе интерфейсов подсистемы. Фасад определяет высокоуровневый интерфейс, упрощающий работу с подсистемой.
Превращает сложный интерфейс с множеством методов в простой интерфейс с минимум методов.
В данном случае интерфейс фасада компьюетра будет иметь всего 2 метода - вкл/выкл, при том что под капотом выполняется
12 методов.
Таким образом отделяется код клиента от кода реализации.
@AlexManSPB
AlexManSPB / pattern-template-method.js
Created February 13, 2023 12:07 — forked from DmitriiNazimov/pattern-template-method.js
[JS ES6 Паттерн ШАБЛОННЫЙ МЕТОД (template method)] #js #ES6 #Паттерны #ООП
/**
*
* ПАТТЕРН ШАБЛОННЫЙ МЕТОД
*
Задает «скелет» алгоритма в методе, оставляя определение реализации некоторых шагов субклассам.
Субклассы могут переопределять некоторые части алгоритма без изменения его структуры.
Методы внутри шаблонного метода могут быть пустыми, выдавать ошибку если не описаны в субклассе или иметь реализацию по умолчанию.
Применение:
1. Когда подклассы должны расширять базовый алгоритм, не меняя его структуры.
2. Когда у вас есть несколько классов, делающих одно и то же с незначительными отличиями. Если вы редактируете один