
Andrey
12.04.2017
07:58:41
это обязательно так? я просто засунул все в редусеры как дефолтное значение state и при инициализации возвращаю его (срабатывает default в switch)

Igor
12.04.2017
07:59:56
createLogger делать сейчас не нужно ?

Andrey
12.04.2017
08:00:36
после версии 3 логгер по дефолту возвращается с настройками по умолчанию
экспортится я имею в виду

Google

Andrey
12.04.2017
08:14:34
кароче так и не разобрался где ошибка, скачал redux dev tools

Andrey ?
12.04.2017
08:15:48
Как лучше всего решить следующую задачу?
Дана маска: Hello, *****
Звездочка - ровно один любой символ
Дан массив строк:
Hello, Abcde
Hello, World
Hello, me
Подходят под маску, соответственно, все кроме последнего. Как проверить соответствие маске кроме как проходя циклом?

Олег
12.04.2017
08:16:24
\w

Кирилл
12.04.2017
08:16:32
w/

ASergey
12.04.2017
08:17:12
Hello, \w{5}

Олег
12.04.2017
08:17:17
Hello,\s\w+

Andrey ?
12.04.2017
08:17:52
А теперь подвох
Маска должна быть изменяемой
Именно в таком формате
Любая строка, звездочки, любая строка и так далее
Регуляркой-то я знаю как это сматчить)

Олег
12.04.2017
08:18:42
new RegExp

Andrey ?
12.04.2017
08:20:08
Это должно редактироваться через интерфейс и быть понятным любому идиоту

Google

Andrey ?
12.04.2017
08:20:34
Повторюсь, именно в формате "звездочка - любой символ"

Олег
12.04.2017
08:21:08
В чем проблема у тебя

Andrey ?
12.04.2017
08:21:27
В том как это сделать максимально эффективно, не используя регэкспы

Кирилл
12.04.2017
08:22:03
почему такая ненависть к регуляркам
любой символ - [\s\S]
заменяешь звездочи на это

Andrey ?
12.04.2017
08:22:21
Потому что как мне на-лету из формата "Привет, *****" конвертировать в регулярки?

Кирилл
12.04.2017
08:22:22
и в new RegExtp

Andrey ?
12.04.2017
08:22:32
При том, что там могут содержаться спецсимволы из регэкспов

Олег
12.04.2017
08:23:11

Кирилл
12.04.2017
08:25:11
The regex expressions . and \s\S are not equivalent, since . doesn't catch line terminators (like new line) by default.

Sergey
12.04.2017
08:26:12
почему не написать просто краткий ман в одну строку рядом с полем на тему: любой символ — paste/your/symbol и не создавать проблем?

Andrey ?
12.04.2017
08:27:14
И потому что там могут содержаться символы а-ля "+" или "?"

Кирилл
12.04.2017
08:27:47
экранируй и все


Alexey
12.04.2017
09:21:54
let mask = 'Привет, ****! Ты ***.';
const maskRe = /(\*)+/gi;
const textRe = /^[\wа-я]+$/i;
let maskCache = {};
let preprocessMask = (mask) => {
let tokens = [];
while (match = maskRe.exec(mask)) {
tokens.push({ index: match.index, length: match[0].length });
}
maskCache[mask] = tokens;
return tokens;
};
let validateByMask = (mask, input) => {
let tokens = maskCache[mask] || preprocessMask(mask);
if (mask.length != input.length)
return false;
let indexes = tokens.map(t => t.index);
for (let i = 0; i < mask.length; ) {
let maskIdx = indexes.indexOf(i);
if (maskIdx != -1) {
let token = tokens[maskIdx];
let candidate = input.slice(token.index, token.index + token.length);
if (!textRe.test(candidate))
return false;
i += token.length;
continue;
}
if (mask[i] != input[i])
return false;
i++;
}
return true;
};
console.log(validateByMask(mask, 'Привет, Вася! Ты хуй.')); //true
console.log(validateByMask(mask, 'Привет, Вася! Ты пидор.')); //false
console.log(validateByMask(mask, 'Привет, Димон! Ты хуй.')); //false


Andrey ?
12.04.2017
09:22:39
let mask = 'Привет, ****! Ты ***.';
const maskRe = /(\*)+/gi;
const textRe = /^[\wа-я]+$/i;
let maskCache = {};
let preprocessMask = (mask) => {
let tokens = [];
while (match = maskRe.exec(mask)) {
tokens.push({ index: match.index, length: match[0].length });
}
maskCache[mask] = tokens;
return tokens;
};
let validateByMask = (mask, input) => {
let tokens = maskCache[mask] || preprocessMask(mask);
if (mask.length != input.length)
return false;
let indexes = tokens.map(t => t.index);
for (let i = 0; i < mask.length; ) {
let maskIdx = indexes.indexOf(i);
if (maskIdx != -1) {
let token = tokens[maskIdx];
let candidate = input.slice(token.index, token.index + token.length);
if (!textRe.test(candidate))
return false;
i += token.length;
continue;
}
if (mask[i] != input[i])
return false;
i++;
}
return true;
};
console.log(validateByMask(mask, 'Привет, Вася! Ты хуй.')); //true
console.log(validateByMask(mask, 'Привет, Вася! Ты пидор.')); //false
console.log(validateByMask(mask, 'Привет, Димон! Ты хуй.')); //false
Что-то мне подсказывает, что цикликом-то быстрее будет...)


