Чат-боты — это не только назойливые всплывающие окошки или нулевая линия поддержки.
Это еще и мини-приложения, которые не нужно устанавливать. Например @egrul_bot — автоматизирует проверку контрагентов.
Мы используем чат-ботов, например, как мини-админки, или системы уведомлений.
Еще можно как упрощенные формы для сбора обратной связи использовать. Или как приложения для анализа и ревизии товарных остатков в магазинах (делали таких ботов).
Выделение текста сбрасывается, если в Сафари выделять текст комментария или его часть (например чтобы скопировать). Фокус перебрасывается на заголовок комментария, выделение теряется.
Т. е. выделить текст теперь можно, только если начать «тащить» за пределами блока с текстом комментария.
В конце марта 2021 года «Ростелеком» предложил защитить биометрию россиян с помощью криптографического модуля, который будет шифровать канал связи, чтобы мошенники не могли перехватить биометрические данные.
Вот этот момент совсем не понятен, значит ли это, что сейчас данные из банков в ЕБС ходят по сети в открытом виде, даже без TLS?
Ну так вы и привели код который не будет работать.
setTimeout(myClass.sayHi.call(myClass), 0);
Вы пытаетесь undefined передать как обработчик для setTimeout.
Метод sayHi объекта myClass вызывается сразу, а потом его результат вы зачем-то передаете в setTimeout как колбэк.
Попробуйте поставить таймаут на 1000 миллисекунд, и поймете о чем я говорю.
Да, вы правы. bind, конечно создает новую функцию с зафиксированным контекстом, но он скорее всего будет быстрей, потому что во внутренностях движка есть возможность сослаться на уже существующую в прототипе функцию.
Даже решил немного измерить в попугаях. В Хроме и Файрфоксе bind победил. В Сафари, на удивление, победил вариант со свойствами-стрелками.
Для Ноды тоже написал небольшой тест. Там bind победил вообще с огромным разрывом по скорости и чуть лучшим расходом памяти.
И опять вы правы, значение перетрется.
Но в случае с bind вместо стрелок мы все еще можем получить в наследнике исходный метод через super, а со стрелками не можем, вместо этого словим исключение TypeError: (intermediate value).какаяТоФункция is not a function
Псевдопример с обращением к super
class A {
constructor() {
this.hi = this.hi.bind(this);
}
hi() {
console.log('A');
}
}
class B extends A {
constructor() {
super();
super.hi();
this.hi();
}
hi() {
console.log('B');
}
}
class C {
hi = () => {
console.log('C');
}
}
class D extends C {
constructor() {
super();
super.hi();
this.hi();
}
hi() {
console.log('D');
}
}
new B();
new D();
Постоянно сталкиваюсь, что кто-то использует => вместо bind.
Это прямо как болячка какая-то. И одно дело если экземпляров класса будет 1–10, а другое когда их сильно больше.
prototype довольно удобно до сих пор использовать в фабриках классов и миксинах.
Когда перенаследоваться по какой-то причине нельзя, а логику общую нужно вынести, можно «обогатить» прототипы родственных классов общими методами, или строить конструкторы на лету все еще бывает полезно.
Добавлю еще, что проверка по `instanceof` не всегда будет `true` для объектов.
Мы всегда можем создать объект без прототипа через Object.create. Так как у такого объекта не будет прототипа Object, то и логично, что instanceof не найдет его там.
const a = Object.create(null);
console.log(a instanceof Object) // false
const b = {};
console.log(b instanceof Object) // true
Спасибо за перевод! Возможно пришло время создания платного пакетного репозитория с ручной проверкой пакетов, вроде AppStore, и более высоким уровнем доверия. Остается надеяться, что на его страницах оплаты или авторизации не будет сидеть ничего подобного из статьи =)
Чат-боты — это не только назойливые всплывающие окошки или нулевая линия поддержки.
Это еще и мини-приложения, которые не нужно устанавливать. Например @egrul_bot — автоматизирует проверку контрагентов.
Мы используем чат-ботов, например, как мини-админки, или системы уведомлений.
Еще можно как упрощенные формы для сбора обратной связи использовать. Или как приложения для анализа и ревизии товарных остатков в магазинах (делали таких ботов).
Ботмама поддерживает и английский язык. И интегрируется не только с популярными на территории СНГ и РФ мессенджерами.
Есть интеграция и с Телеграмом, и с Ватсапом, и с Фэйсбук Мессенджером, и с Вайбером.
Выделение текста сбрасывается, если в Сафари выделять текст комментария или его часть (например чтобы скопировать). Фокус перебрасывается на заголовок комментария, выделение теряется.
Т. е. выделить текст теперь можно, только если начать «тащить» за пределами блока с текстом комментария.
Вот этот момент совсем не понятен, значит ли это, что сейчас данные из банков в ЕБС ходят по сети в открытом виде, даже без TLS?
Ну так вы и привели код который не будет работать.
Вы пытаетесь
undefinedпередать как обработчик дляsetTimeout.Метод
sayHiобъектаmyClassвызывается сразу, а потом его результат вы зачем-то передаете вsetTimeoutкак колбэк.Попробуйте поставить таймаут на
1000миллисекунд, и поймете о чем я говорю.Так у вас не получится пробросить метод в обработчик.
Да, вы правы.
bind, конечно создает новую функцию с зафиксированным контекстом, но он скорее всего будет быстрей, потому что во внутренностях движка есть возможность сослаться на уже существующую в прототипе функцию.Даже решил немного измерить в попугаях. В Хроме и Файрфоксе
bindпобедил. В Сафари, на удивление, победил вариант со свойствами-стрелками.Для Ноды тоже написал небольшой тест. Там
bindпобедил вообще с огромным разрывом по скорости и чуть лучшим расходом памяти.И опять вы правы, значение перетрется.
Но в случае с
bindвместо стрелок мы все еще можем получить в наследнике исходный метод черезsuper, а со стрелками не можем, вместо этого словим исключениеTypeError: (intermediate value).какаяТоФункция is not a functionПостоянно сталкиваюсь, что кто-то использует
=>вместоbind.Это прямо как болячка какая-то. И одно дело если экземпляров класса будет 1–10, а другое когда их сильно больше.
С
dialogмогут быть проблемы. Он не поддерживается Safari, а значит для iOS и десктопа его придется полифилить.Я не безопасник, но уникальную соль можно получить из того что имеем.
В паспорте помимо номера есть и другие данные.
Солью может быть
sha256(Последняя буква имени + Последняя буква фамилии)Тогда итоговый хеш будет таким:
sha256(Номер паспорта + sha256(Последняя буква имени + Последняя буква фамилии))Но я думаю самым разумным решением было бы не хранить эти данные дольше чем нужно (как и любые другие данные)
UPD: Уникальную в том смысле, что не общую соль для всех.
Кажется это был Pro XDR Display, а не новый iMac
prototypeдовольно удобно до сих пор использовать в фабриках классов и миксинах.Когда перенаследоваться по какой-то причине нельзя, а логику общую нужно вынести, можно «обогатить» прототипы родственных классов общими методами, или строить конструкторы на лету все еще бывает полезно.
Мы всегда можем создать объект без прототипа через Object.create. Так как у такого объекта не будет прототипа Object, то и логично, что instanceof не найдет его там.