честно говоря ерунда какая-то.
Во-первых данный способ пытается защититься от достаточно специфических случаев: когда злоумышленник в публичном месте услышал пароль и метода перебора. Но вероятность того что он (злоумышленник) окажется в нужном месте в нужное время и поймет о каком сайте идет речь стремится к нулю. Но даже в таком случае если пароль просто менялся, то муж жене продиктует один пароль без логина (так как жена уже знает логин), что само по себе бесполезно. Если же это новая инф-ция для жены, то мужу придется опять же продиктовать и логин и пароль и кодовое слово. Т.е. профит = 0.
Дальше, как пользоваться мужу и жене одним браузером на разными аккаунтами? Как логиниться мужу после жены? Чистить куки?
Против перебора уже есть куча отработанных методов, начиная с требований к сложности пароля и заканчивая счетчиками неудачных попыток
Вряд ли здесь можно придумать что-то новое, над чем тысячи светлых умов уже думали неоднократно.
автор, а Вас не смущает, что в классе-наследнике нельзя обращаться к this до тех пор пока не проинициализируется базовый класс (с помощью super)? Вполне логично, что переменные наследников еще не будут проинициализированы.
почему сразу студенты и на коленках? Это очень эффективный и производительный способ работы со строками. Использование счетчика совместных ссылок очень положительно сказывается на производительности. Более того, в ряде случаев позволяет неплохо экономить память.
function clearString4(str) {
return (str + '\0').substr(0, str.length)
}
Не совсем понятно почему в clearString3() строка занимает в 2 раза больше памяти. По сути мы создаем новую строку с пробелом вначале. Когда делаем slice(1), то должна вернуться ссылка на созданную строку (' ' + str) со смещенным началом на 1 символ. Т.е. (' ' + str).splice(1) должен ссылаться на (' ' + str) и оверхед должен быть в 1 символ.
P.S. У меня почему-то версия c .substr() всегда чуть быстрее чем версия с .slice(). Странно почему так получается… В данном случае они должны быть идентичны.
А как мы ответим "медленно, но всем"? Допустим у нас такие условия: у нас есть 10 входящих реквестов, каждый реквест выполняет цикл длительностью 1 сек, таймаут на ответ = 9 сек. При таких условиях 1й клиент получит ответ через 1 сек, 2й — через 2 сек… 10й клиент получит таймаут. Если мы делаем одновременное выполнение всех запросов, то исполниться они должны примерно одновременно, т.е. все через 10 сек, т.е. все клиенты получат таймаут. Или разве не так?
честно говоря ерунда какая-то.
Во-первых данный способ пытается защититься от достаточно специфических случаев: когда злоумышленник в публичном месте услышал пароль и метода перебора. Но вероятность того что он (злоумышленник) окажется в нужном месте в нужное время и поймет о каком сайте идет речь стремится к нулю. Но даже в таком случае если пароль просто менялся, то муж жене продиктует один пароль без логина (так как жена уже знает логин), что само по себе бесполезно. Если же это новая инф-ция для жены, то мужу придется опять же продиктовать и логин и пароль и кодовое слово. Т.е. профит = 0.
Дальше, как пользоваться мужу и жене одним браузером на разными аккаунтами? Как логиниться мужу после жены? Чистить куки?
Против перебора уже есть куча отработанных методов, начиная с требований к сложности пароля и заканчивая счетчиками неудачных попыток
Вряд ли здесь можно придумать что-то новое, над чем тысячи светлых умов уже думали неоднократно.
автор, а Вас не смущает, что в классе-наследнике нельзя обращаться к
this
до тех пор пока не проинициализируется базовый класс (с помощьюsuper
)? Вполне логично, что переменные наследников еще не будут проинициализированы.Мне больше всего не нравится двойное равенство в JS. Сравнение с преобразованием типов это реально зло.
почему сразу студенты и на коленках? Это очень эффективный и производительный способ работы со строками. Использование счетчика совместных ссылок очень положительно сказывается на производительности. Более того, в ряде случаев позволяет неплохо экономить память.
deleted
Я предлагаю использовать такой способ:
Не совсем понятно почему в
clearString3()
строка занимает в 2 раза больше памяти. По сути мы создаем новую строку с пробелом вначале. Когда делаемslice(1)
, то должна вернуться ссылка на созданную строку(' ' + str)
со смещенным началом на 1 символ. Т.е.(' ' + str).splice(1)
должен ссылаться на(' ' + str)
и оверхед должен быть в 1 символ.P.S. У меня почему-то версия c
.substr()
всегда чуть быстрее чем версия с.slice()
. Странно почему так получается… В данном случае они должны быть идентичны.А как мы ответим "медленно, но всем"? Допустим у нас такие условия: у нас есть 10 входящих реквестов, каждый реквест выполняет цикл длительностью 1 сек, таймаут на ответ = 9 сек. При таких условиях 1й клиент получит ответ через 1 сек, 2й — через 2 сек… 10й клиент получит таймаут. Если мы делаем одновременное выполнение всех запросов, то исполниться они должны примерно одновременно, т.е. все через 10 сек, т.е. все клиенты получат таймаут. Или разве не так?