Comments 8
вы все равно легко сможете вспомнить, какое розовое животное упоминалось в этом посте
Розовый... эээ... фламинго? Светке Ковалевой?
И правда, запомнил! 🙄
Ну это потому что Марго Робби не позвонила. Если бы мне позвонила, я бы запомнил и какая песня играла в это время фоном, и в каких носках я был и что на завтрак ел в тот день.
(не туда)
То есть изобрели имена файлов, только не уникальные и без возможности их задавать вручную.
Если очень хочется, то можно это и так рассматривать. Согласитесь, это гораздо более удобные "имена файлов", чем дают нам обычные машинные хеши: cfa879b9bb27b7a9638f3226d528b8371d84f6430877f311bc53bbb423ebfd5e
(или junk jar guitar).
Но все-таки хеши нужны не для именования файлов (файл - это контейнер для данных), а для именивания содержимого файла. Меняете содержимое (хоть чуть-чуть) меняется и хеш.
Ну и не только файлы. Например, операции с Amazon Glacier дают id'шники вроде 4YnvIGexpboL61Udlzwg4ao2n4ZWWeztXPtUrh4UmTecSSxN7G3YFxw_fptPWp6BLCB1IpObL7wkazFZgX8bmtbE_R-g
и чтобы работать с этим, нам нужно этот id запоминать, сопоставлять с другими id (это тот же или другой?), перепечатывать его чтобы, например, завершить эту операцию. А вот boring patient again
запомнить и перепечатать проще и даже по телефону передать голосом. Я потрачу, наверное, 5 секунд на то чтобы напечатать pinkhash из памяти и пару минут (и без ошибок), чтобы напечатать полный id (и то, придется постоянно на него смотреть, и шанс опечатки будет 50/50).
В человеческой голове значение хеша ужмется до "8f" ну или (в лучшем случае) до 8f-две-семерки
Вероятность коллизии в этом мнемоническом хеше немного выше, но для целей указания на один из пяти запущенных контейнеров - этого все равно более чем достаточно
Так в случае 5 контейнеров и "8f"(коллизия 1к256) вполне себе хватает, а если ещё две семёрки добавить, то вообще шанс при таком масштабе около нулевой.
Да и розовый_слон работает ровно до тех пор, пока не появится ещё романтичный_пингвин, шутливый_киборг, смелый_дельфин и ещё сколько-то похожих - к следующему дню они с такой же вероятностью как куски хешей по итогу забудутся/перемешаются и уже будет не вспомнить так сразу, то ли нужная штука бегала в романтичном слоне, то ли в слепом киборге.
Все таки, шанс коллизии 1 к 256 довольно высок, особенно с учетом парадокса дней рождений (чтоб не считать, прямо на ДРах, там 365 комбинаций (шанс коллизии еще ниже). И всего на 23 человеках шанс коллизии уже больше 50%). По словарям из пинкхеша, количество комбинаций от 1 до 10 млрд (в запоминаемом варианте. Теоретически можно вообще довести просто до 64 бит, просто тогда слов будет много и возникнет та же проблема, как и с хешами).
К следующему дню, при условии, что мы работаем со множеством хешей - да, наверняка все равно забудутся-перепутаются (наша способность забывать-путать пересилит их мнемоническую запоминаемость). У меня основная боль с хешами была в том, чтобы какую-то 15-20минутную задачу выполнить в условиях реальной жизни, с отвлекающими факторами. И вот на живом примере с докером я видел, что запутаться в дюжине контейнеров, работая с ними через хекс-хеши - очень просто. А вот образные имена, которые там используются - очень сильно помогают.
И это не абсолютное решение (и не претендует на то чтобы быть таким). Просто 10 млрд комбинаций - лучше чем 256. А розовый слон и смелый дельфин тоже забудутся, да, но забудутся через два часа, а не через 2 минуты.
Мнемоника потому и работает, что наш мозг "не симметричен", ему есть разница, что запоминать. Одни вещи он держит в уме легко, а другие сложнее. Даже "человек дождя" который короткий md5 хеш может целиком запомнить - запоминает его потому, что у него 0xf5 - ассоциируется с персиком, 0x82 с плохим настроением мамы а 0x4d - напоминает день, когда ему игрушечную лодку подарили.
PinkHash: Незабываемые розовые хеши