Pull to refresh
110
0
Александр Мышов @Myshov

Because it's there

Send message
Спасибо за замечание. Написал более корректно
Насчёт слово «хитро» – это просто я так перевёл фразу «in a clever way» ¯\_(ツ)_/¯

Я такие статьи воспринимаю как научно-популярные документальные фильмы, они тоже очень важны, даже если в них есть много упрощений. Именно поэтому я взялся переводить этот тред. Вот тут еще комментировал по этой теме habr.com/ru/post/443050/#comment_19886806
Процесс обмена ключами выходит за рамки объяснения алгоритмов симметричного шифрования. Поэтому, видимо, автор не стал про них рассказывать. Алгоритмы обмена ключами используют асимметричное шифрование.
> Ну и как Вам — простой язык?
> А теперь то же самое действительно простым языком:
> «Если биты A и B — разные, то A^B=1. Если же одинаковые, то A^B=0.»

Для меня лично и ваш вариант понятен, и вариант автора. Но из описания автора сразу становится ясно, почему эта операция носит название «исключающее или».
> Sweet32 не является атакой на конкретный алгоритм

Но при этом с помощью него был взломан 3DES, так что ссылка правильная.
> это конечно провал.

Если тут какая-то ошибка (я её не вижу), напишите об этом в твиттер автору (https://twitter.com/colmmacc/status/1101578627592839168).
> Что правда что ли? И 3des?! (Double des)

Да, вот тут можно почитать подробнее sweet32.info

> И вообще попытка рассказать все на уровне «детского сада» как то вызывает раздражение.

Я думаю, что это, наоборт, преимущество. Человек простым языком объяснил сложные вещи. Такие статьи вдохновляют на изучение чего-то нового.
Ок, интересная мысль
Имхо это тоже самое, только в профиль. Если возвращать промис, то в вашем случае пользователь библиотеки должен соответствующим образом его обработать.

modules.require(['asyncModule'], function(asyncModule) {
    asyncModule.then(response => doSomething(response));
});


При этом пользователь становится привязан к промису, т.е. если интерфейс библиотеки в будущем вновь станет возвращать объект, это вызовет ошибку.
Почему не надо?

В первом случае модуль возвращает объект:
return {
     theTrue: true,
};


Во втором — зарезолвленный промис:
return Promise.resolve({
     theTrue: true,
});


В последнем случае пользователю библиотеки надо будет добавить
.then(yourFunction)
Согласен, это довольно распространенная практика — возвращать из асинхронных модулей промисы. Но если у вас есть обычный модуль (без асинхронной работы) и вы используете его в большом количестве мест, при этом у вас также появляются другие пользователя этого модуля. То, когда происходит изменение интерфейса (в данном примере обычный модуль начинает возвращать промис), вам надо будет исправить все места, где используется этот модуль и каким-то образом оповестить других пользователей этого модуля об изменившемся интерфейсе, что в комплексе получается не очень удобно.
Да, это уточнение надо добавить в статью
Да, конечно, у меня пример написан с использованием именно первой версии, не стал просто повторяться.
При написании статьи, я долго пытался найти загрузчик, использующий этот подход, но увы — не нашел.
Нашел подходящий user-script https://greasyfork.org/en/scripts/18675-github-custom-hotkeys. Там нет возможности отключить все хоткеи разом, но зато есть возможность переназначить горячие клавиши в том числе и полностью их отключить, для этого в поле «url» надо поставить символ решетки — #.
Спасибо за информацию! Добавлю это уточнение в статью.
Да, точно. Кстати, год назад на хабре был про LFS пост — https://habrahabr.ru/post/255413/.
Всегда пожалуйста!
Да, у гитхаба, есть много разных фишек. Он может рендерить прямо в своем интерфейсе разные типы файлов (3d-модели, pdf, csv). Кстати, информации про .ipynb в помощи github нет. Видимо, это довольно свежая фича.

Information

Rating
Does not participate
Location
Новосибирск, Новосибирская обл., Россия
Works in
Date of birth
Registered
Activity