Skip to content

Instantly share code, notes, and snippets.

View YozhEzhi's full-sized avatar

Alexandr Zhidovlenko YozhEzhi

  • Sportmaster Lab
  • Saint-Petersburg, Russia
View GitHub Profile
@YozhEzhi
YozhEzhi / tokens.md
Created April 10, 2024 08: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

  • Что такое авторизация/аутентификация
  • Где хранить токены
  • Как ставить куки ?
  • Процесс логина
  • Процесс рефреш токенов
  • Кража токенов/Механизм контроля токенов
@YozhEzhi
YozhEzhi / remarks.md
Last active December 25, 2022 17:01
Шамиль Ахмадуллин — Как научить ребёнка учиться

К школе стоит относиться как к тренировкам. При таком подходе станет проще воспринимать всякие конфликты в классе и т.д.


Есть 4 стадии обучения:

  1. Неосозная некомпетентность (Мы не знаем, что есть велосипед и на нём можно ездить)
  2. Осознанная компетентность (Мы знаем, что есть велосипед, но не умеем на нём ездить)
  3. Осознанная компетентность (Мы научились ездить на велосипеде, но езда от нас требует высокой степени внимания)
  4. Бессознательная компетентность (Мы свободно ездим, можем общаться при езде, думать о чём-то постороннем)

Шаблон Фасад

Как правило, фасад используется для создания некоторой абстракции, скрывающей за собой совершенно иную реальность. Паттерн Фасад обеспечивает удобный высокоуровневый интерфейс для больших блоков кода, скрывая за собой их истинную сложность. Относитесь к Фасаду, как к упрощенному API, который вы отдаете в пользование другим разработчикам.

Фасад — структурный паттерн. Часто его можно обнаружить в JavaScript-библиотеках и фреймворках, где пользователям доступна только ограниченная абстракция широкого диапазона поведений реализованных внутри.

Благодаря такому подходу, пользователь взаимодействует только с интерфейсом, не имея никакого представления о подсистемах, которые скрываются за ним.

Причина, по которой интересен Фасад — возможность скрыть детали реализации конкретной функциональности, хранящиеся в модулях. Это позволит нам вносить изменения в реализацию, не сообщая об этом пользователям.

Redux-приложение это:

  • состояние (state) приложения в одном месте;
  • однонаправленный поток данных;

Все состояние вашего приложения сохранено в объекте внутри одного хранилища (store). Единственный способ изменить дерево состояния - это вызвать действие (action), объект описывающий то, что случилось. Чтобы указать, каким образом действия преобразовывают дерево состояния - нужно использовать чистые "редюсеры".

ACTIONS

@YozhEzhi
YozhEzhi / remarks.js
Created September 4, 2020 20:36
Kyle Simpson — You Don't Know JS: ES6 & Beyond
/**
* Syntax.
* Объявления переменных стоит выполнять вверху блока кода.
* По старинке. Это позволит избежать ReferenceError!
* Это Temporal Dead Zone (TDZ) ошибка: переменная объявлена, но ещё не
* инициализированна.
*/
{
console.log( a ); // undefined
console.log( b ); // ReferenceError!
@YozhEzhi
YozhEzhi / remarks.md
Created September 4, 2020 20:34
Стефанов Стоян - JavaScript. Шаблоны

// ================================================================ // Стефанов - JS. Шаблоны // ================================================================ /** ВСТУПЛЕНИЕ

Шаблоны программирования представляют собой методы решения наи- более типичных задач веб-разработки.

Объект в js – это всего лишь коллекция именованных свойств, список

@YozhEzhi
YozhEzhi / remarks.js
Created September 4, 2020 20:34
Д. Крокфорд — JavaScript. Сильные стороны
// ================================================================
// Крокфорд - JS Сильные стороны
// ================================================================
/**
Старый полифил для Object.create():
*/
if (typeof Object.create() !== 'function' {
Object.create = function (o) {
var F = function () {};
F.prototype = o;
// ================================================================
// Apply: Get max item
// ================================================================
var arr = [1, 2, 50, 20, 38, 88];
function getMax(arr) {
return Math.max.apply(null, arr); // ES6: Math.max(...arr)
};
console.log(arr.getMax(arr)); // 88;

// ================================================================ // MVC (Model-View-Controller) // https://ru.wikipedia.org/wiki/Model-View-Controller // https://upload.wikimedia.org/wikipedia/commons/f/fd/MVC-Process.png // ================================================================ /** Концепция MVC позволяет разделить данные (модель), представление и обработку действий (производимую контроллером) пользователя на три отдельных компонента:

  • Модель:
/*
* ================================================================
* Creational patterns
* ================================================================
*/
/**
* Generating objects with Object.create().
* Object.create creates prototype chain for object extending.
* https://jsbin.com/resixu/19/edit?html,js,console
*/