Skip to content

Instantly share code, notes, and snippets.

View ajile's full-sized avatar

Vladimir Milkov ajile

View GitHub Profile
@ajile
ajile / data.js
Last active September 15, 2017 13:15
Задача написать алгоритм, который сортирует оба массива таким образом, чтобы связи проведенные между `queues` и `users` не пересекались. Дальнейшее развитие алгоритма основывается на знании того, что пользователь может иметь отношение к нескольким очередям.
const queues = [
{ top: 100, name: "Development" },
{ top: 200, name: "English" },
{ top: 300, name: "Russian" }
];
const users = [
{ top: 100, name: "Dmitry Lantcov", queues: [queues[2]] },
{ top: 200, name: "Ксения Свидунович", queues: [] },
{ top: 300, name: "Оксана Деменко", queues: [queues[0]] },

Ниже приведены рекомендации по повышению технлогичности кода.

Фрагмент 1

Крупными мазками здесь следующие проблемы:

  1. Использование callback в присутствии промиса
  2. Методы componentWillMount и requestData частично делают одно и то же
  3. Метод requestData делает гораздо больше чем обещает (меняет стейты, устанавливает таймеры, содержит бизнес логику)

Общий совет:

// Generator of random numbers
const generator = function* (n) { for(; n > 0; n--) yield Math.random() * 1000 >> 0; };
// Array of random numbers
const numbers = [...generator(100)];
@ajile
ajile / gist:52e93806f98d97001a20
Last active August 29, 2015 14:10
Async functions executes only after scope
// Gets begins timestamp
var n = Date.now();
(function(){
// Creates async execution, there is no metter what's second arg's value is
setTimeout(function(){ console.log("Im done too!"); }, 0)
// Freeze process for a while
while(true) {
if(Date.now() - n > 3000) break; // Wait for a 3 seconds before unfreeze
}
console.log("Done!");
@ajile
ajile / gist:e97312a18bf1ebfa643c
Last active August 29, 2015 14:07
Задача для собеседования (javascript)
// Условия задачи:
// Существует список чисел от 1 до 100, числа не повторяются и не упорядочены.
// Одно число пропущено. Требуется написать алгоритм поиска пропещенного числа.
//
// Список формируется следующим образом:
function shuffle(o){ //v1.0
for(var j, x, i = o.length; i; j = Math.floor(Math.random() * i), x = o[--i], o[i] = o[j], o[j] = x);
return o;
}
@ajile
ajile / gist:50837f9dbcc7c4780c1f
Last active January 20, 2021 14:58
Задача для собеседования (javascript)
// Условия задачи:
// Дано дерево, каждый элемент которого пронумерован. Нумерация идет по уровням.
// Нужно написать скрипт, который пробегается по дереву и выводит элементы
// в порядке пронумерованности. Т.е. с предложенным деревом результат должен
// получиться следующим: 1,2,3,4,5,6,7,8,9,10
var a =
{title: 1, childs: [
{title:2, childs:[
{title:4, childs:[]},
{title:5, childs:[]}
@ajile
ajile / .zshrc
Created February 26, 2014 14:29
My ZSH file
# Path to your oh-my-zsh configuration.
ZSH=$HOME/.oh-my-zsh
# Set name of the theme to load.
# Look in ~/.oh-my-zsh/themes/
# Optionally, if you set this to "random", it'll load a random theme each
# time that oh-my-zsh is loaded.
# ZSH_THEME="robbyrussell"
# ZSH_THEME="wedisagree"
ZSH_THEME="powerline"