Ivan
я просто такое первый раз вижу)
Юрий
ну наверное это простейшая реализация псевдоуникальности оных
Юрий
чтобы можно было в одну папку валить
Ivan
понял, классный способ
Юрий
а если коллизия и md5 совпал?
Юрий
рано или поздно к разбиению на папки дойти можно будет или нормальной библиотеке по работе с файлами)
Ivan
что мне подсказывает что это будет 1 раз на 1000)))
Юрий
В 1996 году Ганс Доббертин нашёл псевдоколлизии в MD5, используя определённые инициализирующие векторы, отличные от стандартных. Оказалось, что можно для известного сообщения построить второе, такое, что оно будет иметь такой же хеш, как и исходное. C точки зрения математики это означает: MD5(IV,L1) = MD5(IV,L2), где IV — начальное значение буфера, а L1 и L2 — различные сообщения.
Юрий
сохраняем картинку с сайта, с ее помощью генерируем файл с колиззией - затираем картинку ребенка на фотку МПХ, например
Egor
Что такое колиззии ?
Юрий
> ок гугл что такое коллизии?
https://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D0%BB%D0%BB%D0%B8%D0%B7%D0%B8%D1%8F_%D1%85%D0%B5%D1%88-%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8
Юрий
если более простым языком - это когда слово мама у тебя дает хеш 12345, а слово смерть (подобранное) - такой же 12345
Юрий
в итоге на 2 слова 1 хеш
Egor
Ivan
Допустим: пользователь загружает фото в профиль, картинка названа 1.жпг, и еще 100 пользователей называют картинку так же, как быть? по каждому пользователю создавать папку с его ID?
Юрий
омг.
Ivan
просить пользователя переименовать файл не катит
Egor
Anonymous
Проще уж добавить какую-нибудь хэшсумму, например имя пользователя
Ivan
вопрос конечно глупый, но мне как новечку капец как интересно стало)
Юрий
снимай хеш - тот же md5. на первые 2 символа папку называй - ea/ например, на вторые два - вложенную в нее, на третий что-то обратное от id юзера или как-то еще - в итоге у тебя путь будет условно ea/ab/05/image.jpg
Юрий
и так ты можешь хранить изображения с нормальными именами, у которых хешем будет папка или типа того
Ivan
к имени картинки + хэш из имени юзера = равно тот же мд
Ivan
как быть?
Юрий
https://habrastorage.org/files/1bb/090/f80/1bb090f80ff449f7a54642de134b4167.png
Anonymous
Юрий
на ссылку внимательно посмотри
Ivan
Ivan
вижу
Юрий
вообще это банальная математика, щас один говнокод нарою
Юрий
например вот так рутрекер хранит аттачи
Юрий
function get_path_from_id ($id, $ext_id, $base_path, $first_div, $sec_div)
{
global $bb_cfg;
$ext = isset($bb_cfg['file_id_ext'][$ext_id]) ? $bb_cfg['file_id_ext'][$ext_id] : '';
return ($base_path ? "$base_path/" : '') . floor($id/$first_div) .'/'. ($id % $sec_div) .'/'. $id . ($ext ? ".$ext" : '');
}
Юрий
у них их много, поэтому папка там тоже со сложным путем
Юрий
function get_attach_path ($id)
{
global $bb_cfg;
return get_path_from_id($id, '', $bb_cfg['attach']['upload_path'], 1000000, 100);
}
Ivan
Сохранюка я себе этот код) Спасибо за подробное обьяснение!
Юрий
ну ради интереса сохранить можно, но в целом у рутрекера нет ничего "вдохновляющего" на самом деле. хождение по грани дурновкусия в php в угоду производительности)
Ivan
😂
who are you
а почему картинку нельзя именовать в айди документа в котором используется эта картинка ? ведь айди всегда уникален и не сможет быть повторный, нахрена этот md5 и прочие хитрые алгоритмы
who are you
айди статьи - 5 значит а картинка с именем 5.jpg будет
Anonymous
а в статье больше картинок )))
who are you
так и в папку полезешь и будет наглядно
who are you
если много картинок то можно название картинок по типу 5-01.jpg где 5 это айди статьи а 01 - номер картинки
who are you
можно скриптом отдавать
who are you
и ограничить )
who are you
да смысл ?
Юрий
ага. и лишиться индексации в гугле
who are you
качай, их для того и выкладывают чтобы картинки качали и смотрели
Юрий
вместо нормального хранения - закостылим, збс)
who are you
индексации лишится ? да по мне вообще круто если по картинкам никто не будет находить мой сайт
who are you
ибо лишний трафик
Юрий
лол
Юрий
есть целая категория сеошников которые утверждают что поиск по изображениям приносить может трафика в разы больше чем обычный. их еще дико бомбило когда гугл сделал полноэкранную выдачу картинок.
who are you
ну если у тебя порнуха
who are you
то да
Юрий
давно порнуху по картинкам ищут?
who are you
всегда искали
Юрий
интересное обобщение.
Юрий
с учетом что у гугла тензор в поиске натренирован с обычными картинками вроде предметов с икеи, а на любые картинки людей зачастую выдает (крайне редко актеров) - "людей", то как-то сомнительно что искали именно ее так
who are you
ну конечно
who are you
я как всегда не прав
who are you
вы одни всегда правы
who are you
😄
who are you
я не спорю
Юрий
забавно что я не писал что ты не прав, а просто сказал что не надо обобщать свои кейсы использования поиска по картинкам на всех.
who are you
я сказал как я делаю
who are you
не нравится делайте по своему
who are you
никого не заставляю
who are you
не принуждаю повторять
Юрий
да вроде тут обсуждения и можно описать плюсы и минусы всех подходов
Ivan
Да нужно не спорить, а найти оптимально решение)
who are you
считаете свой метод верным - ради бога я только за ))
who are you
я не хочу спорить
Юрий
хранение картинок по id статей - это простите из книжки php для чайников
who are you
я чайник потому что
who are you
ник мой видишь какой
Юрий
потому что есть две картинки, есть перебор картинок, есть лишний трафик, есть проблемы на ренейме и кеше, и в итоге все обычно приходят к хеш-функциям
who are you
как у чайников )))
who are you
мне никогда картинок жалко небыло
who are you
переберут и хер с ними