Дима
А вообще, не вижу проблемы
А ВОТ ТЕПЕРЬ ПАБЛИК
а как?
А ВОТ ТЕПЕРЬ ПАБЛИК
Дима
Ну перегоняешь из буфера в int
Дима
Это же просто массив чисел
А ВОТ ТЕПЕРЬ ПАБЛИК
var bufInt = (buf.readUInt32BE(0) << 8) + buf.readUInt32BE(4);
?
А ВОТ ТЕПЕРЬ ПАБЛИК
подобно такому?
Дима
Типа того, да
Vasiliy
npm i -S cuid
Andrey
Привет. Я тут решил к редуксу добавить логгирование, подключил redux-logger через applyMiddleware. Без него все диспатчи проходят, а вот с ним не происходит ничего. В чем может быть проблема? спасибо
Дима
Применил как-то не правильно видать, просто смотри как другие делали)
А вообще тут можно и у самого автора спросить 😸
Andrey
ну если ответит, буду рад)
Andrey
import { applyMiddleware, createStore } from 'redux';
import logger from 'redux-logger';
import reducer from './reducers';
const middleware = applyMiddleware(logger);
export default createStore(reducer, middleware);
Kirill
createStore 2-й параметр это preloadedState
Andrey
это обязательно так? я просто засунул все в редусеры как дефолтное значение state и при инициализации возвращаю его (срабатывает default в switch)
Igor
createLogger делать сейчас не нужно ?
Andrey
после версии 3 логгер по дефолту возвращается с настройками по умолчанию
Andrey
экспортится я имею в виду
Andrey
кароче так и не разобрался где ошибка, скачал redux dev tools
Andrey 😼
Как лучше всего решить следующую задачу?
Дана маска: Hello, *****
Звездочка - ровно один любой символ
Дан массив строк:
Hello, Abcde
Hello, World
Hello, me
Подходят под маску, соответственно, все кроме последнего. Как проверить соответствие маске кроме как проходя циклом?
Smooth Operator
\w
Kirill
w/
Serhii
Hello, \w{5}
Smooth Operator
Hello,\s\w+
Andrey 😼
А теперь подвох
Andrey 😼
Маска должна быть изменяемой
Andrey 😼
Именно в таком формате
Andrey 😼
Любая строка, звездочки, любая строка и так далее
Andrey 😼
Регуляркой-то я знаю как это сматчить)
Smooth Operator
new RegExp
Andrey 😼
Это должно редактироваться через интерфейс и быть понятным любому идиоту
Andrey 😼
Повторюсь, именно в формате "звездочка - любой символ"
Smooth Operator
В чем проблема у тебя
Andrey 😼
В том как это сделать максимально эффективно, не используя регэкспы
Kirill
почему такая ненависть к регуляркам
Kirill
любой символ - [\s\S]
Kirill
заменяешь звездочи на это
Andrey 😼
Потому что как мне на-лету из формата "Привет, *****" конвертировать в регулярки?
Kirill
и в new RegExtp
Andrey 😼
При том, что там могут содержаться спецсимволы из регэкспов
Smooth Operator
Kirill
The regex expressions . and \s\S are not equivalent, since . doesn't catch line terminators (like new line) by default.
Sergo
почему не написать просто краткий ман в одну строку рядом с полем на тему: любой символ — paste/your/symbol и не создавать проблем?
Andrey 😼
Andrey 😼
И потому что там могут содержаться символы а-ля "+" или "?"
Kirill
экранируй и все
Alexey
Alexey
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 😼
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
давным давно натыкался на картинку, по которой можно определить сломаную кодировку
ни у кого нет? а то я потерял(
Oleg
Главное чтобы за чебурашку не банили
Kirill
Kirill
а не... там текст вводится
Andrey
У меня такой вопрос:
у меня некоторые сущности приходят с базы данных и я их сую в массив по индексу (ИД). то есть мне приходит
sections: [ 0-> element1, 1-> element2 и тд]
, а я затем прохожусь по этому массиву и заменяю его новым, где ключ это ид обекта. Каждый элемент это обьект, у которого есть поле id, он приходит с бэкенда. В итоге получается к примеру
sections: [ 577-> element1, 579-> element2 и тд]
Меня смущает тот факт, что массив получается с пустыми 566 ключами с 0 до 565 (со значением null).
Собственно сам вопрос: нормально ли это что в массиве есть много пустых ключей, или стоит как-нибудь переделать мой подход. Я специально заменяю этот массив индексированным для быстрого поиска элементов
Alexey
а чем тебе обычный объект не люб?
Andrey
как обьект с ключами?
Alexey
{ 1488: {...}, 1489: {...} }
Andrey
у меня бэкенд на asp.net, так что не знаю, получится ли возвратить в виде обьекта, а не массива. Ща загуглю
Alexey
ну или вот из ES6
Alexey
https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/Map
Alexey
Andrey 😼
Andrey 😼
Andrey 😼
Alexey
а если там пробел?
Alexey
Привет, ми ир!
Andrey
спасибо
Andrey 😼
Оно же попадает под маску *****
Andrey 😼
Хоть "Привет,\s\s\s\s\s\s!" там
Alexey
ну мало ли
Alexey
вдруг * это именно текст
Alexey
так то и пробелы прокатят
Andrey 😼
Нет, именно любой символ
Дима
Дима
Нормально, но я бы юзал Map или объект
Andrey
но пока что c# ругается на меня, падла =)