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 / fizzBuzz.js
Last active April 3, 2019 16:31
Алгоритмы. fizzBuzz.
/**
* Classical task.
*
* 3 - Fizz
* 5 - Buzz
* 15 - FizzBuzz
*/
function fizzBuzz() {
let result;
@YozhEzhi
YozhEzhi / exams.js
Created July 18, 2018 08:16
Типичные задачки на собеседованиях.
// ВОПРОС.
// Что выведется в консоль? Как добиться правильного вывода в консоль,
// не убирая setTimeout?
// ОТВЕТ: https://jsbin.com/fuwuyitige/edit?html,js,console
for (var i = 0; i < 10; i++) {
setTimeout(function () {
console.log(i); // ?
}, 0);
}
@YozhEzhi
YozhEzhi / react-remarks.js
Created July 18, 2018 08:15
Заметки по React.
/**
* Пример отмены промиса (race conditions).
* Например, при переключении закладок - выполняется подгрузка данных.
* При клике на вторую вкладку, а потом сразу на первую - запрос по первой вкладке
* всё ещё будет обрабатываться. Обработку уже ненужного запроса - можно прервать.
*/
export const fetchTodos = (filter) => (dispatch, getState) => {
if (getIsFetching(getState(), filter)) {
return Promise.resolve();
}
@YozhEzhi
YozhEzhi / promises.js
Created July 18, 2018 08:13
Promises.
/**
* Задачки на проверку работы промисов.
*/
doSomething().then(function () {
return doSomethingElse();
});
doSomething().then(function () {
doSomethingElse();
});
@YozhEzhi
YozhEzhi / ast.js
Created July 18, 2018 08:12
Abstract syntax tree.
import { find, identity } from 'lodash';
const singleTagsList = new Set(['hr', 'img', 'br']);
const propertyActions = [
{
name: 'body',
check: arg => typeof arg === 'string',
process: identity,
},
@YozhEzhi
YozhEzhi / exploring-es6.js
Created July 18, 2018 08:10
Exploring ES6 remarks. Part I.
// The repeat() method repeats strings:
> 'doo '.repeat(3)
'doo doo doo '
// From indexOf to startsWith:
if (str.indexOf('x') === 0) {} // ES5
if (str.startsWith('x')) {} // ES6
@YozhEzhi
YozhEzhi / currying.md
Created July 9, 2018 20:51
Каррирование.

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

// Обычная функция приветствия:
var greet = function(greeting, name) {
  console.log(greeting + ", " + name);
};
greet("Hello", "Heidi"); // "Hello, Heidi"
@YozhEzhi
YozhEzhi / es5-decorators.md
Last active July 9, 2018 20:48
Функции-обёртки (декораторы) (ES5).

Декоратор – приём программирования, который позволяет взять существующую функцию и изменить/расширить ее поведение.

Декоратор получает функцию и возвращает обертку, которая делает что-то своё «вокруг» вызова основной функции.

function bind(func, context) {
  return function() {
    return func.apply(context, arguments);
  };
}
@YozhEzhi
YozhEzhi / remarks.md
Last active June 28, 2018 20:54
Разные заметки из статей.

Одним из выдающихся отечественных мыслителей, которые исследовали проблему дисциплины в учебных заведениях, был киевский философ Валерий Алексеевич Босенко. В 80-ых годах прошлого столетия он писал о том, что при всем развитии науки и технологий, проблема дисциплины в процессе обучения остается на уровне раннекапиталистических и даже средневековых производственных отношений, когда дисциплинарные и авторитарные меры управления людьми были оправданными и даже необходимыми.

Сейчас же уровень производства позволяет использовать машины, технику для того, чтобы освободить человека для творчества,

@YozhEzhi
YozhEzhi / remarks.md
Last active June 20, 2018 21:19
JS: OOP.

Classes in JS.

// ES5 way
var Point = function(xPos, yPos) {
  this.xPos = xPos;
  this.yPos = yPos;
};

Point.prototype.getPos = function() {