Эти ники доступны только для админов)
Прикольно быть админом твича. Если кто тебе слово поперёк скажет, бан за розжиг.
> Прикольно быть админом твича. Если кто тебе слово поперёк скажет, бан
так точнее
так точнее
Прикольно быть админом. Если кто тебе слово поперёк скажет, бан
Прикольно
Бан.
Не повезло только Семену. Его имя тоже нельзя использовать.
Здесь пугает скорее то, что походу это какое то многоступенчатое условие в лучших традициях индусского кода, а не какой нибудь json с данными.
не верю что у них не проверка в цикле по данным из таблицы. это же при каждом обновлении списка код переписывать вместо добавления строки в таблицу.
да и строки странно выглядят - "ice____wallow" не пройдёт, но "ice_wallow" это уже совсем другая строка и спокойно проходит. хотя вообще хз как там функция LIKE прописана...
да и строки странно выглядят - "ice____wallow" не пройдёт, но "ice_wallow" это уже совсем другая строка и спокойно проходит. хотя вообще хз как там функция LIKE прописана...
Это SQL запрос... И страшненький.
Ну там слишком много вариантов, регулярку не захерачишь, вот выкручиваются как могут.
Не понятно, правда, зачем это делать на уровне базы, если можно проверять на фронте, ну или на худой конец на бэке.
Не понятно, правда, зачем это делать на уровне базы, если можно проверять на фронте, ну или на худой конец на бэке.
Возможно валидация таким образом сделана, что ничего нового не всунуть, и на фронте только с костылями. Но действительно, как то странно что именно в SQL запросе, хардкодом список размещен, когда куда логичнее сделать это функцией и данные тянуть с какого-нибудь массива
Добро пожаловать в легаси. Здесь можно встретить "чудесные" sql на тысячи строк.
Почему это "логичнее"? Я уверен, что с точки зрения производительности функция на лайках с массивом будет тупее самого кривого кешированного скл запроса
смотря сколько данных и какая железяка. Но сам факт, что проверка не сабселектом/джоином уже пиздец. Они каждый раз на беке дописывают стейтмент если добавляется еще один омоним нигры?
Сделать табличку для хранения логинов и джоинить ее. Две строчки кода получится
По какому условию? Джой с LIKE в условии будет печально работать (если вообще будет).
По уму надо сначала чистить логин (ну т.е. приводить к одному регистру все буквы, убирать _ и
пробелы, заменять 1 на i), а потом считать расстояние Левенштейна между введенным логином и всеми логинами из базы запрещенных логинов.
Ну и делать это на бэкэнде при регистрации нового пользователя или между моментом регистрации и отправкой на почту письма для подтверждения емейла.
По уму надо сначала чистить логин (ну т.е. приводить к одному регистру все буквы, убирать _ и
пробелы, заменять 1 на i), а потом считать расстояние Левенштейна между введенным логином и всеми логинами из базы запрещенных логинов.
Ну и делать это на бэкэнде при регистрации нового пользователя или между моментом регистрации и отправкой на почту письма для подтверждения емейла.
Это исключительно чтобы код сократить. еще если нужно один логин сравнить, то в where можно экзистом, но с лайками ты прав, ничего не сделаешь, работ будет медленно. А с преподготовкой про которую ты написал будет страдать точность.
join с like прекрасно работает, производительность не должна быть критичной, так как это выполняется в двух местах:
- на стороне пользователя можно "спокойно" прогрузить json, предварительно отвалидировать и отсылать только уже проверенные данные. Конечно если они решат запретить весь словарь, то отправляемый json будет весить пару Гб, но кажись тогда у платформы проблемы не с валидацией.
- тоже самое дублируется на серверной части. Но так-как регистрация вызывается не особо часто, просадки по этому методу не критичны. Данные из таблицы с "маркерами" вычитываются моментально без лишних локов, в отличии от той же проверки имени на уникальность (вот там намного веселее).
Так что лично я не вижу ни одной причине в этом дерьме из 100500 OR LIKE
- на стороне пользователя можно "спокойно" прогрузить json, предварительно отвалидировать и отсылать только уже проверенные данные. Конечно если они решат запретить весь словарь, то отправляемый json будет весить пару Гб, но кажись тогда у платформы проблемы не с валидацией.
- тоже самое дублируется на серверной части. Но так-как регистрация вызывается не особо часто, просадки по этому методу не критичны. Данные из таблицы с "маркерами" вычитываются моментально без лишних локов, в отличии от той же проверки имени на уникальность (вот там намного веселее).
Так что лично я не вижу ни одной причине в этом дерьме из 100500 OR LIKE
Это больше походе на запрос для проверки уже существующей базы пользователей, который разово прогонится для выявления несоответствующих логинов. Поэтому никто особенно не заморачивался над красивым кодом
бляяяяяяяяяя. вы че несете ?! вам высрали как и насколько компетентен твич, чего вам еще надо ?
Падажи. Покажи-ка как это сделать с вайлдкардами. У меня идея только с динамик sql.
Схуяли регулярку не захерачишь?
1) Это sql-запрос, очевидно как раз сформированный в цикле.
2) Делать запросы в БД из кода в цикле - это очень хреновая идея.
3) Очевидно, что они просто вносят логины в какой-то чёрный список по мере появления, а не пытаются предусмотреть все возможные варианты на все времена. То есть, да, со всеми этими логинами реально регались юзеры.
2) Делать запросы в БД из кода в цикле - это очень хреновая идея.
3) Очевидно, что они просто вносят логины в какой-то чёрный список по мере появления, а не пытаются предусмотреть все возможные варианты на все времена. То есть, да, со всеми этими логинами реально регались юзеры.
Самый разумный коммент )
Скорее всего так и есть, у них база black_words, может даже txt которую обновляют и небольшой билдер-генератор, который банально через foreach по шаблону генерит SQL запрос, далее уже копипастят в сурс или ложится куда надо.
Скорее всего так и есть, у них база black_words, может даже txt которую обновляют и небольшой билдер-генератор, который банально через foreach по шаблону генерит SQL запрос, далее уже копипастят в сурс или ложится куда надо.
То есть, можно запилить ботоферму, которая будет регистрировать тонны аккаунтов с "оскорбительными" никами - и пусть обосрутся? А сам генератор ников написать - дело 5 минут: набиваем текстовый файл со всякими Ben Dover, а потом втыкаем разделители в разных количествах и вариантах (-, _, =, + и т.д.), даже не обязательно по выражениям, а тупо рандомом.
Мыслишь в правильном направлении. Но нужен будет еще бот, который с этими никами будет заходить и светится где-то, чтобы юзеров банили. Думаю если просто мертворожденный акк будет висеть, то до модеров не дойдет это.
Ну ничто не мешает ту же ботоферму двухпрофильной сделать: сегодня они устраивают масс-регистрацию, а завтра лезут в чаты и трясут своими никнеймами, отправляя безобидное "hi, my dudes".
Делай!
Как вариант формировать промежуточный запрос. Т.е. иметь таблицу с шаблонами для проверки, одной выборкой сформировать условие для SQL запроса, а потом уже проверить по этому условию. Для ускорения процесса можно вынести в агент и уже где-то отдельно иметь сформированный запрос обновляя его раз в пол-часа. А потом просто выполнять через EXEC или его аналог.
Судя по наличию "ice___wallow" и ""ice___wall" все остальные варианты включая "ice_wallow" перечислены выше.
На скрине видно и '%ice____wallow%' и '%ice______wallow%'. Скорее всего просто когда они встречают какой то ник, они добавляют его в список. Там, я думаю, много дубликатов.
Была инфа что прогеррам пришлось сделать это потому что ЧЕРНЫЙ СПИСОК запрещенных слов какому-то оскорбленному менеджеру пришелся не по вкусу. Хз насколько это правда, но учитывая то что случилось с Master/Slave, я не буду удивлен
с Master/Slave вообще обидно вышло
А переименовать список в forbidden_list религия не позволяет, надо вот этоу фигню на говнокодить?
Видимо религия таких оскорбленных им не позволяет делать адекватно
Что пришлось сделать? Переименовали просто в blocklist, это конечно ересь та ещё. Но что поделать, такой прогрессивный мир нынче.
https://bugzilla.mozilla.org/show_bug.cgi?id=1571734
https://bugzilla.mozilla.org/show_bug.cgi?id=1571734
Это похоже на непосредственный sql запрос
У них получилось и у тебя получится
не любят на твиче пенсов...
Семён под запретом :(
У Semyon всё норм.
А вот чем им Хильтеры не угодили?
А вот чем им Хильтеры не угодили?
А в конце три скобки - поржали создатели фильтра.
Ну и че теперь делать Семанам всея Руси ?
Ехать в Слутск
Итак, значит если я Семён из Слуцка, у меня есть внуки (что делает меня дедушкой), и я недолюбливаю сборные команды Нигерии и Германии, то мне нельзя быть Dead Semen fom Slutsk, that hate Nig/Gers?
Ну утрировать не надо, ненавидеть немцев никто не запрещает.
научиться использовать букву ё?
То же что и челу с фамилией Хохлов, которые пытался сидеть в фейсбуке)
То же, что и Степанам - ехать в Тайланд
Менять фамилию на Свалов
Ну Джшлатт вроде как добился разбана.
что-то неграм там не рады
Расисты, хули.
интересно, можно ли использовать украинскую і вместо английской.
Поясните за "ice wall", что с этим то не так?
Cозвучие с «I swallow»
Понял, спасибо
то же что с eyes_wallow - созвучно с "i swallow"
Нагуглил схожеть c "I swallow"
А что в этом такого-то, ну глотает кто-то, это разве оскорбляет кого-то?
Подписывается на стримера "ледяная стена сперма", и в благодарность стримлер глотает сперму, спасиба, гыгыггяггы вот для того чтобы помешать пранкерам, создают такие списки.
Icewallowcome - произнеси вслух
ицевалловкоме. кто такой цевалло?
Ёр инглиш из гуд, комрад!
Ну я произнесу, это мой ник, я получится про себя скажу что глотаю всякое. Остальным не похуй ли? Или это защита от того чтобы камхора лёжа в бассейне не читала такие ники вслух?
Да
А кириллические символы там доступны для ввода? А то ж это простейшее решение ещё со времён начала нулевых, только тогда кириллицу в латиницу гнали, чтобы маты пихать.
HurrEP
nigler
Nigel Peter
Reggin?
Reggin please
Я один думаю что проще нейронку обучить? или у них сидит джун и набивает в такое полотно?
Я думаю нейронка всех перебанит включая админов твича.
И сделает это IRL
Хочешь оставить высококвалифицированного специалиста без работы?)
Опыт AI Dungeon говорит о том, что это плохая идея
Нет, опыт ai dungeon говорит о том что latitude долбаебы, прямым текстом обвинившие своих пользователей в педофили, дискредитировавшие себя, свой продукт и весь жанр и блочащие людей за личные заметки, прикрывая просмотр личных историй борьбой за мораль.
Опыт говорит что AI потом обвиняют в расизме и неправильной настройке. Поэтому есть специальные дисциплины по тому как искорежить веса нейронки чтобы она решала задачи "политкорректно", а не выводила то что лучше не идти в мексиканский ресторан чтобы не травануться.
https://habr.com/ru/company/microsoft/blog/336358/
https://habr.com/ru/company/microsoft/blog/336358/
opposite_to_white
Сделал себе ник White_Pawa, полет нормальный.
Щас быстро неженки абидятся, настучат и твой ник дополнит сии строки, да и сам бан схватишь
давно? судя по коду эта проверка происходит постфактум, возможно, раз в несколько дней, а не в момент создания ника. а ещё, я думаю, там проверяется есть ли хоть одна жалоба, неактивные ники могут себе хоть годами лежать, пока их никто не увидел и не оскорбился.
До этого был ник wh1te_pwr, продержался почти год
А чё там Майк Ястреб делает? Чому он запрещённый?
созвучно с my cock, собственно.
Людям по имени Дик вообще на публике теперь не появляться?)
полным именем писать
Like, very much like
не грусти. я плюсик тебе поставил.
"что может быть хуже чем откусить от яблока и найти внутри червяка?"
...найти там половинку червяка...
верхнюю или нижнюю?
без говна
Зашёл недавно в Team Fortress 2, пораковать спустя десяток лет. И какая же отдушина: и Нагибаторы есть, и Жопные угнетатели, и Твоя_мамка, причём как русскоязычные, так и англоязычные варианты. И поляки в войс-чате с их любимыми курвами...
Я чего-то не понимаю. Регулярку нельзя было ебануть?
так это ж SQL
И что? Нормальные бд умеют в регулярки в запросе.
Любая регулярка это дохуя машинного времени. Субдэшный лайк явно быстрее
Один лайк да.
Простыня лайков - точно нет. Регулярка быстрее.
Простыня лайков - точно нет. Регулярка быстрее.
Чтобы понимать, о чём я.
Регулярка вида "*(?:aaa|aab|bbb|ccc)*", которая нам тут нужна, компилируется в дерево поиска, с которым делается всего один проход по искомой строке.
SQL конструкция типа "like '%aaa%' or like '%aab%' or ..." потребует столько проходов, сколько этих like у нас имеется. Что будет радикально медленнее.
Регулярка вида "*(?:aaa|aab|bbb|ccc)*", которая нам тут нужна, компилируется в дерево поиска, с которым делается всего один проход по искомой строке.
SQL конструкция типа "like '%aaa%' or like '%aab%' or ..." потребует столько проходов, сколько этих like у нас имеется. Что будет радикально медленнее.
Мне кажется делегировать проверку на СУБД вообще не самая светлая мысль. Как минимум можно в синглтоновский сервис вычитать список, и дальше уже работать из памяти. Менятся это дело будет явно не часто, тупо скармливаем значение и ожидаем на выходе true/false. Ну это конечно если архитектура приложения не подразумевает исключительно прослойку между интерфейсом api и вызовами SP.
А уже на уровне кода можно развлекаться любыми средствами для оптимизации.
А уже на уровне кода можно развлекаться любыми средствами для оптимизации.
Согласен.
субд по ор и лайк построит префиксное дерево которое позволит не обходить все строки
будет быстрее на несколько порядков чем тупая проверка каждой строки
будет быстрее на несколько порядков чем тупая проверка каждой строки
Это если сумеет. Я сомневаюсь.
По регулярке точно сумеет, а вот по ор и лайк - вопрос.
По регулярке точно сумеет, а вот по ор и лайк - вопрос.
Ну...я так-то не берусь утверждать какой диалект в твиче, но в диалекте MySQL точно есть поддержка регулярок. Тип все равно ебань какая-то хранить каждый тип логина на бан, так слово hitler можно в самых разных вариациях представить.
Вполне вероятно там какой-нибудь построитель запросов.
Где передаётся список запрещённых слов.
В итоге работает примерно по следующему принципу:
Condition cond = new OrCondition();
for (String bannedWord : bannedWords)
{
cond.addCondition(new LikeCondition(bannedWord));
}
return cond;
Где передаётся список запрещённых слов.
В итоге работает примерно по следующему принципу:
Condition cond = new OrCondition();
for (String bannedWord : bannedWords)
{
cond.addCondition(new LikeCondition(bannedWord));
}
return cond;
нет по человечески там ) #troll
$banned_words_array = file ('bases/banned_words.txt');
foreach ($banned_words_array as $banned_word)
{
$sql_data = $sql_str . "OR ue.login LIKE '% ". trim ($banned_word). "%'" ."\n";
}
file_put_contents ('sql_queries/banned_words_sql.txt', $sql_data);
$banned_words_array = file ('bases/banned_words.txt');
foreach ($banned_words_array as $banned_word)
{
$sql_data = $sql_str . "OR ue.login LIKE '% ". trim ($banned_word). "%'" ."\n";
}
file_put_contents ('sql_queries/banned_words_sql.txt', $sql_data);
Выглядит как текст для ниггерской песни
Насколько можно верить этой картинке в интернете?
на 64,7%.
а почему вы интересуетесь?
а почему вы интересуетесь?
Нахер я это глянул?! Как? КАКСУКАБЛЯТЬНАХУЙ!!!!! Даже я 5 лет назад (если не больше), когда пытался влепить фильтр в свой 10 строчный проект, и то блядь додумался сделать парсер ника на выпиливание пробелов-подчеркиванией-дефисов и формирования "хеша" приводя цифры-буквы-комбинации к единому формату. И эти же идиоты лепят идиотские мат-фильтры, которые резут по самой примитивной маске, тем самым превращая обычный текст в гребаные ребусы из звездочек.
Результат диверсити при приёме на работу
я не спец в SQL, но, может там нет регулярок и выпиливаний пробелов...
Есть там регулярок. В энтот самый like, что на картинке, вполне можно регулярку пихать.
теперь бы придумать одну регулярку, которая проверяла разные варианты написания одновременно ниггера, гитлера и глотающих
Да заебали. На любом собеседовании: паттерны, подходы, СОЛИД, бест практисы. А на сливы кода посмотришь, так везде ифов напихают и сидят, радуются. Про проекты самих собеседователей я вообще молчу. "Да это легаси. Серега это написал, но он уже уволился". Ебучий Серега.
Результат отсутствия код ревью. Нуачо, тесты прошли же
Тесты? Ну да, наверное, дело хорошее. Но на них время нужно, а релиз завтра. Пусть как-нибудь будем писать. Когда перепишем приложение.
На код-ревью порой будут заебывать за название переменных, вместо проверки логики.
"Порой"? Ты сделал некоторое количество ошибок в слове "всегда".
ща ковыряю легаси, которое писалось с ревью.
та же хуйня, даже опечатки не отловило это ихнее ревью.
та же хуйня, даже опечатки не отловило это ихнее ревью.
и вообще, он это ещё на визуал бейсике писал, мы потом нашли конвертор кода в питон, но он кривой был, то прогнали сначала в лисп, а потом уже лисп в питон...
до слез, давай обнимемся
Кто в Pure играл? там есть txt со всевозможными комбинациями и трёхэтажными матюками на десятках языков.
Классика:
На реальном проде это будет результат работы какого-нибудь конструктора хранимых процедур на вебформах. Процедуры эти явно тягаются редко и в основном сидят в глубоком кэше, так что на первом месте удобство оператора и скорость реализации. Что об этом думает кудахтыч с джойреактора, кажется, никого не ебет
Токенизируем ник пользователя и дубасим в эластику, где хранятся плохие слова. Но да, реляционная база данных для хранения списков, разумеется, куда лучше.
самое смешное место на мудакторе - коменты мамкиных погромистов под постами с кодом
Чтобы написать коммент, необходимо залогиниться
Отличный комментарий!