Dmitry
12.04.2017
09:23:36
давным давно натыкался на картинку, по которой можно определить сломаную кодировку
ни у кого нет? а то я потерял(

Oleg
12.04.2017
09:23:50
Главное чтобы за чебурашку не банили

Google

Кирилл
12.04.2017
09:24:03

Dmitry
12.04.2017
09:24:40

Кирилл
12.04.2017
09:24:54
а не... там текст вводится

Andrey
12.04.2017
09:25:36
У меня такой вопрос:
у меня некоторые сущности приходят с базы данных и я их сую в массив по индексу (ИД). то есть мне приходит
sections: [ 0-> element1, 1-> element2 и тд]
, а я затем прохожусь по этому массиву и заменяю его новым, где ключ это ид обекта. Каждый элемент это обьект, у которого есть поле id, он приходит с бэкенда. В итоге получается к примеру
sections: [ 577-> element1, 579-> element2 и тд]
Меня смущает тот факт, что массив получается с пустыми 566 ключами с 0 до 565 (со значением null).
Собственно сам вопрос: нормально ли это что в массиве есть много пустых ключей, или стоит как-нибудь переделать мой подход. Я специально заменяю этот массив индексированным для быстрого поиска элементов

Alexey
12.04.2017
09:26:34
а чем тебе обычный объект не люб?

Andrey
12.04.2017
09:26:51
как обьект с ключами?

Alexey
12.04.2017
09:26:59
{ 1488: {...}, 1489: {...} }

Andrey
12.04.2017
09:27:45
у меня бэкенд на asp.net, так что не знаю, получится ли возвратить в виде обьекта, а не массива. Ща загуглю

Alexey
12.04.2017
09:27:50
ну или вот из ES6
https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/Map

Andrey ?
12.04.2017
09:31:00

Andrey ?
12.04.2017
09:31:54

Alexey
12.04.2017
09:32:30
а если там пробел?
Привет, ми ир!

Andrey
12.04.2017
09:32:50
спасибо

Andrey ?
12.04.2017
09:33:11
Оно же попадает под маску *****

Google

Andrey ?
12.04.2017
09:33:55
Хоть "Привет,\s\s\s\s\s\s!" там

Alexey
12.04.2017
09:34:22
ну мало ли
вдруг * это именно текст
так то и пробелы прокатят

Andrey ?
12.04.2017
09:34:42
Нет, именно любой символ

Дмитрий
12.04.2017
09:53:16
Нормально, но я бы юзал Map или объект

Admin
ERROR: S client not available

Andrey
12.04.2017
09:55:53
но пока что c# ругается на меня, падла =)

Дмитрий
12.04.2017
09:57:11

Алексей
12.04.2017
10:15:03
https://jsperf.com/mask-pattern/1

Andrey ?
12.04.2017
10:17:12

Алексей
12.04.2017
10:17:28
Просто подтверждение :)
Еще одно

Andrey
12.04.2017
10:43:11
Dictionary<int, object>
спасибо, почти так и сделал. Только <string, object>. Json не сериализуется с целыми значениями, только со строками

Alexey
12.04.2017
10:44:42
Дичь какая то

Andrey ?
12.04.2017
10:45:52

Andrey
12.04.2017
10:45:57

Andrey ?
12.04.2017
10:46:15

Google

Oleg
12.04.2017
10:46:23

Дмитрий
12.04.2017
10:46:31
Еее
\0 \0 \0 ФП

Andrey
12.04.2017
10:46:52
окай, пока что не моя тема :)

code4aman
12.04.2017
10:47:02
Rambda != Ramda так-то))

Дмитрий
12.04.2017
10:47:36
Это не костыли, это декларативная запись для самых неудобных мест javascript

Andrey
12.04.2017
10:49:29
ну костыли это я образно. Кароче я понял, это для функционального программирования

Дмитрий
12.04.2017
10:49:33
Если не перегибать палку с free-point-EVERYTHING то код становится значительно проще и читабельней

Oleg
12.04.2017
10:50:03
Главное верить

Дмитрий
12.04.2017
10:50:14
Или проверить
Но можно и верить конечно
Выбор каждого

Andrey
12.04.2017
10:50:34
но яради итерации лучше вопользуюсь for..of

Nikolay
12.04.2017
10:50:36

Дмитрий
12.04.2017
10:51:06

Andrey
12.04.2017
10:51:12