# Первая коллизия???
shaos(shaos, 2) — All
2024-09-22 07:05:07
Всем привет кто ещё тут!
Какое-то время назад в эхе idec.talks прилетело ко мне сообщение не в тему (причём со старой датой):
http://shaos.net:8085/IDEC-dup.png
А сегодня я обнаружил, что хэш этого сообщения упоминается в двух эхах:
idec.talks:v2gj6Qx0JJmoNlcjcJlg
lor-opennet.17:v2gj6Qx0JJmoNlcjcJlg
Получается в idec.talks пришло сообщение, которое по хэшу совпало со старым сообщением от сентября 2019 года в lor-opennet.17?
Shaos
# Re: Первая коллизия???
Andrew Lobanov(tavern,1) — shaos
2024-09-23 07:03:10
shaos> Какое-то время назад в эхе idec.talks прилетело ко мне сообщение не в тему (причём со старой датой):
shaos> А сегодня я обнаружил, что хэш этого сообщения упоминается в двух эхах:
shaos> idec.talks:v2gj6Qx0JJmoNlcjcJlg
shaos> lor-opennet.17:v2gj6Qx0JJmoNlcjcJlg
shaos> Получается в idec.talks пришло сообщение, которое по хэшу совпало со старым сообщением от сентября 2019 года в lor-opennet.17?
Дождались коллизий, похоже. Возможно, придётся менять хеш-функцию как-то. Но это потом. За 10+ лет это первый случай, вроде. Так что маловероятно, что он повторится в ближайшее время.
# Re: Первая коллизия???
shaos(shaos, 2) — Andrew Lobanov
2024-09-23 07:41:05
Наверное текущие хэши всё также ок - просто надо чтобы IDEC сервера (и наверное клиенты) были готовы к возмжным коллизиям - а то сейчас получилось, что новое сообщение пропало, а на его месте в idec.talks показывается старое сообщение из lor-opennet.17 с тем же кодом - по идее надо в idec.talks показывать новое сообщение, а запись о старом c тем же кодом в lor-opennet.17 по хорошему наверное надо бы удалить, заслав куда-то системный алерт о коллизии с подробным описанием того что куда добавилось и что откуда удалилось - вобщем как-то так...
# Re: Первая коллизия???
hugeping(ping,1) — Andrew Lobanov
2024-09-24 16:44:31
AL> Дождались коллизий, похоже. Возможно, придётся менять хеш-функцию как-то. Но это потом. За 10+ лет это первый случай, вроде. Так что маловероятно, что он повторится в ближайшее время.
AL> +++ Лично я вижу в этом перст судьбы – шли по лесу и встретили программиста.
Ох, нифига-себе!
# Re: Первая коллизия???
shaos(shaos, 2) — hugeping
2024-09-30 08:46:56
Предлагаю этот раздвоенный msgid включить всем в blacklist.txt т.к. он вызывает проблемы на разных нодах:
v2gj6Qx0JJmoNlcjcJlg
# Re: Первая коллизия???
Andrew Lobanov(tavern,1) — shaos
2024-09-30 08:55:36
shaos> Предлагаю этот раздвоенный msgid включить всем в blacklist.txt т.к. он вызывает проблемы на разных нодах:
shaos> v2gj6Qx0JJmoNlcjcJlg
Можно, конечно.
shaos> P.S. Также обнаружил у себя в списках несколько старых сообщений у которых длина хеша была 19 символов вместо 20 - все удалил т.к. один из узлов продолжал их у меня спрашивать (вместе с вышеупомянутым раздвоенным)...
И это неправильно. Длина хеша может быть потенциально любой.
# Re: Первая коллизия???
shaos(shaos, 2) — shaos
2024-09-30 08:55:13
Список коротких хэшей:
3rkSne5R2FI1QXrlJkF
bi36U9W4Zu86wagsE8X
Hi7AzJtfBZKKb96awMP
SZ7KQTwMhch9gSIJ1Q3
APcbWI1obBZ3nr5uZgt
8BqXV3KGYEqIwnPaKsB
MmBCteS6yMnC2LZLbRC
JDKVlOwszVbKpMvjwN8
# Re: Первая коллизия???
shaos(shaos, 2) — Andrew Lobanov
2024-09-30 12:16:10
> И это неправильно. Длина хеша может быть потенциально любой.
Ну тогда тебе надо поглядеть в свой код т.к. именно твой узел продолжал у меня их спрашивать каждые 10 минут :)
62.109.31.95 - - [29/Sep/2024:23:30:08 -0700] "GET /ii-point.php?q=/u/m/3rkSne5R2FI1QXrlJkF/bi36U9W4Zu86wagsE8X/Hi7AzJtfBZKKb96awMP/v2gj6Qx0JJmoNlcjcJlg/SZ7KQTwMhch9gSIJ1Q3/APcbWI1obBZ3nr5uZgt/8BqXV3KGYEqIwnPaKsB/MmBCteS6yMnC2LZLbRC/JDKVlOwszVbKpMvjwN8 HTTP/1.1" 200 10517 "-" "Python-urllib/3.11"
62.109.31.95 - - [29/Sep/2024:23:40:09 -0700] "GET /ii-point.php?q=/u/m/3rkSne5R2FI1QXrlJkF/bi36U9W4Zu86wagsE8X/Hi7AzJtfBZKKb96awMP/v2gj6Qx0JJmoNlcjcJlg/SZ7KQTwMhch9gSIJ1Q3/APcbWI1obBZ3nr5uZgt/8BqXV3KGYEqIwnPaKsB/MmBCteS6yMnC2LZLbRC/JDKVlOwszVbKpMvjwN8 HTTP/1.1" 200 10517 "-" "Python-urllib/3.11"
62.109.31.95 - - [29/Sep/2024:23:50:08 -0700] "GET /ii-point.php?q=/u/m/3rkSne5R2FI1QXrlJkF/bi36U9W4Zu86wagsE8X/Hi7AzJtfBZKKb96awMP/v2gj6Qx0JJmoNlcjcJlg/SZ7KQTwMhch9gSIJ1Q3/APcbWI1obBZ3nr5uZgt/8BqXV3KGYEqIwnPaKsB/MmBCteS6yMnC2LZLbRC/JDKVlOwszVbKpMvjwN8 HTTP/1.1" 200 10517 "-" "Python-urllib/3.11"
и ii-php честно их каждый раз отдавал...
# Re: Первая коллизия???
shaos(shaos, 2) — shaos
2024-09-30 12:24:59
Ну вот же :)
def debundle(bundle):
for msg in bundle:
if msg:
m = msg.split(":")
msgid = m[0]
if len(msgid) == 20 and m[1]:
msg = base64.b64decode(m[1].encode("ascii")).decode("utf8").split("\n")
c.execute("INSERT INTO msg (msgid, tags, echoarea, time, fr, addr, t, subject, body) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?);", (msgid, msg[0], msg[1], msg[2], msg[3], msg[4], msg[5], msg[6], "\n".join(msg[8:])))
con.commit()
в iing стоит проверка на равенство длины числу 20 :)
# Re: Первая коллизия???
hugeping(ping,1) — shaos
2024-09-30 19:22:08
shaos> Предлагаю этот раздвоенный msgid включить всем в blacklist.txt т.к. он вызывает проблемы на разных нодах:
shaos> v2gj6Qx0JJmoNlcjcJlg
Гм, у меня нет такого сообщения в базах... Наверное я не фетчу эти эхи.
# Re: Первая коллизия???
hugeping(ping,1) — shaos
2024-09-30 19:24:57
shaos> Ну вот же :)
shaos> ====
shaos> if len(msgid) == 20 and m[1]:
shaos> ====
shaos> в iing стоит проверка на равенство длины числу 20 :)
У меня тоже судя по коду стоит проверка на 20. Это точно не в стандарте?
# Re: Первая коллизия???
shaos(shaos, 2) — hugeping
2024-09-30 19:54:33
Наверное если только одна эха есть из этих двух то ок:
idec.talks:v2gj6Qx0JJmoNlcjcJlg
lor-opennet.17:v2gj6Qx0JJmoNlcjcJlg
# Re: Первая коллизия???
hugeping(ping,1) — shaos
2024-09-30 21:19:52
shaos> Наверное если только одна эха есть из этих двух то ок:
shaos> idec.talks:v2gj6Qx0JJmoNlcjcJlg
idec.talks у меня есть, но сообщения этого нет. Это странно. Может всё-таки у кого-то сбойнуло что-то? Проверяли по коду - хеш действительно совпадает если его перерассчитать?
# Re: Первая коллизия???
shaos(shaos, 2) — hugeping
2024-09-30 22:40:12
Я не вижу нового сообщения - ii-php показывает в idec.talks старую новость из lor-opennet, а таверна глючит в lor-opennet застряв на том сообщении, но перезапомнив дату как будто оно самое новое и при попытке перемотать ленту до конца оно снова перескакивает на него
# Re: Первая коллизия???
Andrew Lobanov(tavern,1) — shaos
2024-10-01 06:46:16
shaos> Я не вижу нового сообщения - ii-php показывает в idec.talks старую новость из lor-opennet, а таверна глючит в lor-opennet застряв на том сообщении, но перезапомнив дату как будто оно самое новое и при попытке перемотать ленту до конца оно снова перескакивает на него
Откуда вообще столько шума из-за мёртвой эхи? Актуальная это
ii://lor.opennet же.
# Re: Первая коллизия???
shaos(shaos, 2) — Andrew Lobanov
2024-10-01 07:07:32
Ну архив тоже типа эха - или когда создали новую, то старую удалили и забыли? ;)
Я вот поиск хочу нагородить по всем эхам, что у меня есть - включая архивные :)
# Re: Первая коллизия???
Andrew Lobanov(tavern,1) — shaos
2024-10-01 08:54:47
shaos> Ну архив тоже типа эха - или когда создали новую, то старую удалили и забыли? ;)
Я просто не могу себе представить пользу от архива новостей ЛОРа и опеннета. Оно полезно в моменте.
shaos> Я вот поиск хочу нагородить по всем эхам, что у меня есть - включая архивные :)
Бывает :)
# Re: Первая коллизия???
shaos(shaos, 2) — Andrew Lobanov
2024-10-01 09:23:03
> Я просто не могу себе представить пользу от архива новостей ЛОРа и опеннета. Оно полезно в моменте.
Ну вот сидит человек скажем за Спринтером или за ZX-спектрумом и через сетевушку читает ii/IDEC эхи - захотел окнутуся так сказать в историю ну или поиск организовал по ключевому слову - скажем Knoppix и смотрит чего там когда оно упоминалось - круто же? ;)
# Re: Первая коллизия???
shaos(spnet, 2) — hugeping
2024-10-06 08:56:55
> У меня тоже судя по коду стоит проверка на 20. Это точно не в стандарте?
интересно, что как минимум 7 из проблемных 8 сообщений (у которых длина хэша 19 вместо 20) были созданы с помощью idec.el/0.1 пользователем Difrex (dynamic,1):
и хэши там совсем неправильно посчитаны были т.к. реальные хеши ничего общего с названиями этих сообщений не имеют:
SZ7KQTwMhch9gSIJ1Q3
--> vY11CNkWXWstRfHyD8EQ
APcbWI1obBZ3nr5uZgt
--> BDZIZkGNsacszWnRTEDA
8BqXV3KGYEqIwnPaKsB
--> 9Fz0f71LTxinLyAA26jc
MmBCteS6yMnC2LZLbRC
--> aDDfVncYTkdhSITwY2VB
JDKVlOwszVbKpMvjwN8
--> aagoTsW9vjv61Hsb0UBO
3rkSne5R2FI1QXrlJkF
--> R7mIPIRysuoKAchosrZX
bi36U9W4Zu86wagsE8X
--> H3E9knwnOOTSwBmwaLF7
Hi7AzJtfBZKKb96awMP
--> GPIigM4r30CcSK8tjRzd
По идее можно вернуть эти сообщения в оборот просто добавив 0 в конце ихних хэшей и поправив несколько других сообщений, которые на них ссылаются:
vHtkzHXiAYL0a7zSFS0P:> Так и не понял чем тебе мой вариант не подошёл, который я тут показывал ii://APcbWI1obBZ3nr5uZgt :)
vu94FtaImMH7E9AlDg8d:Так и не понял чем тебе мой вариант не подошёл, который я тут показывал ii://APcbWI1obBZ3nr5uZgt :)
TKcKYfkzLXg3YU3iMQrS:ii/ok/repto/8BqXV3KGYEqIwnPaKsB
sBF0YZDFAAJY9ZXGeTvw:Вот https://dynamic.lessmore.pw/msg/MmBCteS6yMnC2LZLbRC
nXdcHnk0Y4UunGNNUIwi:ii/ok/repto/3rkSne5R2FI1QXrlJkF
z8W283Fkra8J96OrKQCC:ii/ok/repto/bi36U9W4Zu86wagsE8X
# Re: Первая коллизия???
Andrew Lobanov(tavern,1) — shaos
2024-10-08 05:35:53
>> У меня тоже судя по коду стоит проверка на 20. Это точно не в стандарте?
shaos> интересно, что как минимум 7 из проблемных 8 сообщений (у которых длина хэша 19 вместо 20) были созданы с помощью idec.el/0.1 пользователем Difrex (dynamic,1):
Проблема была не в idec.el, а в dynamic. Хеши считает нода, а не клиент.
shaos> и хэши там совсем неправильно посчитаны были т.к. реальные хеши ничего общего с названиями этих сообщений не имеют:
Реальные хеши это придуманное что-то. Они могут быть какие угодно, лишь бы не было коллизий.
# Re: Первая коллизия???
shaos(spnet, 2) — Andrew Lobanov
2024-10-08 07:41:25
> Реальные хеши это придуманное что-то. Они могут быть какие угодно, лишь бы не было коллизий.
Ну ваш "стандарт" описывает вполне конкретно как msgid должен формироваться :)
Разве что чётко не прописано, что заменять надо на A (большую) и z (маленькую) ;)
# Re: Первая коллизия???
iiii(ping,48) — shaos
2024-10-09 04:24:55
Это невозможно практически. Хеши точно по сообщениям одинаковые? Я больше склоняюсь к глюку софта, генерирующего хэш. На таком малом количестве сообщений это невозможно.
# Re: Первая коллизия???
iiii(ping,48) — shaos
2024-10-09 04:26:11
Я раз в несколько месяцев/лет перечитываю архив новостей и их комментов с лора 90-х / 00-х. Круто, что там это можно удобно делать.
# Re: Первая коллизия???
shaos(spnet, 2) — iiii
2024-10-09 04:48:01
Так то теоретически возможно, но вероятность сего должна быть пренебрежима мала (но тем не менее она не нулевая)
# Re: Первая коллизия???
iiii(ping,48) — shaos
2024-10-09 05:25:56
> Так то теоретически возможно, но вероятность сего должна быть пренебрежима мала (но тем не менее она не нулевая)
Блин, клиент сожрал моё сообщение и не подавился :(
Там даже первые 6 цифр на 87 сообщений никогда не совпадали. У меня были шортлинки на 6 первых символов.
# Re: Первая коллизия???
iiii(ping,48) — iiii
2024-10-09 05:28:56
> Там даже первые 6 цифр на 87 сообщений никогда не совпадали. У меня были шортлинки на 6 первых символов.
на 87 тыщ сообщений (о, в таглайне линки не рендерятся, а так?)
+ написано в ii-txt-0.9 (
ii://K3FDA6fNzoeWmcA3p41x)
# Re: Первая коллизия???
Andrew Lobanov(tavern,1) — shaos
2024-10-09 05:46:36
>> Реальные хеши это придуманное что-то. Они могут быть какие угодно, лишь бы не было коллизий.
shaos> Ну ваш "стандарт" описывает вполне конкретно как msgid должен формироваться :)
Наш стандарт весь просто условность и немного договорённостей.
# Re: Первая коллизия???
Andrew Lobanov(tavern,1) — iiii
2024-10-09 05:46:37
>> Там даже первые 6 цифр на 87 сообщений никогда не совпадали. У меня были шортлинки на 6 первых символов.
iiii> на 87 тыщ сообщений (о, в таглайне линки не рендерятся, а так?)
Так и не должны по идее, но это дело несложное.
# Re: Первая коллизия???
shaos(spnet, 2) — shaos
2024-10-09 06:04:55
Кстати в таверне чото точно сглючило - если кликнуть во второй фетч линк, то там будет вот такое:
...
pOlv1zvAI8G0xaf2fQmt
xIy7luAQzK1ClWMjlAGx
B1mM6Q6NWQ5MuY96FeL3
koYbiZY3ibMe3N87eqTD
D5EpnqqclAcoLamAaUHd
vduRDOaNtRCrndkMs5S4
pxNaNgXcsZJvD8t2fLQX
v2gj6Qx0JJmoNlcjcJlg
v2gj6Qx0JJmoNlcjcJlg
v2gj6Qx0JJmoNlcjcJlg
v2gj6Qx0JJmoNlcjcJlg
v2gj6Qx0JJmoNlcjcJlg
v2gj6Qx0JJmoNlcjcJlg
v2gj6Qx0JJmoNlcjcJlg
v2gj6Qx0JJmoNlcjcJlg
v2gj6Qx0JJmoNlcjcJlg
v2gj6Qx0JJmoNlcjcJlg
v2gj6Qx0JJmoNlcjcJlg
...
т.е. это проблемное сообщение начинает размножаться...
# Re: Первая коллизия???
hugeping(ping,1) — iiii
2024-10-09 21:52:21
Так кто-нибудь скажет, какой алгоритм использовать для хеширования? :)
У меня сейчас что-то такое. Где наш "стандарт" вообще почитать сейчас?
func MsgId(msg string) string {
h := sha256.Sum256([]byte(msg))
id := base64.StdEncoding.EncodeToString(h[:])
id = strings.Replace(id, "+", "A", -1)
id = strings.Replace(id, "/", "Z", -1)
return id[0:20]
}
# Re: Первая коллизия???
iiii(ping,48) — hugeping
2024-10-09 23:34:15
у меня точно ничё не было
а где вообще можно что-то почитать сейчас? список ббс-ок, спецификации?
# Re: Первая коллизия???
hugeping(ping,1) — shaos
2024-10-10 07:42:45
shaos> Вроде все доки тут:
shaos> https://github.com/idec-net/new-docs
Спасибо. Цитата:
> Примечание: production-реализации нод заменяют в полученной base64-строке плюс (+) и слэш (/) либо их аналоги (- и _) на буквы "A" и "Z" соответственно, дабы убрать из msgid спецсимволы.
Собственно, поэтому я так и сделал! Видимо, "стандарт" писался не очень аккуратно! Давайте зафиксируем всё-таки. Z или z? :)
# Re: Первая коллизия???
Andrew Lobanov(tavern,1) — hugeping
2024-10-10 08:48:29
shaos>> Вроде все доки тут:
shaos>> https://github.com/idec-net/new-docs
hugeping> Спасибо. Цитата:
>> Примечание: production-реализации нод заменяют в полученной base64-строке плюс (+) и слэш (/) либо их аналоги (- и _) на буквы "A" и "Z" соответственно, дабы убрать из msgid спецсимволы.
hugeping> Собственно, поэтому я так и сделал! Видимо, "стандарт" писался не очень аккуратно! Давайте зафиксируем всё-таки. Z или z? :)
Но есть ли в этом смысл, если с некоторых станций идут сообщения, у которых msgid совсем не соответствует содержимому? :)
# Re: Первая коллизия???
tuple(ping,54) — hugeping
2024-10-10 09:36:17
Кстати, про этот самый стандарт. Он выглядит сейчас не слишком презентабельно. Даже README нет в репозитории, описания концепций раскиданы по разным файлам без особой системности - выглядит как черновик.
Может форкнуть его и сделать красивым статическим сайтом на каком-нибудь hugo/jekyll?
# Re: Первая коллизия???
shaos(spnet, 2) — doesnm
2024-10-10 11:32:44
Это к Andrew Lobanov
А так там доке в маркдауне ведь - для веба их преобразовывать надо
Маркдаун проще прям на гитхабе и смотреть...
# Re: Первая коллизия???
Andrew Lobanov(tavern,1) — tuple
2024-10-10 12:25:08
tuple> Кстати, про этот самый стандарт. Он выглядит сейчас не слишком презентабельно. Даже README нет в репозитории, описания концепций раскиданы по разным файлам без особой системности - выглядит как черновик.
tuple> Может форкнуть его и сделать красивым статическим сайтом на каком-нибудь hugo/jekyll?
Может, хотя бы Markdown, а не сайт? Потом уж и MD во что угодно гнать не проблема.
# Re: Первая коллизия???
Andrew Lobanov(tavern,1) — shaos
2024-10-10 12:26:26
shaos> Это к Andrew Lobanov
Чего это?
shaos> А так там доке в маркдауне ведь - для веба их преобразовывать надо
Вызвать pandoc недолго.
shaos> Маркдаун проще прям на гитхабе и смотреть...
# Re: Первая коллизия???
doesnm(tgi,8) — shaos
2024-10-10 12:24:21
shaos> Это к Andrew Lobanov
shaos> А так там доке в маркдауне ведь - для веба их преобразовывать надо
shaos> Маркдаун проще прям на гитхабе и смотреть...
Не проблема. В том же GitHub Pages из коробки есть Jekyll
# Re: Первая коллизия???
tuple(ping,54) — doesnm
2024-10-10 12:53:41
Вот-вот, я не писал, что нужно markdown переписывать в html. Jekyll автоматом это всё конвертирует в html-страницы. Исходники лежат в репозитории в виде markdown, а сборка уже улетает на Github Pages.
# Re: Первая коллизия???
hugeping(ping,1) — Andrew Lobanov
2024-10-10 16:00:54
AL> Но есть ли в этом смысл, если с некоторых станций идут сообщения, у которых msgid совсем не соответствует содержимому? :)
В данном вопросе я рассуждаю просто. Меня интересует мой код. :) Что творят другие -- не моя зона ответственности. Если будут коллизии, я не забираю просто сообщение.
# Re: Первая коллизия???
shaos(spnet, 2) — Andrew Lobanov
2024-10-10 17:51:25
shaos> Это к Andrew Lobanov
Andrew Lobanov>Чего это?
Ну как к держателю стандарта IDEC по видимому ;)
# Re: Первая коллизия???
iiii(ping,48) — shaos
2024-10-10 23:42:08
надо сделать стандарт, выкатить новый релиз чего-нибудь, создать новость на ЛОРе. движуху нада.
# Re: Первая коллизия???
shaos(spnet, 2) — tuple
2024-10-11 00:43:48
Кстати я хочу в какой-то разумной степени поддержать Markdown в своём развитии iii-php - как минимум чтобы линки с текстом из RSS- фидов поддержать :)
Например генерить HTML-файл и сохранять рядом с raw message ;)
AJAX я уже приделал - можно лепить вместе разные HTML без перезагрузки страницы…