- 1
Бесконечный оффтоп имени Борманда #5
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
0
Бесконечный оффтоп имени Борманда #5
#1: https://govnokod.ru/25864 https://govnokod.xyz/_25864
#2: https://govnokod.ru/25921 https://govnokod.xyz/_25921
#3: https://govnokod.ru/26544 https://govnokod.xyz/_26544
#4: https://govnokod.ru/26838 https://govnokod.xyz/_26838
nepeKamHblu_nemyx 29.08.2021 00:52 # −1
Этот оффтоп сгенерирован автоматически.
Индекс оффтопов: https://index.gcode.space/.
Зеркала Говнокода и полезные ресурсы:
* https://govnokod.xyz/ (альтернативный Говнокод)
* https://gcode.space/ (read-only зеркало Говнокода)
* https://t.me/GovnokodBot (Говнокод-бот в «Telegram»)
* https://t.me/GovnokodChannel (Тематический канал в «Telegram»)
* https://vorec.space/ (глоссарий Говнокода)
* https://app.element.io/#/room/#govnokod:matrix.org (резервный чат)
Примечание: автоматические перекаты в настоящее время осуществляются только с аккаунта nepeKamHblu_nemyx.
Остерегайтесь подделок. Берегите себя и своих близких. Кок!
bormand 29.08.2021 04:50 # 0
3oJIoTou_xyu 29.08.2021 07:08 # +3
JloJle4Ka 29.08.2021 07:11 # 0
3oJIoTou_xyu 29.08.2021 07:13 # +2
D9lD9l_Lado 14.10.2021 22:54 # 0
D9lD9l_Lado 14.10.2021 22:54 # 0
D9lD9l_Lado 14.10.2021 22:54 # 0
Okm9I6PbCKuu_nemyx 14.10.2021 22:48 # 0
D9lD9l_Lado 14.10.2021 22:54 # 0
D9lD9l_Lado 14.10.2021 22:54 # 0
D9lD9l_Lado 14.10.2021 22:54 # 0
JloJle4Ka 29.08.2021 11:22 # 0
А ещё мне тут кто-то буквально пару-тройку месяцев назад доказывал прогрессивность электронных трудовых книжек.... Ну чо... удачки вам... лемминги!!!!
JloJle4Ka 29.08.2021 11:22 # 0
3oJIoTou_xyu 29.08.2021 11:31 # 0
D9lD9l_Lado 14.10.2021 22:53 # 0
D9lD9l_Lado 14.10.2021 22:53 # 0
Soul_re@ver 29.08.2021 11:46 # +2
JloJle4Ka 29.08.2021 12:02 # 0
D9lD9l_Lado 14.10.2021 22:53 # 0
bormand 29.08.2021 12:15 # +2
А смысл? Это же, насколько я понимаю, не согласие на ведение электронной (она один хер будет вестись и это не обсуждается), а отказ от ведения бумажной. Т.е. подписав эту хуйню я просто потеряю репликацию на бумагу.
А лольку это вообще не касается т.к. у ньюфагов, которые только начинают работать, уже никогда не будет бумажной.
Или я ошибаюсь?
Soul_re@ver 29.08.2021 12:31 # +1
Desktop 29.08.2021 12:32 # +1
bormand 29.08.2021 12:35 # +4
3.14159265 29.08.2021 12:37 # +4
Ахаха.
Самые большие луддиты — это люди в профессии.
D9lD9l_Lado 14.10.2021 22:53 # 0
Desktop 29.08.2021 12:37 # +1
bormand 29.08.2021 12:40 # +1
Как-то так, да. Причём пенсионный фонд эту статистику один хер уже давным-давно ведёт. Видимо вся реализация заключается в том, что ты можешь распечатать эту табличку через госуслуги.
Desktop 29.08.2021 12:42 # +1
Soul_re@ver 29.08.2021 12:44 # +4
D9lD9l_Lado 14.10.2021 22:53 # 0
D9lD9l_Lado 14.10.2021 22:53 # 0
guest6 29.08.2021 12:48 # +2
bormand 29.08.2021 12:49 # +2
D9lD9l_Lado 14.10.2021 22:53 # 0
D9lD9l_Lado 14.10.2021 22:53 # 0
D9lD9l_Lado 14.10.2021 22:53 # 0
Soul_re@ver 29.08.2021 12:40 # +4
Дрочить на аккуратные записи, сделанные каллиграфическим почерком чернильной ручкой (если работал в какой-то древней госструктуре).
D9lD9l_Lado 14.10.2021 22:53 # 0
D9lD9l_Lado 14.10.2021 22:53 # 0
D9lD9l_Lado 14.10.2021 22:53 # 0
D9lD9l_Lado 14.10.2021 22:53 # 0
D9lD9l_Lado 14.10.2021 22:53 # 0
guest6 29.08.2021 12:54 # +2
Там на копипасту ответ. Ему, думаю, вообще похуй.
JloJle4Ka 29.08.2021 13:16 # +1
guest6 29.08.2021 13:27 # +1
3.14159265 29.08.2021 13:38 # +1
IIIyqpymuHckuu_nemyx 29.08.2021 14:03 # +1
3.14159265 29.08.2021 14:16 # 0
Desktop 29.08.2021 14:17 # 0
j123123 29.08.2021 14:20 # +6
JloJle4Ka 29.08.2021 14:37 # 0
bormand 29.08.2021 14:38 # +2
D9lD9l_Lado 14.10.2021 22:53 # 0
D9lD9l_Lado 14.10.2021 22:53 # 0
3oJIoTou_xyu 29.08.2021 14:40 # +6
https://youtu.be/YTnFwSyNgfc
JloJle4Ka 29.08.2021 14:42 # 0
3oJIoTou_xyu 29.08.2021 14:47 # +3
D9lD9l_Lado 14.10.2021 22:53 # 0
D9lD9l_Lado 14.10.2021 22:53 # 0
D9lD9l_Lado 14.10.2021 22:53 # 0
Desktop 29.08.2021 14:44 # 0
D9lD9l_Lado 14.10.2021 22:53 # 0
D9lD9l_Lado 14.10.2021 22:53 # 0
D9lD9l_Lado 14.10.2021 22:53 # 0
D9lD9l_Lado 14.10.2021 22:53 # 0
D9lD9l_Lado 14.10.2021 22:53 # 0
D9lD9l_Lado 14.10.2021 22:53 # 0
JloJle4Ka 29.08.2021 13:43 # 0
defecatinho 29.08.2021 13:51 # 0
JloJle4Ka 29.08.2021 13:53 # 0
IIIyqpymuHckuu_nemyx 29.08.2021 14:03 # +1
D9lD9l_Lado 14.10.2021 22:53 # 0
D9lD9l_Lado 14.10.2021 22:53 # 0
D9lD9l_Lado 14.10.2021 22:53 # 0
D9lD9l_Lado 14.10.2021 22:53 # 0
D9lD9l_Lado 14.10.2021 22:53 # 0
D9lD9l_Lado 14.10.2021 22:53 # 0
D9lD9l_Lado 14.10.2021 22:53 # 0
D9lD9l_Lado 14.10.2021 22:53 # 0
D9lD9l_Lado 14.10.2021 22:53 # 0
D9lD9l_Lado 14.10.2021 22:54 # 0
ISO 29.08.2021 14:57 # +4
Вот что аниме-девочки животворящие делают!
Desktop 29.08.2021 15:01 # 0
ISO 29.08.2021 15:04 # +3
Desktop 29.08.2021 15:07 # +2
они послушают вореции, надиктованные металлическим робоголосом, так ещё и оглохнут
D9lD9l_Lado 14.10.2021 22:53 # 0
Soul_re@ver 29.08.2021 15:07 # +3
D9lD9l_Lado 14.10.2021 22:53 # 0
D9lD9l_Lado 14.10.2021 22:53 # 0
D9lD9l_Lado 14.10.2021 22:53 # 0
bormand 29.08.2021 15:06 # 0
guest6 29.08.2021 15:08 # +4
Говнокод
Для чего нужен говнокод?
Любой человек хоть раз в жизни задавался вопросом: "что такое говнокод?"?
В этой статье мы рассмотрим это понятие -- говнокод
Для начала давайте разберемся, что же такое говнокод
Desktop 29.08.2021 15:10 # 0
JloJle4Ka 29.08.2021 15:22 # 0
guest6 29.08.2021 15:23 # 0
JloJle4Ka 29.08.2021 15:24 # 0
guest6 29.08.2021 15:39 # +1
D9lD9l_Lado 14.10.2021 22:53 # 0
D9lD9l_Lado 14.10.2021 22:53 # 0
D9lD9l_Lado 14.10.2021 22:53 # 0
Desktop 29.08.2021 15:24 # 0
JloJle4Ka 29.08.2021 15:26 # 0
defecatinho 29.08.2021 15:28 # 0
ABryCTOBCKuu_nemyx 29.08.2021 16:26 # +1
JloJle4Ka 29.08.2021 16:27 # +1
D9lD9l_Lado 14.10.2021 22:53 # 0
D9lD9l_Lado 14.10.2021 22:53 # 0
D9lD9l_Lado 14.10.2021 22:53 # 0
D9lD9l_Lado 14.10.2021 22:53 # 0
D9lD9l_Lado 14.10.2021 22:53 # 0
D9lD9l_Lado 14.10.2021 22:53 # 0
D9lD9l_Lado 14.10.2021 22:53 # 0
D9lD9l_Lado 14.10.2021 22:53 # 0
ISO 29.08.2021 15:24 # +4
bormand 29.08.2021 15:26 # +1
JloJle4Ka 29.08.2021 16:27 # +1
D9lD9l_Lado 14.10.2021 22:53 # 0
D9lD9l_Lado 14.10.2021 22:53 # 0
D9lD9l_Lado 14.10.2021 22:53 # 0
D9lD9l_Lado 14.10.2021 22:53 # 0
D9lD9l_Lado 14.10.2021 22:53 # 0
guest6 29.08.2021 18:55 # 0
ABryCTOBCKuu_nemyx 29.08.2021 19:07 # +1
А что, если выводить десяток инпутов/текстареа со случайными названиями, только один из них делать видимым, а если бот заполнил невидимые поля, то отвергать ввод.
Ну типа:
Допустим, в данный момент средствами CSS видимым делается только четвёртое поле, именно из него и принимается текст комментария, а все остальные должны оставаться незаполненными. Не каждый бот будет проверять реальную видимость текстовых полей.
Soul_re@ver 29.08.2021 19:16 # +3
bormand 29.08.2021 19:17 # +1
D9lD9l_Lado 14.10.2021 22:53 # 0
Desktop 29.08.2021 19:19 # 0
D9lD9l_Lado 14.10.2021 22:53 # 0
D9lD9l_Lado 14.10.2021 22:53 # 0
guest6 29.08.2021 19:33 # +2
Интересно, пофиксили? Кто-нибудь знает?
ABryCTOBCKuu_nemyx 29.08.2021 19:41 # 0
guest6 29.08.2021 20:00 # +2
ABryCTOBCKuu_nemyx 29.08.2021 20:12 # 0
Soul_re@ver 29.08.2021 20:21 # +1
D9lD9l_Lado 14.10.2021 22:52 # 0
Desktop 29.08.2021 20:32 # 0
guest6 29.08.2021 20:37 # +1
D9lD9l_Lado 14.10.2021 22:52 # 0
ABryCTOBCKuu_nemyx 29.08.2021 20:37 # +1
https://itc.ua/blogs/amerikanskiy-bank-testiruet-kartyi-s-dinamicheskim-cvv2-kodom/
Ещё гуглится по сокращению «iCVV».
guest6 29.08.2021 20:44 # +3
Какой багор )))
> если код менять каждый час, карта проработает около четырех лет
> литий-ионный аккумулятор
Интересно, если на такую карту попытаются сесть или захотят её разрезать*, сильно будет печь? У кого-нибудь пригорит?
_______
* не знаю, как сейчас, но раньше в Америке протухшие/нелегальные кредитки должен был разрезать бдительный продавец
ISO 29.08.2021 20:47 # +3
Такими темпами следующий век мы будем встречать «угу»-ками и каменными топорами.
Soul_re@ver 29.08.2021 20:50 # +4
Телефон зарядил, наушники зарядил, зарядку для наушников зарядил, зажигалку зарядил, фонарик зарядил, пауэрбанк зарядил.
bormand 29.08.2021 20:57 # +1
D9lD9l_Lado 14.10.2021 22:52 # 0
guest6 29.08.2021 21:06 # +1
Как минимум, одна ненужная абстракция. Можно взять модель, где ни пердолиться с проводами не надо, ни использовать наушники как два клиента зарядки.
bormand 29.08.2021 21:08 # +1
guest6 29.08.2021 21:34 # +1
Как по мне, наушники удобнее положить в карман/сумку/на стол, если слушать надоело. А в коробочку - только на зиму/на лето.
Если надо зарядить, в наушники можно просто вставить кабель питания! Не обязательно прерывать прослушивание питушни и складывать их куда-нибудь. Иначе какой-то пердолинг: чтобы послушать питушню, надо наушники убрать в коробочку и ждать неопределённое время. Зачем? Зачем?
bormand 29.08.2021 21:52 # +1
Ну мы же про маленькие вкладыши?
А в больших наушниках у меня и аудио кабель можно воткнуть если они рязрядились или хочется нулевую задержку.
guest6 29.08.2021 22:08 # +1
И я плавно подвожу к тому, что Яббл-подобные питушни - это какой-то культ извращённого пердолинга. Сначала ты платишь за них, потом они играют неполный день (не то что время бодрствования, даже на стандартный рабочий день не хватит) и не могут заряжаться в процессе прослушивания. Потом оказывается, что заряжать надо в коробке, а чтобы не потерять, нужно докупить шнурок.
Но на рынке есть либо наушники побольше, либо уже соединённые шнурком-аккумулятором маленькие вкладыши с автономностью получше.
ABryCTOBCKuu_nemyx 29.08.2021 22:13 # +4
Часы, которые нужно заряжать пару раз в день.
bormand 29.08.2021 22:16 # +1
Какой багор )))
У меня копеечный браслет работает в районе месяца без подзарядки...
ISO 29.08.2021 22:19 # +2
CHayT 29.08.2021 22:20 # +1
D9lD9l_Lado 14.10.2021 22:52 # 0
D9lD9l_Lado 14.10.2021 22:52 # 0
D9lD9l_Lado 14.10.2021 22:52 # 0
ISO 29.08.2021 22:16 # +3
И вот теперь прогресс пошёл в обратную сторону, а пользователи техники компании «Apple» и рады.
D9lD9l_Lado 14.10.2021 22:52 # 0
Desktop 29.08.2021 22:17 # +4
ABryCTOBCKuu_nemyx 29.08.2021 22:20 # +2
Desktop 29.08.2021 23:53 # 0
D9lD9l_Lado 14.10.2021 22:52 # 0
D9lD9l_Lado 14.10.2021 22:52 # 0
D9lD9l_Lado 14.10.2021 22:52 # 0
guest6 29.08.2021 22:18 # +5
Кварцушня на батарейке - годы
Фитнушня резиновая - недели.
Телефон - дни.
Механические часы - день-другой.
Ололо часы - несколько часов.
Кто меньше? Надо попотеть, чтобы заслужить возможность проверять время.
bormand 29.08.2021 22:19 # 0
Если же "вечные" с самозаводом.
Soul_re@ver 29.08.2021 22:24 # +3
CHayT 29.08.2021 23:37 # +2
D9lD9l_Lado 14.10.2021 22:52 # 0
D9lD9l_Lado 14.10.2021 22:52 # 0
D9lD9l_Lado 14.10.2021 22:52 # 0
Desktop 29.08.2021 22:20 # +2
– нормальную механику вроде заводить надо пару раз в жизни. плюс есть модели, которые автоподводятся при движении рук
но тут надо понимать, что среди ценителей нормальные часы начинаются от $3K
guest6 29.08.2021 22:23 # 0
Вроде же кварцушня с батарейкой гораздо точнее, если не переплачивать на три порядка дороже.
А тут ты и платишь, и постоянно корректируешь, и заводишь, если автушни нет.
Desktop 29.08.2021 22:26 # 0
надо смотреть на механизм и т.п.
я в этом деле не Копенгаген, слишком много умных слов типа турбийона
D9lD9l_Lado 14.10.2021 22:52 # 0
D9lD9l_Lado 14.10.2021 22:52 # 0
D9lD9l_Lado 14.10.2021 22:52 # 0
D9lD9l_Lado 14.10.2021 22:52 # 0
Soul_re@ver 29.08.2021 22:21 # +2
ISO 29.08.2021 22:23 # +2
ABryCTOBCKuu_nemyx 29.08.2021 22:30 # +2
Desktop 29.08.2021 22:32 # +1
D9lD9l_Lado 14.10.2021 22:52 # 0
guest6 29.08.2021 22:55 # +1
bormand 29.08.2021 23:08 # +2
Чтобы не лезть за мобилой. А то бывает, что хочу время посмотреть, а в итоге залипаю на ГК.
ABryCTOBCKuu_nemyx 29.08.2021 23:12 # 0
D9lD9l_Lado 14.10.2021 22:52 # 0
defecatinho 29.08.2021 23:13 # 0
D9lD9l_Lado 14.10.2021 22:52 # 0
guest6 30.08.2021 09:49 # 0
D9lD9l_Lado 14.10.2021 22:52 # 0
D9lD9l_Lado 14.10.2021 22:52 # 0
D9lD9l_Lado 14.10.2021 22:52 # 0
D9lD9l_Lado 14.10.2021 22:52 # 0
D9lD9l_Lado 14.10.2021 22:52 # 0
guest6 29.08.2021 22:30 # +1
D9lD9l_Lado 14.10.2021 22:52 # 0
D9lD9l_Lado 14.10.2021 22:52 # 0
D9lD9l_Lado 14.10.2021 22:52 # 0
Desktop 29.08.2021 22:28 # +1
bormand 29.08.2021 22:29 # +1
Да там вообще гомосятина, в обе стороны работает.
Desktop 29.08.2021 22:32 # 0
bormand 29.08.2021 22:37 # +2
D9lD9l_Lado 14.10.2021 22:52 # 0
D9lD9l_Lado 14.10.2021 22:52 # 0
D9lD9l_Lado 14.10.2021 22:52 # 0
D9lD9l_Lado 14.10.2021 22:52 # 0
D9lD9l_Lado 14.10.2021 22:52 # 0
D9lD9l_Lado 14.10.2021 22:52 # 0
D9lD9l_Lado 14.10.2021 22:52 # 0
D9lD9l_Lado 14.10.2021 22:52 # 0
D9lD9l_Lado 14.10.2021 22:52 # 0
ISO 29.08.2021 21:08 # +4
CHayT 29.08.2021 21:13 # +3
3.14159265 29.08.2021 23:19 # +2
ABryCTOBCKuu_nemyx 29.08.2021 23:25 # 0
https://govnokod.ru/27625#comment665864
D9lD9l_Lado 14.10.2021 22:52 # 0
CHayT 29.08.2021 23:27 # +3
D9lD9l_Lado 14.10.2021 22:52 # 0
D9lD9l_Lado 14.10.2021 22:52 # 0
CHayT 29.08.2021 23:34 # +1
D9lD9l_Lado 14.10.2021 22:52 # 0
D9lD9l_Lado 14.10.2021 22:52 # 0
D9lD9l_Lado 14.10.2021 22:52 # 0
Desktop 29.08.2021 21:16 # +3
такую карту можно от зарядки не убирать
правда, не проще ли завести виртуальную карту для таких целей, её "потерять" можно только при повышенном уровне долбоебизма
с другой стороны, с такой картой может быть багор в какой-нибудь Бриташке, где в кассе при выдаче купленных в интернете билетов могут попросить показать карту, которой ты их оплачивал
ISO 29.08.2021 21:22 # +3
Подтверждаю, очень удобная штука. На неё ещё и лимиты можно поставить, и если админ сайта best-programming-socks.com.tk решит спиздить данные карты — по финансам это не особо ударит.
D9lD9l_Lado 14.10.2021 22:52 # 0
Soul_re@ver 29.08.2021 21:33 # 0
guest6 29.08.2021 21:38 # 0
D9lD9l_Lado 14.10.2021 22:52 # 0
Desktop 29.08.2021 21:38 # +3
в Бриташке есть приложение для покупки билетов на поезд (забыл как называется, давно дело было)
там можно купить билет, НО потом его нужно забрать в автомате, а, чтобы это сделать, нужно засунуть в него карту, которой ты этот билет оплачивал
у меня был сука багор, когда я не смог с первого раза сделать это своей старой карточкой с магнитной полосой, которую там почти никто не принимал, и уже охуел, а потом оказалось, что я её не той стороной тупо втыкал
но поможет ли тут пейпал я не знаю
Soul_re@ver 29.08.2021 22:03 # +1
D9lD9l_Lado 14.10.2021 22:52 # 0
D9lD9l_Lado 14.10.2021 22:52 # 0
ISO 29.08.2021 21:43 # 0
Soul_re@ver 29.08.2021 21:53 # 0
ISO 29.08.2021 21:56 # 0
D9lD9l_Lado 14.10.2021 22:52 # 0
bormand 29.08.2021 22:11 # +3
А что делать тем, у кого дисковода на передней панели уже нету? Наличку то некуда засунуть.
ISO 29.08.2021 22:13 # 0
D9lD9l_Lado 14.10.2021 22:51 # 0
Soul_re@ver 29.08.2021 22:14 # +3
Desktop 29.08.2021 22:16 # +1
D9lD9l_Lado 14.10.2021 22:51 # 0
D9lD9l_Lado 14.10.2021 22:51 # 0
D9lD9l_Lado 14.10.2021 22:51 # 0
D9lD9l_Lado 14.10.2021 22:52 # 0
D9lD9l_Lado 14.10.2021 22:52 # 0
D9lD9l_Lado 14.10.2021 22:52 # 0
D9lD9l_Lado 14.10.2021 22:52 # 0
D9lD9l_Lado 14.10.2021 22:52 # 0
D9lD9l_Lado 14.10.2021 22:52 # 0
bormand 29.08.2021 20:47 # +2
А точно ионный, а не обычная одноразовая литиевая батарейка?
D9lD9l_Lado 14.10.2021 22:51 # 0
D9lD9l_Lado 14.10.2021 22:52 # 0
D9lD9l_Lado 14.10.2021 22:52 # 0
D9lD9l_Lado 14.10.2021 22:52 # 0
D9lD9l_Lado 14.10.2021 22:52 # 0
D9lD9l_Lado 14.10.2021 22:52 # 0
D9lD9l_Lado 14.10.2021 22:53 # 0
bormand 29.08.2021 20:48 # 0
guest6 29.08.2021 21:03 # +2
Скажем, при вводе данных карты надо ввести фамильимя, дату, шестнадцатипитузный номерок и трёхпитузный номерок. При бронировании отеля - пару строк адреса, фамилию, имя, что там ещё, ту же карту.
А так начал вводить, браузер подсказал, всё вставил - и отлично.
И да, он умеет много хранить. Адрес, телефон, данные карты - точно хранит.
ISO 29.08.2021 21:05 # 0
guest6 29.08.2021 21:07 # +5
D9lD9l_Lado 14.10.2021 22:51 # 0
bormand 29.08.2021 21:20 # 0
ISO 29.08.2021 21:23 # +1
D9lD9l_Lado 14.10.2021 22:51 # 0
D9lD9l_Lado 14.10.2021 22:51 # 0
D9lD9l_Lado 14.10.2021 22:51 # 0
bormand 29.08.2021 21:15 # +1
ABryCTOBCKuu_nemyx 29.08.2021 21:16 # +1
bormand 29.08.2021 21:18 # 0
D9lD9l_Lado 14.10.2021 22:51 # 0
D9lD9l_Lado 14.10.2021 22:51 # 0
D9lD9l_Lado 14.10.2021 22:51 # 0
Desktop 29.08.2021 21:19 # +1
bormand 29.08.2021 22:07 # 0
D9lD9l_Lado 14.10.2021 22:51 # 0
D9lD9l_Lado 14.10.2021 22:51 # 0
ABryCTOBCKuu_nemyx 29.08.2021 21:27 # +1
bormand 29.08.2021 21:30 # +3
ABryCTOBCKuu_nemyx 29.08.2021 21:36 # 0
D9lD9l_Lado 14.10.2021 22:51 # 0
Desktop 29.08.2021 21:46 # +1
bormand 29.08.2021 21:53 # +2
А чтобы не отключали. Забавно, что в ютубе история поиска осталась. Видимо они сами где-то хранят.
Desktop 29.08.2021 21:55 # +2
очень долго ютуб не показывал список старых поисковых запросов (но честно всё сохранял, это было видно по мобильному клиенту)
а потом вдруг опять начал
хуй знает, что там у этого гугла происходит. но лучше надеть три презерватива
D9lD9l_Lado 14.10.2021 22:51 # 0
Soul_re@ver 29.08.2021 22:05 # +2
Desktop 29.08.2021 22:12 # +5
D9lD9l_Lado 14.10.2021 22:51 # 0
D9lD9l_Lado 14.10.2021 22:51 # 0
D9lD9l_Lado 14.10.2021 22:51 # 0
D9lD9l_Lado 14.10.2021 22:51 # 0
D9lD9l_Lado 14.10.2021 22:51 # 0
bormand 29.08.2021 22:12 # +1
D9lD9l_Lado 14.10.2021 22:51 # 0
D9lD9l_Lado 14.10.2021 22:51 # 0
D9lD9l_Lado 14.10.2021 22:51 # 0
D9lD9l_Lado 14.10.2021 22:51 # 0
D9lD9l_Lado 14.10.2021 22:53 # 0
D9lD9l_Lado 14.10.2021 22:53 # 0
D9lD9l_Lado 14.10.2021 22:53 # 0
ISO 31.08.2021 23:20 # +1
1. Проверка на ваниш оффтопов проводится раз в 24 часа (было 3).
2. Интервал между загрузками оффтопов во время проверки на ваниш увеличен до 60 секунд (было 15).
Дополнительно выношу на обсуждение прогрессивной общественности предложение об уменьшении лимита комментариев в оффтопе до 350.
guest6 31.08.2021 23:40 # 0
Голосую против. Накрутка перекатов какая-то.
ISO 31.08.2021 23:43 # +3
Ну, с учётом того, что все и так срут в соседнем треде на семь сотен комментов — погоды это не сделает. Предложение снято.
D9lD9l_Lado 14.10.2021 22:51 # 0
D9lD9l_Lado 14.10.2021 22:51 # 0
guest6 31.08.2021 23:44 # 0
Можно еще нанять программиста, который сделает движок независимым от количества коментаниев
То есть чтобы скорость работы сайта была на O(N*N) (где N -- количество комментариев) а O(1)
Но тогда придется язык сменить скорее всего
guest6 31.08.2021 23:46 # 0
guest6 31.08.2021 23:48 # +1
D9lD9l_Lado 14.10.2021 22:51 # 0
D9lD9l_Lado 14.10.2021 22:51 # 0
ISO 31.08.2021 23:47 # 0
Быстрее O(logN) не получится, но это занудство.
guest6 31.08.2021 23:48 # 0
Почему, кстати, не получится?
ISO 31.08.2021 23:49 # 0
guest6 31.08.2021 23:51 # 0
Он зайдет по FTP, и исправит в Wordpressе нужный php файло чтобы не тормозило
ISO 31.08.2021 23:54 # +1
guest6 31.08.2021 23:55 # 0
https://github.com/wiistriker/govnokod.ru/blob/master/src/Govnokod/RatingsBundle/GovnokodRatingsBundle.php
guest6 31.08.2021 23:57 # +1
D9lD9l_Lado 14.10.2021 22:51 # 0
D9lD9l_Lado 14.10.2021 22:51 # 0
D9lD9l_Lado 14.10.2021 22:51 # 0
D9lD9l_Lado 14.10.2021 22:51 # 0
D9lD9l_Lado 14.10.2021 22:51 # 0
guest6 31.08.2021 23:50 # 0
Присоединяйся
D9lD9l_Lado 14.10.2021 22:51 # 0
ISO 31.08.2021 23:53 # 0
Потому что всё равно нужно делать «select * from comments where comments.post_id = 27625», а для этого базе придётся искать во всех комментах.
В принципе, возможно, можно взять не btree, а как-то прикрутить хэш (хотя в постгре он, кажется, строится только по уникальным значениям), но тогда константа просядет очень сильно, хотя, по идее, будет амортизированное O(1).
guest6 31.08.2021 23:59 # 0
Ну собссно деревья для того ведь и нужны что бы совместиить быстрый поиск с отношением порядка
Так логично построить и hash индекс, и посмотреть как будет себя вести оптимизатор
Если странички с "горячими" тредами попадут в оперативку, то вероятно будет не очень плохо рабоать
ISO 01.09.2021 00:17 # 0
Рекомендую великолепный цикл про индексы в «Постгре»: https://habr.com/ru/company/postgrespro/blog/349224/, там в подробностях объясняют, как оно всё работает изнутри.
Работает.
ISO 01.09.2021 00:18 # 0
Таким запросом мы всё равно должны выбрать все комментарии из поста post_id, потому что «limit 20» нам вернёт случайные комментарии из этого поста.
Хэш для такого запроса не подходит.
ISO 01.09.2021 00:22 # 0
И, в итоге, O(logN) всё равно остаётся пределом.
3.14159265 01.09.2021 00:31 # 0
А какую вы пытаетесь решить задачу?
ISO 01.09.2021 00:32 # 0
bormand 01.09.2021 00:33 # 0
Хранить весь тред как значение в хешмапе и отдавать as is клиенту. Быстрее ты вряд ли что-то придумаешь.
guest6 01.09.2021 00:36 # +1
D9lD9l_Lado 14.10.2021 22:51 # 0
ISO 01.09.2021 00:41 # +2
Нас спасёт толко пагинация.
D9lD9l_Lado 14.10.2021 22:51 # 0
D9lD9l_Lado 14.10.2021 22:51 # 0
guest6 01.09.2021 00:39 # +2
Можно просто в фоновом режиме генерировать статический HTML с комментами, и отдавать его nginxом через ``sendfile`` с хешем и датой изменения (чтобы работал кеш)
Будет збс
То есть нормализованная СУБД тоже нужна (как источник данных, ultimate source) но отдавать юзеру нужно сгенеренный документ
ISO 01.09.2021 00:41 # 0
guest6 01.09.2021 00:43 # 0
У нас просто будут не сразу появляться комменты
ISO 01.09.2021 00:45 # 0
guest6 01.09.2021 00:52 # 0
ISO 01.09.2021 00:59 # +1
Современные СУБД (не всякие зумерские «NoSQL» говноподелия, конечно) оптимизированы настолько, что могут уместить в одной транзакции целую банку сгущёнки.
По сравнению с отработкой серверной логики, грамотно написанные запросы в грамотно спроектированную БД — это такие копейки, что о них даже говорить нет смысла.
Конечно, когда у тебя появляются стабильные сотни RPS — тогда можно думать и о кэшировании, но не в файлик на ФС, а с использованием предназначенных для этого инструментов (см. «memcached», например).
guest6 01.09.2021 01:01 # 0
А уж если эта статика по дороге на CDN закешируется..
PS: разумеется, статика должна быть УЖЕ зажата: не надо её жать на лету
>memcached
memcached нужен если у тебя несколько фронтов же, а если один, то буфер перед файловой системой -- вот твой memcached
ISO 01.09.2021 01:07 # +1
Экономить 287 микросекунд (прошу обратить внимание: это доли от миллисекунды, а не от секунды) при сетевом пинге в ~50000 микросекунд — совершенно бессмысленно.
Вот кэшировать сами запросы, чтобы планировщик не тратил аж 5374 микросекунды — можно попробовать.
ISO 01.09.2021 01:09 # +1
Сделал analyze и выполнил запрос пару раз:
479 микросекунд на весь запрос.
ISO 01.09.2021 01:12 # +1
D9lD9l_Lado 14.10.2021 22:51 # 0
guest6 01.09.2021 01:12 # 0
D9lD9l_Lado 14.10.2021 22:51 # 0
3.14159265 01.09.2021 02:29 # 0
> Execution Time: 0.124 ms
> rows=629651 width=502
Not bad.
Такое ощущение что DB в памяти закешировала как минимум индексы (comments_comment_ids, users_user_ids). Никакого IO нет вообще.
D9lD9l_Lado 14.10.2021 22:51 # 0
D9lD9l_Lado 14.10.2021 22:51 # 0
guest6 01.09.2021 01:10 # 0
А что будет, когда их станет 200, и они все попадут в разных юзеров?
> пинге в ~50000 микросекунд —
ну
ISO 01.09.2021 01:15 # +2
> А что будет, когда их станет 200, и они все попадут в разных юзеров?
Я же говорю: когда у тебя будет стабильная сотня RPS — тогда уже нужно будет подумывать о кэшировании. И даже в этом случае достаточно будет навесить примитивный «memcached».
Но стабильная сотня RPS на API — это или дудос, или у тебя аудитория эдак в миллион петухов. Авторам мелких бложиков волноваться о таких вещах бесполезно.
UPD: если ещё проще, то, при условии, что БД проектировал не долбоёб, твой сервер, даже раздающий статику, умрёт под нагрузкой гораздо раньше, чем база.
guest6 01.09.2021 11:30 # 0
зачем, если у тебя один веб сервер? что в нем хранить?
>сервер, даже раздающий статику, умрёт под нагрузкой гораздо раньше, чем база.
Это спорное заявление.
Можешь пожалуйста рассказать, как ты к нему пришел?
ISO 01.09.2021 13:29 # +1
Какая разница, сколько у тебя серверов?
> что в нем хранить?
Очевидно же: кэши. Запросы, страницы, ответы — что угодно.
> Можешь пожалуйста рассказать, как ты к нему пришел?
Я выше приводил тайминги. Обработка одного HTTP-запроса (вместе с поддержкой TCP-соединения) будет длится гораздо дольше, чем половина миллисекунды, проведённых в БД.
guest6 01.09.2021 14:11 # +1
memcache __обычно__ нужен чтобы хранить данные в памяти и шарить их между несколькими машинами
Если у меня одна машина, то почему я не могу хранить кеш прямо в куче своего сервера приложений?
>Очевидно же: кэши. Запросы, страницы, ответы — что угодно.
Не очень пока понятно, что такое "запросы", и чем ответы отличаются от страниц.
Статическая страница, находящаяся в буфере операционки, отдается быстрее, чем какие-то данные, которые нужно скопировать из memcache в адресное пространство твоего сервера приложений, обработать их там (напомню, что у cpython нет JIT) а затем передать их nginxу еще раз скопировав, не?
>Я выше приводил тайминги.
Ты приводил время на обработку одного SQL запроса, да и скорее всего закешированного.
Чтобы утверждать, что "отдача статики загнется раньше", нужно доказать, что нагрузка на CPU при отдаче статики выше, чем при обработке запроса к СУБД и передаче его в ORM в питоне.
Предполагаю, что бОльшая часть времени на обработку запроса связана с ожиданим сети, а не с ожиданием CPU, то есть одновременный заход на сайт даже пятидести человек в случае статики окажется выгоднее, чем обработка пятидести _разных_ запросов, и даже получение их из memcached.
Если конечно сеть не является твоим узким местом: при очень низком bandwidth или высоком latency действительно не важно с какой скоростью ты подготовил данные
Надо еще сказать, что тайминги у GCode.space специфические.
Вот этот скрипт отдается мне за 15ms, судя по developer toolbar
https://yastatic.net/jquery/1.8.3/jquery.min.js
А вот этот за 48ms
https://gcode.space/angular.min.js?v=1.8.2
Если статический файл отдается почти 50ms, то решение с ним выглядит уже не таким привлекательным
Но проблема тут скорее всего не в CPU, а в ио (узнать это можно через vmstat, наверное)
CEHT9I6PbCKuu_nemyx 01.09.2021 14:15 # 0
guest6 01.09.2021 14:34 # 0
D9lD9l_Lado 14.10.2021 22:50 # 0
j123123 01.09.2021 15:11 # 0
А что если контекст «PHP» хранить в System V shared memory https://www.php.net/manual/en/function.shm-attach.php ?
guest6 01.09.2021 15:14 # 0
Вообще говоря контекст не обязан сбрасываться, ведь современные PHP работают внутри сервера приложений
Но сброс контекста видимо идет с тех пор, когда PHP запускали как CGI (запуская процесс с ноля) или как модуль первого апача.
Первый апач форкал потомков, и переодически их грохал
CEHT9I6PbCKuu_nemyx 01.09.2021 15:24 # 0
https://govnokod.ru/23448#comment392573
Можно отключить лимит времени исполнения скрипта и принимать входящие соединения через socket_accept. Но тогда мы потеряем возможность использовать пэхапэшную питушню вроде $_GET, $_POST, нам придётся разбирать запросы и формировать ответы самим.
j123123 01.09.2021 15:25 # +1
Тогда еще возможнно придется использовать "GC"
CEHT9I6PbCKuu_nemyx 01.09.2021 15:27 # 0
guest6 01.09.2021 15:39 # 0
так-то оно всё удаляется, но кажется если не закрыть файл, то он так и останется открытым пока процесс не помрет (речь о mod_php в apache)
D9lD9l_Lado 14.10.2021 22:50 # 0
rotoeb 01.09.2021 19:39 # +2
Но вы и дальше будете за всё, что угодно, кроме PHP.
Desktop 01.09.2021 19:40 # 0
CEHT9I6PbCKuu_nemyx 01.09.2021 19:45 # 0
D9lD9l_Lado 14.10.2021 22:50 # 0
D9lD9l_Lado 14.10.2021 22:50 # 0
D9lD9l_Lado 14.10.2021 22:50 # 0
D9lD9l_Lado 14.10.2021 22:50 # 0
D9lD9l_Lado 14.10.2021 22:50 # 0
D9lD9l_Lado 14.10.2021 22:50 # 0
D9lD9l_Lado 14.10.2021 22:50 # 0
3.14159265 01.09.2021 15:20 # +3
Получается единая точка отказа.
memcache позволяет запускать несколько машин с «PHP».
«PHP» не хранит состояние, по этой причине он идеально масштабируется, имеет высокую отказоустойчивость.
Именно поэтому я за «PHP».
«PHP» отличный выбор для больших проектов.
guest6 01.09.2021 15:22 # +1
Ничто, впрочем, не мешает мне отказаться от стейта и в питоне и даже в джаве
D9lD9l_Lado 14.10.2021 22:50 # 0
D9lD9l_Lado 14.10.2021 22:50 # 0
D9lD9l_Lado 14.10.2021 22:50 # 0
D9lD9l_Lado 14.10.2021 22:50 # 0
ISO 01.09.2021 19:40 # +2
Потому что тогда тебе придётся делать велосипед и решать целую кучу нетривиальных проблем: персистентности (особенно актуально для «PHP»), потокобезопасности (заебёшься, ух как заебёшься делать мутабельный потокобезопасный кэш, который не тормозит), инвалидации-очистки (иначе будешь регулярно падать в OOM), надёжности, производительности и ещё кучки, которых я так с ходу не придумаю.
Нахуй оно надо, когда есть удобные, надёжные и быстрые «заводские» решения?
> Ты приводил время на обработку одного SQL запроса, да и скорее всего закешированного.
Я зря писал про долбоёбов? У меня в «NGK» практически все запросы к API выдают один запрос к БД. Разумеется, если бездумно тыкать в «ORM» и генерировать по сотне запросов в базу — производительности не будет никакой.
> Чтобы утверждать, что "отдача статики загнется раньше", нужно доказать, что нагрузка на CPU при отдаче статики выше, чем при обработке запроса к СУБД и передаче его в ORM в питоне.
Нагрузка на CPU не столь важна, как загрузка сети. Тысяча петухов, подключившихся к твоему серверу одновременно, будут очень долго и вдумчиво разъёбывать твой сетевой стек: гораздо дольше, чем база обработает все их запросы — просто из-за сетевых задержек. Тот же приведённый тобой angularjs, например, загружался по моей сети 22 миллисекунды.
> Но проблема тут скорее всего не в CPU, а в ио (узнать это можно через vmstat, наверное)
Проблема в пинге и работе TCP.
guest6 01.09.2021 19:51 # 0
Зачем, если есть готовые решения?
https://docs.djangoproject.com/en/3.2/topics/cache/#local-memory-caching
Живет в памяти, и делает LRU.
>Нагрузка на CPU не столь важна, как загрузка сети.
Что такое "нагрузка сети"? Ширина канала?
А какой у тебя канал?
>разъёбывать твой сетевой стек:
Что ты имеешь ввиду?
Сервер может начать медленно отвечать на запросы по причине
* Загрузки CPU
* Недоступности IO
* Исчерпания ширины канала
(есть еще питушня с RAM, но она тут не важна)
К какой категории относятся проблемы сетевого стека?
ISO 01.09.2021 19:59 # 0
Это просто вопрос выбора готовых решений.
И да, джанговский «LMC» для продакшена сосёт, в чём они честно признаются сами:
>> Note that each process will have its own private cache instance, which means no cross-process caching is possible.
>> This also means the local memory cache isn’t particularly memory-efficient, so it’s probably not a good choice for production environments.
> К какой категории относятся проблемы сетевого стека?
Ко всем трём. От большого количества соединений начинает умирать сетевой драйвер (не успевают обрабатываться прерывания), разбухает nf_conntrack, начинает тормозить epoll(). См. C10k.
guest6 01.09.2021 20:12 # 0
Логично, что локальная память процесса не доступна другому процессу, но сколько у тебя тех процессов?
Совершенно не очевидно, что внешний процесс лучше, чем локальный кеш каждого процесса (пусть и дублированный)
>От большого количества соединений начинает умирать сетевой драйвер (не успевают обрабатываться прерывания)
Это проблемы ширины канала (и совместимости с ним NIC и драйвера), но мне трудно представить себе приложение, где на каждый заход делается SQL запрос, и при этом боттлнек расположен именно в количестве прерываний сетевой карты, если конечно это не карта в 10 мегабит
> разбухает nf_conntrack, начинает тормозить epoll()
десять лет назад люди тюнили 500К
https://news.ycombinator.com/item?id=1740823
>C10k
Проблема C10k появилась на FTP сервере. Запросов к SQL там всё таки не было, ну и описывает она проблему обработки 10k сокетов
Если к каждому такому подключению добавить SQL запросец, то вероятно 10k случилось бы раньше
ISO 01.09.2021 20:25 # 0
Сейчас шесть: по три на дев и основную версию «NGK».
«GIL» делает модель с одним процессом абсолютно недееспособной (если у тебя больше полутора питухов в сутки заходят).
> Совершенно не очевидно, что внешний процесс лучше, чем локальный кеш каждого процесса (пусть и дублированный)
1. Память: если ты можешь дублировать весь свой кэш десяток раз (GIL!) и не сильно просесть по оперативе — у тебя явно не те объёмы, чтобы заморачиваться кэшами.
2. Производительность: каждая копия кэша требует своего наполнения и поддержания. Если твои данные меняются часто — на каждое обновление их будет запрашивать каждая копия кэша, что делает всю затею с кэшем весьма сомнительной.
Так что это весьма очевидно.
> Это проблемы ширины канала
Это проблемы процессора.
> Проблема C10k появилась на FTP сервере. Запросов к SQL там всё таки не было
И что?
Ещё раз: то, что тебе понадобится кэширование, когда у тебя будет постоянно толпиться целая стая петухов — это самоочевидно и не требует обсуждения. Я же говорю об обратной ситуации: когда у тебя посетителей мало (не больше десятков RPS без пиков — тык в небо) — волноваться о кэшировании именно запросов к базе абсолютно бессмысленно, потому что это не принесёт никакого видимого профита в скорости.
guest6 01.09.2021 20:44 # 0
GIL не позволяет потокам работать одновременно, но позволяет им работать, пока другой поток спит на IO, верно?
Так что если GIL тормозит твое приложение при заходе нескольких петухов, значит на обработку одного питуха тратится достаточно CPU, и это тоже повод использовать статику
>Память
Даже на дешевых VPS сейчас пара гигов памяти, кажется это не должно быть проблемой, пока к тебе не придет куча петухов
>Если твои данные меняются часто
Да, если данные меняются часто, то ни генерация статики, ни локальный кеш тебе не помогут
>Это проблемы процессора.
Тогда уже сетевой карты, потому что профессиональные карты умеют TCP offloading (или аналогичные приёмы, чтобы не грузить им CPU)
>И что?
А с чего всё началось?:)
Есть две системы. Одна на каждый заход пользователя делает SQL запрос, получает ответ, превращает его в какие-то структуры в питоне, генерирует страничку шаблонизатором, и отдает пользователю
Другая считывает с диска (вероятно уже из буфера) несколько страниц, и отдает их пользователю по HTTP
Ты утверждаешь, что все действия первой системы (посылка SQL запроса, обработка его базой, обработка результата в питоне, генерация страниц итд) ничтожны по сравнению с обработкой TCP, прерываний NIC, итд.
Мне кажется, что это не так.
В качестве примера ты приводить c10k, но c10k не сравнивает эти два подхода
c10k демонстрирует, что старый подход (наплодить потоков или процессов с блокирующими сокетами) работает плохо. Я и не спорю.
>волноваться о кэшировании именно запросов к базе абсолютно бессмысленно
Я волнуюсь не только о базе (хотя и о ней тоже, потому что мы всё еще не знаем что будет, если туда хотя бы 50 запросов пошлют одновременно) но о всём стеке целиком.
ISO 01.09.2021 21:09 # 0
Ладно...
Берём test.sql:
Берём pgbench:
: джва потока, 80 одновременных клиентов (больше ставить не могу, надо конфиги править), 100 транзакций (выполнений запроса) на клиента. Результат:
Таким образом, безо всякого тюнинга, с дефолтными настройками, база на «NGK» может обрабатывать больше джвух тысяч транзакций в секунду. На этом фоне обозначенные мной выше 100 RPS (которые являются приличной нагрузкой для нетюнингованного питоньего сервера) — это просто пшик.
ISO 01.09.2021 21:11 # 0
D9lD9l_Lado 14.10.2021 22:50 # 0
D9lD9l_Lado 14.10.2021 22:50 # 0
D9lD9l_Lado 14.10.2021 22:50 # 0
D9lD9l_Lado 14.10.2021 22:50 # 0
D9lD9l_Lado 14.10.2021 22:50 # 0
D9lD9l_Lado 14.10.2021 22:50 # 0
D9lD9l_Lado 14.10.2021 22:50 # 0
D9lD9l_Lado 14.10.2021 22:50 # 0
ISO 01.09.2021 19:43 # 0
guest6 01.09.2021 19:58 # 0
3.14159265 01.09.2021 20:00 # 0
И они все улетают в спам как unusual behavior.
D9lD9l_Lado 14.10.2021 22:50 # 0
D9lD9l_Lado 14.10.2021 22:50 # 0
D9lD9l_Lado 14.10.2021 22:50 # 0
D9lD9l_Lado 14.10.2021 22:50 # 0
D9lD9l_Lado 14.10.2021 22:50 # 0
D9lD9l_Lado 14.10.2021 22:50 # 0
D9lD9l_Lado 14.10.2021 22:50 # 0
D9lD9l_Lado 14.10.2021 22:50 # 0
D9lD9l_Lado 14.10.2021 22:51 # 0
D9lD9l_Lado 14.10.2021 22:51 # 0
D9lD9l_Lado 14.10.2021 22:51 # 0
D9lD9l_Lado 14.10.2021 22:51 # 0
D9lD9l_Lado 14.10.2021 22:51 # 0
CHayT 01.09.2021 00:48 # +4
D9lD9l_Lado 14.10.2021 22:50 # 0
D9lD9l_Lado 14.10.2021 22:51 # 0
bormand 01.09.2021 00:44 # 0
Источник комментов загнётся намного раньше...
D9lD9l_Lado 14.10.2021 22:50 # 0
D9lD9l_Lado 14.10.2021 22:51 # 0
3.14159265 01.09.2021 00:47 # +1
Солидно. Вы приняты.
guest6 01.09.2021 00:54 # +1
А я реально хуею, когда сраные CMS для бложиков на КАЖДЫЙ заход пользователя делают по десять запросов в какой-то mysql.
Особенно смешно, когда автор блога пишет раз в пол года
3.14159265 01.09.2021 01:17 # +2
Нет.
Просто забавное решение уровня ГК: скилльное и упоротое одновременно.
D9lD9l_Lado 14.10.2021 22:50 # 0
D9lD9l_Lado 14.10.2021 22:50 # 0
D9lD9l_Lado 14.10.2021 22:50 # 0
D9lD9l_Lado 14.10.2021 22:51 # 0
3.14159265 01.09.2021 00:46 # 0
Ну лучше O(N) где N — количество комментов в посте не получится.
Даже если хранить одним блобом/жсоном, всё-равно N влияет на размер ответа.
ISO 01.09.2021 00:48 # 0
3.14159265 01.09.2021 00:50 # 0
D9lD9l_Lado 14.10.2021 22:50 # 0
3.14159265 01.09.2021 00:52 # 0
Ответить => https://govnokod.ru/comments/27558/post?replyTo=667130
Редактировать => https://govnokod.ru/comments/667130/edit
Они же просто отображают текстовое окошко, и не грузят весь тред.
И ещё порядок комментов развернуть в обратную сторону как здесь.
Чтобы новые внизу, а старые вверху.
ISO 01.09.2021 00:55 # 0
> И ещё порядок комментов развернуть в обратную сторону как здесь. Чтобы новые внизу, а старые вверху.
Такая идея была, но непонятно, как тогда добавлять свежие комментарии.
3.14159265 01.09.2021 00:59 # +1
Ну если сложная питушня — она не нужна.
Я за простые решения.
> выходных передадим в инженерный отдел
Выходные чтобы отдыхать.
Для начала можно просто поставить href. Чтобы для ответа пользователь не грузил с базы весь тред, а просто получал окошко для ответа.
> Такая идея была, но непонятно, как тогда добавлять свежие комментарии.
Хранить в сторедже последнее место где мы читали, и показывать комменты оттуда.
И кнопка для перемещения в самый низ, к самым свежим. Не настаиваю, просто фантазирую.
bormand 01.09.2021 01:17 # 0
Кстати, я даже со своей формочки умудрялась отправить текст с ngk на gk... Правда потом второй клик на самом gk из-за ошибки csrf нужен. Зато можно нормальный редактор привернуть, забекапить коммент в локалсторедж и т.п.
Но смотрится это как пиздецовый костыль, конечно ;(
3.14159265 01.09.2021 01:23 # 0
Но у меня открыта страница где этого комментария ещё нет.
И мне ради ответа нужно подгружать весь тред с комментами (или вручную формировать ссылку с текстовым окошком).
> Зато можно нормальный редактор привернуть, забекапить коммент в локалсторедж и т.п.
Всё можно. Но мне нравится стратегия low hanging fruits.
Сделать копеешную доработку, которая решит 80% проблемы.
Посмотреть помогло ли, и по итогам думать что делать дальше.
D9lD9l_Lado 14.10.2021 22:50 # 0
D9lD9l_Lado 14.10.2021 22:55 # 0
D9lD9l_Lado 14.10.2021 22:50 # 0
D9lD9l_Lado 14.10.2021 22:55 # 0
D9lD9l_Lado 14.10.2021 22:50 # 0
D9lD9l_Lado 14.10.2021 22:55 # 0
bormand 01.09.2021 01:13 # 0
Можно начать с ручного закрытия фрейма.
Desktop 01.09.2021 01:15 # 0
D9lD9l_Lado 14.10.2021 22:50 # 0
D9lD9l_Lado 14.10.2021 22:55 # 0
D9lD9l_Lado 14.10.2021 22:50 # 0
D9lD9l_Lado 14.10.2021 22:55 # 0
D9lD9l_Lado 14.10.2021 22:50 # 0
D9lD9l_Lado 14.10.2021 22:55 # 0
D9lD9l_Lado 14.10.2021 22:50 # 0
D9lD9l_Lado 14.10.2021 22:55 # 0
D9lD9l_Lado 14.10.2021 22:50 # 0
D9lD9l_Lado 14.10.2021 22:50 # 0
D9lD9l_Lado 14.10.2021 22:51 # 0
D9lD9l_Lado 14.10.2021 22:51 # 0
guest6 01.09.2021 00:33 # 0
"Hash index cannot be used to create indexes on multiple columns"?
И есть по сути выбор:
* Многоколоночный, но btree
* Отдельный hash для выбора комментов и затем выбор поста по примари ключу
так?
Можно денормальизовать таблу, и хранить спец таблицу
* POST ID
* COMMEND ID
* COMMENT AUTHOR
* COMMENT TEXT
и генерить ее в фоне и по ней показывать всё
будет оч быстро
ISO 01.09.2021 00:39 # +2
Нам же не нужно выбрать просто 20 комментов, нам надо получить 20 самых свежих комментов (иначе пагинация работать не будет).
С этой задачей справляется мультиколоночный btree по (post_id, id) (ну или вместо id — create_time, не суть).
Фокус в том, что мультиколоночный b-tree индекс — это, по сути, многоуровневое дерево: в листе с фиксированным post_id находится ещё одно бинарное дерево поиска, построенное по id для всех комментов с этим post_id.
Запрос «from comments where post_id = 50 order by id desc limit 20;» с ним работает, условно говоря, так: сначала бинарным поиском находится поддерево с post_id=50, а потом это поддерево обходится в обратном порядке, в результате чего получаются записи, упорядоченные по «id desc» — вуаля, получили 20 комментов за O(logN).
bormand 01.09.2021 00:42 # 0
Я думаю там всё проще, и это одно дерево, лексикографически отсортированное по туплу из ключей.
ISO 01.09.2021 00:52 # 0
D9lD9l_Lado 14.10.2021 22:50 # 0
D9lD9l_Lado 14.10.2021 22:55 # 0
D9lD9l_Lado 14.10.2021 22:50 # 0
D9lD9l_Lado 14.10.2021 22:55 # 0
guest6 01.09.2021 00:42 # +3
а, теперь я всё понял.
Действительно, хешем можно выбрать только все комменты
И как только нам нужно "самые первые N" или "все больше N", то нам нужно дерево, а оно логарифм
D9lD9l_Lado 14.10.2021 22:50 # 0
D9lD9l_Lado 14.10.2021 22:55 # 0
D9lD9l_Lado 14.10.2021 22:50 # 0
D9lD9l_Lado 14.10.2021 22:55 # 0
D9lD9l_Lado 14.10.2021 22:50 # 0
D9lD9l_Lado 14.10.2021 22:55 # 0
D9lD9l_Lado 14.10.2021 22:51 # 0
D9lD9l_Lado 14.10.2021 22:51 # 0
D9lD9l_Lado 14.10.2021 22:51 # 0
D9lD9l_Lado 14.10.2021 22:51 # 0
D9lD9l_Lado 14.10.2021 22:51 # 0
D9lD9l_Lado 14.10.2021 22:51 # 0
D9lD9l_Lado 14.10.2021 22:51 # 0
ABryCTOBCKuu_nemyx 01.09.2021 04:45 # 0
JloJle4Ka 01.09.2021 05:02 # 0
ABryCTOBCKuu_nemyx 01.09.2021 05:06 # +1
Давно на него не заходил.
Кстати, движок сайта заколдованный: на всех, кто брался за его разработку, потом нападала тоска. После меня вообще ни одного желающего не осталось за него браться.
Самая популярная тема — про мудаков:
http://holywars.ru/comments/8734
ABryCTOBCKuu_nemyx 01.09.2021 05:13 # +1
D9lD9l_Lado 14.10.2021 22:50 # 0
D9lD9l_Lado 14.10.2021 22:55 # 0
ABryCTOBCKuu_nemyx 01.09.2021 05:36 # +3
http://holywars.ru/comments/12273
Темы про мудаков даже несколько раз перекатывали, правда, вручную. До перекатного петуха там никто не додумался.
Всё-таки «Гост» — гений.
D9lD9l_Lado 14.10.2021 22:50 # 0
D9lD9l_Lado 14.10.2021 22:55 # 0
D9lD9l_Lado 14.10.2021 22:50 # 0
D9lD9l_Lado 14.10.2021 22:55 # 0
ABryCTOBCKuu_nemyx 01.09.2021 05:18 # +2
Спойлер: узкое место точно не в двойных кавычках.
D9lD9l_Lado 14.10.2021 22:50 # 0
D9lD9l_Lado 14.10.2021 22:54 # 0
D9lD9l_Lado 14.10.2021 22:50 # 0
D9lD9l_Lado 14.10.2021 22:55 # 0
D9lD9l_Lado 14.10.2021 22:50 # 0
D9lD9l_Lado 14.10.2021 22:55 # 0
D9lD9l_Lado 14.10.2021 22:51 # 0
CHayT 31.08.2021 23:49 # +4
D9lD9l_Lado 14.10.2021 22:50 # 0
D9lD9l_Lado 14.10.2021 22:54 # 0
Desktop 01.09.2021 00:00 # +2
D9lD9l_Lado 14.10.2021 22:50 # 0
D9lD9l_Lado 14.10.2021 22:54 # 0
bormand 01.09.2021 00:11 # 0
DDoS'ит кто-то?
guest6 01.09.2021 00:14 # 0
D9lD9l_Lado 14.10.2021 22:50 # 0
D9lD9l_Lado 14.10.2021 22:54 # 0
D9lD9l_Lado 14.10.2021 22:50 # 0
D9lD9l_Lado 14.10.2021 22:54 # 0
D9lD9l_Lado 14.10.2021 22:51 # 0
ISO 01.09.2021 20:08 # 0
ISO 01.09.2021 20:08 # 0
Нормально.
D9lD9l_Lado 14.10.2021 22:50 # 0
D9lD9l_Lado 14.10.2021 22:54 # 0
D9lD9l_Lado 14.10.2021 22:50 # 0
D9lD9l_Lado 14.10.2021 22:54 # 0
3.14159265 01.09.2021 20:59 # 0
Мне нужное всякое говнецо потестить, а возможности отображать сток с оперделённого коммента нет.
И мотать джве недели до набега питузков с баграми далековато.
ISO 01.09.2021 21:02 # 0
P.S. Для сложного тестирования может быть проще развернуть локальную базу; полные дампы выкладываются ежедневно в https://gcode.space/db_dumps/.
3.14159265 01.09.2021 21:06 # 0
Там же ничего сложного: в SearchController для $scope.result применить isSpam.
Идея такая: если скрыльник не white list и срёт слишком часто, тогда нахуй.
bormand 01.09.2021 21:08 # 0
3.14159265 01.09.2021 21:10 # 0
А похуй. Подожду следующих каникул.
D9lD9l_Lado 14.10.2021 22:49 # 0
D9lD9l_Lado 14.10.2021 22:54 # 0
D9lD9l_Lado 14.10.2021 22:49 # 0
D9lD9l_Lado 14.10.2021 22:54 # 0
ISO 01.09.2021 21:13 # 0
Боюсь проблем с бесконечным троллингом. Он там очень кривой (квадратноколёсный велосипед), может сломаться.
3.14159265 01.09.2021 21:14 # 0
В этом проблема?
CEHT9I6PbCKuu_nemyx 01.09.2021 21:17 # +1
3.14159265 01.09.2021 21:30 # 0
D9lD9l_Lado 14.10.2021 22:49 # 0
D9lD9l_Lado 14.10.2021 22:54 # 0
D9lD9l_Lado 14.10.2021 22:49 # 0
D9lD9l_Lado 14.10.2021 22:54 # 0
ISO 01.09.2021 21:29 # +1
Предложение (в девтулзе на вкладке с «NGK»):
В res будет 10*20 последних комментов в формате стока, можно проверять на них фильтр. Если нужны старые — в строке после «else» поставь дату в формате «2021-09-01T19:50:58Z».
3.14159265 01.09.2021 21:34 # +2
Спасибо.
Однако уже решил проблему перебанив весь white list.
Тогда сразу идут питузы.
D9lD9l_Lado 14.10.2021 22:49 # 0
D9lD9l_Lado 14.10.2021 22:54 # 0
D9lD9l_Lado 14.10.2021 22:49 # 0
D9lD9l_Lado 14.10.2021 22:54 # 0
D9lD9l_Lado 14.10.2021 22:49 # 0
D9lD9l_Lado 14.10.2021 22:54 # 0
D9lD9l_Lado 14.10.2021 22:49 # 0
D9lD9l_Lado 14.10.2021 22:54 # 0
D9lD9l_Lado 14.10.2021 22:49 # 0
D9lD9l_Lado 14.10.2021 22:54 # 0
D9lD9l_Lado 14.10.2021 22:49 # 0
D9lD9l_Lado 14.10.2021 22:54 # 0
bormand 01.09.2021 21:22 # 0
Лол, гостя8 уже давно нет, а коммент остался. А, это вообще от оригинального гостя ещё.
D9lD9l_Lado 14.10.2021 22:49 # 0
D9lD9l_Lado 14.10.2021 22:54 # 0
D9lD9l_Lado 14.10.2021 22:50 # 0
D9lD9l_Lado 14.10.2021 22:54 # 0
3.14159265 01.09.2021 22:59 # 0
То есть пользы особой от этого массива нет.
Имея только один, первый коммент уёбка, мы не можем понять что это уёбок.
Только впоследствии, но после этого итератор уже не заходит в этот коммент.
return true для скрыльника уже не сделаешь.
Из-за этого на каждом коллбеке нужно пересканивать все предыдущие комментарии на предмет спама, т.к. появляются дополнительные данные.
Внутри нужно обходить пары циклом. Получается тот же O(n³) что и был раньше.
Ну ладно, сделал 2 прохода вроде уменьшил до O(n²) что тоже хуйня, но не такая лютая.
Как скрывать пока не придумал: comments.splice херит накопленную инфу.
Потому просто делаю vanished cmt.text = "";
Кому интересно: можете поиграться. У меня нет достаточно lookaheada чтобы заглянуть вперёд понять спам это или нет.
ISO 01.09.2021 23:06 # 0
3.14159265 01.09.2021 23:10 # 0
> проще это сделать на уровне БД
Это мой личный юзер-фильтр, зачем его навязывать?
А вдруг кому-то интересно как у Артура Артурбековича прошли дела в Лондоне?
D9lD9l_Lado 14.10.2021 22:49 # 0
D9lD9l_Lado 14.10.2021 22:54 # 0
D9lD9l_Lado 14.10.2021 22:49 # 0
D9lD9l_Lado 14.10.2021 22:54 # 0
D9lD9l_Lado 14.10.2021 22:49 # 0
D9lD9l_Lado 14.10.2021 22:54 # 0
guest6 06.09.2021 19:06 # +2
D9lD9l_Lado 14.10.2021 22:49 # 0
D9lD9l_Lado 14.10.2021 22:54 # 0
CEHT9I6PbCKuu_nemyx 09.09.2021 04:44 # +1
D9lD9l_Lado 14.10.2021 22:49 # 0
D9lD9l_Lado 14.10.2021 22:54 # 0
LinuxGovno 28.09.2021 23:51 # +1
LinuxGovno 28.09.2021 23:56 # +1
D9lD9l_Lado 14.10.2021 22:49 # 0
D9lD9l_Lado 14.10.2021 22:54 # 0
LinuxGovno 29.09.2021 23:46 # +1
D9lD9l_Lado 14.10.2021 22:49 # 0
D9lD9l_Lado 14.10.2021 22:54 # 0
ISO 30.09.2021 09:55 # +3
j123123 30.09.2021 10:16 # +1
В одном кирилическое "о", а в другом латинское "o"?
CEHT9I6PbCKuu_nemyx 30.09.2021 11:11 # +2
Пирназар Самолюбовер удалил «LinuxGovno» и «WindowsGovno» совсем. Не забанил, а вытер из базы. Потом зарегистрировали новых юзеров с теми же именами. У них новые цифровые айдишники.
У «ISO» на сервере есть говна из вебархива и новые говна. Поисковик не знает, какое говно искать (архивное или новое), когда в поиск вводят «LinuxGovno» или «WindowsGovno».
CEHT9I6PbCKuu_nemyx 30.09.2021 11:15 # 0
WindowsGovno: архивный 2566, новый 67968.
LinuxGovno: архивный 3774, новый 25697.
D9lD9l_Lado 14.10.2021 22:49 # 0
D9lD9l_Lado 14.10.2021 22:54 # 0
D9lD9l_Lado 14.10.2021 22:49 # 0
D9lD9l_Lado 14.10.2021 22:54 # 0
CEHT9I6PbCKuu_nemyx 30.09.2021 11:17 # +1
https://govnokod.ru/27549#comment669087
Некоторые не архивные, а действующие юзернеймы неуникальны, как оказалось.
Soul_re@ver 30.09.2021 11:25 # +1
CEHT9I6PbCKuu_nemyx 30.09.2021 11:36 # −1
D9lD9l_Lado 14.10.2021 22:49 # 0
D9lD9l_Lado 14.10.2021 22:54 # 0
D9lD9l_Lado 14.10.2021 22:49 # 0
D9lD9l_Lado 14.10.2021 22:54 # 0
D9lD9l_Lado 14.10.2021 22:49 # 0
D9lD9l_Lado 14.10.2021 22:54 # 0
D9lD9l_Lado 14.10.2021 22:49 # 0
D9lD9l_Lado 14.10.2021 22:54 # 0
D9lD9l_Lado 14.10.2021 22:49 # 0
D9lD9l_Lado 14.10.2021 22:54 # 0
ISO 02.10.2021 19:08 # 0
D9lD9l_Lado 14.10.2021 22:49 # 0
D9lD9l_Lado 14.10.2021 22:54 # 0
D9lD9l_Lado 14.10.2021 22:49 # 0
D9lD9l_Lado 14.10.2021 22:54 # 0
ISO 02.10.2021 19:48 # 0
JloJle4Ka 02.10.2021 20:03 # 0
D9lD9l_Lado 14.10.2021 22:49 # 0
D9lD9l_Lado 14.10.2021 22:54 # 0
bormand 02.10.2021 20:13 # 0
Что-то мне нямекает, что мне и остальным тоже...
Okm9I6PbCKuu_nemyx 02.10.2021 20:49 # 0
Okm9I6PbCKuu_nemyx 02.10.2021 21:48 # 0
Самые популярные почтовые домены в том списке:
1. rainmail.biz — домен продаётся (цену не объявляют, сволочи), поэтому пароли сменить нельзя.
2. gmail.com.
3. mail.ru.
4. yandex.ru.
5. mailinator.com — на этих сменить пароль можно, но, как я понял, это в основном учётки «Стертора», поэтому смысла нет.
6. lackmail.ru — этот сервис не работает, поэтому сменить пароль нельзя.
7. bk.ru.
8. rambler.ru.
9. list.ru.
10. ya.ru.
11. inbox.ru.
12. ukr.net.
В общем, у большинства учёток можно дёрнуть настоящего владельца (если он не уняк, конечно же), чтобы он сменил пароль.
D9lD9l_Lado 14.10.2021 22:49 # 0
D9lD9l_Lado 14.10.2021 22:54 # 0
D9lD9l_Lado 14.10.2021 22:49 # 0
D9lD9l_Lado 14.10.2021 22:54 # 0
ISO 02.10.2021 20:58 # 0
D9lD9l_Lado 14.10.2021 22:49 # 0
D9lD9l_Lado 14.10.2021 22:54 # 0
D9lD9l_Lado 14.10.2021 22:49 # 0
D9lD9l_Lado 14.10.2021 22:54 # 0
bagrinho 02.10.2021 21:09 # 0
ISO 02.10.2021 21:11 # 0
Хотя, в принципе, как-нибудь можно запилить и реальный список скомпроментированных учёток, но это надо чтоб кому-нибудь было не лень.
D9lD9l_Lado 14.10.2021 22:49 # 0
D9lD9l_Lado 14.10.2021 22:54 # 0
ObeseYoung 14.10.2021 19:39 # 0
Ататака index pollution/poisoning
D9lD9l_Lado 14.10.2021 22:49 # 0
D9lD9l_Lado 14.10.2021 22:54 # 0
D9lD9l_Lado 14.10.2021 22:49 # 0
D9lD9l_Lado 14.10.2021 22:54 # 0
D9lD9l_Lado 14.10.2021 22:49 # 0
D9lD9l_Lado 14.10.2021 22:54 # 0
guest6 14.10.2021 19:26 # 0
ObeseYoung 14.10.2021 19:29 # 0
Какой патентный тралинг )))
D9lD9l_Lado 14.10.2021 22:49 # 0
D9lD9l_Lado 14.10.2021 22:54 # 0
D9lD9l_Lado 14.10.2021 22:55 # 0
bormand 14.10.2021 19:56 # 0
D9lD9l_Lado 14.10.2021 22:49 # 0
D9lD9l_Lado 14.10.2021 22:55 # 0
D9lD9l_Lado 14.10.2021 22:54 # 0
D9lD9l_Lado 14.10.2021 22:55 # 0
D9lD9l_Lado 14.10.2021 22:55 # 0
rotoeb 14.10.2021 19:58 # 0
D9lD9l_Lado 14.10.2021 22:49 # 0
D9lD9l_Lado 14.10.2021 22:55 # 0
D9lD9l_Lado 14.10.2021 22:54 # 0
D9lD9l_Lado 14.10.2021 22:55 # 0
D9lD9l_Lado 14.10.2021 22:55 # 0
guest6 14.10.2021 22:25 # 0
CHayT 14.10.2021 22:30 # 0
D9lD9l_Lado 14.10.2021 22:49 # 0
D9lD9l_Lado 14.10.2021 22:55 # 0
D9lD9l_Lado 14.10.2021 22:54 # 0
D9lD9l_Lado 14.10.2021 22:55 # 0
D9lD9l_Lado 14.10.2021 22:55 # 0
guest6 14.10.2021 22:33 # 0
ObeseYoung 14.10.2021 22:38 # 0
D9lD9l_Lado 14.10.2021 22:49 # 0
D9lD9l_Lado 14.10.2021 22:55 # 0
D9lD9l_Lado 14.10.2021 22:54 # 0
D9lD9l_Lado 14.10.2021 22:55 # 0
D9lD9l_Lado 14.10.2021 22:55 # 0
D9lD9l_Lado 14.10.2021 22:49 # 0
D9lD9l_Lado 14.10.2021 22:55 # 0
D9lD9l_Lado 14.10.2021 22:54 # 0
D9lD9l_Lado 14.10.2021 22:55 # 0
D9lD9l_Lado 14.10.2021 22:55 # 0
D9lD9l_Lado 14.10.2021 22:49 # 0
D9lD9l_Lado 14.10.2021 22:55 # 0
D9lD9l_Lado 14.10.2021 22:54 # 0
D9lD9l_Lado 14.10.2021 22:55 # 0
D9lD9l_Lado 14.10.2021 22:55 # 0
D9lD9l_Lado 14.10.2021 22:49 # 0
D9lD9l_Lado 14.10.2021 22:55 # 0
D9lD9l_Lado 14.10.2021 22:54 # 0
D9lD9l_Lado 14.10.2021 22:55 # 0
3arJlywka 14.10.2021 22:49 # 0
D9lD9l_Lado 14.10.2021 22:55 # 0
nepeKamHblu_nemyx 14.10.2021 22:52 # 0
https://govnokod.ru/27736
https://govnokod.xyz/_27736/
D9lD9l_Lado 14.10.2021 22:55 # 0
3arJlywka 14.10.2021 22:55 # 0
urpyHoK 17.05.2023 15:52 # 0
ru66oH4uk 17.05.2023 15:52 # 0
3oJloToy_xyeLL 17.05.2023 15:53 # 0
booratihno 17.05.2023 15:56 # 0
ru66oH4uk 17.05.2023 16:05 # 0
3oJloToy_xyeLL 17.05.2023 16:05 # 0
6a6yuH 17.05.2023 16:05 # 0
ru66oH4uk 17.05.2023 16:05 # 0
raMagPuJI 17.05.2023 16:05 # 0
6a6yuH 17.05.2023 16:05 # 0
ru66oH4uk 17.05.2023 18:22 # 0
OTCYTCTBYl0LLLuu_xyu 17.05.2023 18:22 # 0
MAKAKA 17.05.2023 18:22 # 0
MAPTbIwKA 17.05.2023 18:22 # 0
OTCYTCTBYl0LLLuu_xyu 17.05.2023 18:22 # 0
OTCYTCTBYl0LLLuu_xyu 17.05.2023 18:22 # 0
3oJloToy_xyeLL 17.05.2023 18:22 # 0
booratihno 17.05.2023 18:22 # 0
6a6yuH 17.05.2023 18:22 # 0
6oHo6o 17.05.2023 18:22 # 0
3oJloToy_xyeLL 17.05.2023 18:22 # 0
6a6yuH 17.05.2023 18:22 # 0
MAPTbIwKA 17.05.2023 18:23 # 0
MAKAKA 17.05.2023 18:23 # 0
ru66oH4uk 17.05.2023 18:23 # 0
OTCYTCTBYl0LLLuu_xyu 17.05.2023 18:23 # 0
MAKAKA 17.05.2023 18:27 # 0
ru66oH4uk 17.05.2023 18:27 # 0
PE3yC 17.05.2023 18:27 # 0
ru66oH4uk 17.05.2023 18:27 # 0
booratihno 17.05.2023 18:31 # 0
raMagPuJI 17.05.2023 18:31 # 0
urpyHoK 17.05.2023 18:31 # 0
YMHblu_nemyx 17.05.2023 18:31 # 0
6a6yuH 17.05.2023 18:31 # 0
6oHo6o 17.05.2023 18:31 # 0
booratihno 17.05.2023 18:31 # 0
6a6yuH 17.05.2023 18:42 # 0
PE3yC 17.05.2023 18:42 # 0
3oJloToy_xyeLL 20.05.2023 14:58 # 0
YMHblu_nemyx 21.05.2023 22:38 # 0
ru66oH4uk 21.05.2023 22:38 # 0
ru66oH4uk 21.05.2023 22:41 # 0
booratihno 21.05.2023 22:41 # 0
3oJloToy_xyeLL 21.05.2023 22:41 # 0
PE3yC 21.05.2023 22:44 # 0
PE3yC 21.05.2023 22:44 # 0
MAKAKA 21.05.2023 22:47 # 0
PE3yC 21.05.2023 22:47 # 0
urpyHoK 21.05.2023 22:47 # 0
3oJloToy_xyeLL 21.05.2023 22:50 # 0