а смысла проверять в Opera - нет
const combinations = (
str,
{
charset = 'abcdefghijklmnopqrstuvwxyz',
placeholder = '&',
} = {}
) =>
str.includes(placeholder)
? [].concat(...Array.from(
charset,
n => combinations(str.replace(placeholder, n), { charset, placeholder })
))
: [ str ];
console.log(combinations('ih&v&'));
function combinations(
[...str],
{
charset = Array.from({ length: 26 }, (_, i) => String.fromCharCode(i + 97)),
placeholder = '&',
} = {}
) {
const numReplacements = str.filter(n => n === placeholder).length;
return Array.from(
{ length: charset.length ** numReplacements },
(_, i) => {
let j = numReplacements;
return str
.map(n => n === placeholder
? charset[(i / (charset.length ** --j) | 0) % charset.length]
: n)
.join('');
}
);
}
console.log(combinations('#**', { charset: '0123456789ABCDEF', placeholder: '*' }));
Какие недостатки имеет такой способ перед обычным логин/пароль?
И можно ли не опасаясь вводить его в приложение?
{Object.keys(anyIcons).map(type => (
<Category>
<CategoryType>
{type === 'people' && 'PEOPLE'}
{type === 'nature' && 'ANIMALS & NATURE'}
</CategoryType>
{anyIcons[type].map(icon => (
<RedactorEmojiItem data={icon.code}>{icon.title}</RedactorEmojiItem>
))}
</Category>
))}
/**
* @param {string[]} items
* @param {string} element
* @return {string}
*/
function getItem(items, element) {
return items[items.indexOf(element) + 1] || items[0];
}
onmousedown
, то вам еще нужно и о других позаботиться, ontouchstart
, и прочих. Клик более универсален в этом плане, к тому же, не каждый пользователь кликает на ссылку с желанием по ней перейти. Возможно, он промахнулся, а может хочет ее перетянуть. Не пытайтесь оптимизировать то, что не требует оптимизации, разница между onmousedown
и onclick
, если пользователь желает перейти по ссылке настолько незначительна, что ее никто не заметит.onmousedown
. К примеру, для реализации долгого клика мышью, который бы открывал ваше контекстное меню. Вот именно для таких случаев это событие и существует. Почему хранение пароля в базе данных, в его первозданном виде, считается небезопасным?Потому что тогда пароль не может узнать никто, кроме владельца аккаунта. Согласитесь, что так и должно быть?
Правильно ли я понимаю, что хэширование пароля помогает только в том случае, если базу данных взломают?А ещё в случае с недобросовесным разработчиком, администратором, забагованным кодом, забытым в публичном доступе бэкапом, скриншотом таблицы выложенным на Тостер и так далее. Одна sql-инъкция - и вы отец, как говорится.