Войти в систему

Home
    - Создать дневник
    - Написать в дневник
       - Подробный режим

LJ.Rossia.org
    - Новости сайта
    - Общие настройки
    - Sitemap
    - Оплата
    - ljr-fif

Редактировать...
    - Настройки
    - Список друзей
    - Дневник
    - Картинки
    - Пароль
    - Вид дневника

Сообщества

Настроить S2

Помощь
    - Забыли пароль?
    - FAQ
    - Тех. поддержка



Пишет Misha Verbitsky ([info]tiphareth)
@ 2015-11-09 14:44:00


Previous Entry  Add to memories!  Tell a Friend!  Next Entry
Настроение: sick
Entry tags:ljr

makaka
Список нагаженного макакою.
https://lj.rossia.org/stats.bml

    34675876265456.dreamwidth.org, 2015-11-09 17:12:24; 7 comments posted.
    4265678965776547.dreamwidth.org, 2015-11-09 16:57:13; 9 comments posted.
    lorp.dreamwidth.org, 2015-11-09 16:21:54; 7 comments posted.
    prol.dreamwidth.org, 2015-11-09 16:13:32; 4 comments posted.
    pet531.dreamwidth.org, 2015-11-09 15:35:41; 28 comments posted.
    nit.dreamwidth.org, 2015-11-09 15:18:49; 14 comments posted.
    musicmusic.dreamwidth.org, 2015-11-09 12:57:25; 46 comments posted.
    egorgibor.dreamwidth.org, 2015-11-09 12:02:54; 17 comments posted.
    bulgar.dreamwidth.org, 2015-11-09 09:38:53; 14 comments posted.
    volgota.dreamwidth.org, 2015-11-09 09:22:36; 8 comments posted.
    valgota.dreamwidth.org, 2015-11-09 08:55:51; 27 comments posted.
    yaroslavz.dreamwidth.org, 2015-11-09 01:23:11; 13 comments posted.
    parohod.dreamwidth.org, 2015-11-09 00:33:12; 9 comments posted.
    poezd.dreamwidth.org, 2015-11-09 00:02:17; 8 comments posted.
    petruhin.dreamwidth.org, 2015-11-08 23:33:50; 9 comments posted.
    perduhin.dreamwidth.org, 2015-11-08 23:10:29; 8 comments posted.
    pirduha.dreamwidth.org, 2015-11-08 23:02:12; 4 comments posted.
    petruha.dreamwidth.org, 2015-11-08 22:35:40; 15 comments posted.
    xpfre.dreamwidth.org, 2015-11-08 21:41:19; 10 comments posted.
    bubk.dreamwidth.org, 2015-11-08 20:05:36; 28 comments posted.
    bobob.dreamwidth.org, 2015-11-08 20:00:41
    verbitvkorobke.dreamwidth.org, 2015-11-08 19:04:06; 4 comments posted.
    alexlotov2.dreamwidth.org, 2015-11-08 17:20:20; 1 comments posted.
    hypernet.dreamwidth.org, 2015-11-08 16:18:18; 2 comments posted.
    mikhailverbitsky.dreamwidth.org, 2015-11-08 13:28:19; 1 comments posted.
    macaquer.dreamwidth.org, 2015-11-08 12:49:37; 2 comments posted.
    mx7.dreamwidth.org, 2015-11-08 11:38:09; 4 comments posted.
    cybernet.dreamwidth.org, 2015-11-08 00:01:13; 4 comments posted.
    hyperweb.dreamwidth.org, 2015-11-07 18:24:07; 37 comments posted.
    ultranet.dreamwidth.org, 2015-11-06 23:08:22; 1 comments posted.
    somename.dreamwidth.org, 2015-11-06 22:37:38; 1 comments posted.
    xyempa3b.dreamwidth.org, 2015-11-05 21:51:41; 41 comments posted.
    huemraz.dreamwidth.org, 2015-11-05 07:57:30; 1 comments posted.
    biber.dreamwidth.org, 2015-11-02 21:32:39; 2 comments posted.
    biberbiberbiberbiber.dreamwidth.org, 2015-11-02 19:42:41; 1 comments posted.
    tipharethsky2.dreamwidth.org, 2015-11-01 18:45:51; 2 comments posted.
    tipharethsky.dreamwidth.org, 2015-11-01 18:18:31; 1 comments posted.
    caco3.dreamwidth.org, 2015-10-31 22:55:37; 2 comments posted.
    ext2.dreamwidth.org, 2015-10-31 19:05:27; 1 comments posted.
    ext.dreamwidth.org, 2015-10-31 18:36:56; 1 comments posted.
    repressii.dreamwidth.org, 2015-10-30 23:33:49; 6 comments posted.
    kektop.dreamwidth.org, 2015-10-30 20:58:25; 3 comments posted.
    rossia.dreamwidth.org, 2015-10-30 16:09:06; 1 comments posted.
    bobobobobobobo.dreamwidth.org, 2015-10-30 15:47:53; 1 comments posted.
    ihlov.dreamwidth.org, 2015-10-30 15:28:20; 1 comments posted.
    markin.dreamwidth.org, 2015-10-30 14:03:37; 2 comments posted.
    paperdaemon.dreamwidth.org, 2015-10-29 21:30:03; 1 comments posted.
    pripeklo.dreamwidth.org, 2015-10-29 18:57:08; 26 comments posted.
    borodatenkii.dreamwidth.org, 2015-10-29 17:30:54; 1 comments posted.
    borodatenki.dreamwidth.org, 2015-10-29 17:08:42; 1 comments posted.
    macaque.dreamwidth.org, 2015-10-26 15:33:15; 6 comments posted.
    veniamin.dreamwidth.org, 2015-10-23 16:15:49; 15 comments posted.
    poper.dreamwidth.org, 2015-10-23 12:23:13; 7 comments posted.
    verbisky.dreamwidth.org, 2015-10-23 11:27:00; 6 comments posted.
    lookatmisha.dreamwidth.org, 2015-10-23 11:21:21
    kaledin1.dreamwidth.org, 2015-10-23 10:42:12; 6 comments posted.
    kaledin.dreamwidth.org, 2015-10-23 10:09:46; 7 comments posted.
    panduro.dreamwidth.org, 2015-10-23 08:42:10; 6 comments posted.
    ketmar.dreamwidth.org, 2015-10-21 19:42:32; 1 comments posted.
    makaksergeevich.dreamwidth.org, 2015-10-21 15:22:23; 10 comments posted.
    makakasergeevich.dreamwidth.org, 2015-10-21 13:54:11; 19 comments posted.


Сначала там были пустые экраны, по 32000
пустых строчек, потом диакритические знаки пачками,
теперь и то и другое.

Думаю, что пора лишать статуса OpenID, то есть
дать юзерам возможность закрыть OpenID целиком, либо скринить их.
Но это трудоемко, так что не сразу.

Привет


(Читать комментарии) - (Добавить комментарий)


[info]maxmornev
2015-11-10 00:09 (ссылка)
Спасибо! Кстати, а на LJR какая версия Перла бегает?

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]tiphareth
2015-11-10 00:14 (ссылка)
5.12
но apache 1.3 и modperl 1.30
(вот это полная жесть)

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]maxmornev
2015-11-10 00:24 (ссылка)
Ну что ж, будем мучить обезьяну.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]rednyrg721
2015-11-10 16:12 (ссылка)
Высоту коммента в строках неплохо было бы ограничить, имхо - вменяемых комментов размером в 32кб шириной в 1 символ не бывает же; если взять 40 символов в среднем, то восьмиста строк хватит, наверное (и то это 40 экранов почти).

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]tiphareth
2015-11-10 16:45 (ссылка)
а движок же все равно вставляет
в особо длинные строки

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]rednyrg721
2015-11-10 17:08 (ссылка)
может быть, общее количество этих тегов и ограничить (с учетом тех, что движок вставил)?

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]tiphareth
2015-11-10 18:58 (ссылка)
ограничить, в смысле, длину сообщения? можно, конечно, но та длина, которая есть,
она по просьбе юзеров такая, то есть вполне легитимные юзеры пострадают

а макака найдет другой способ гадить

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]rednyrg721
2015-11-10 19:03 (ссылка)
Нене, количество переводов строк, потому что 32000 строк для юзеров не нужно, наверное. Я думал сначала про количество строк, но оно от ширины экрана зависит и от места коммента в лесенке, стоит, наверное, просто теги br подсчитать, больше 800 - "коммент слишком большой".

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]tiphareth
2015-11-10 20:10 (ссылка)
разумно, да
здоровая идея

(Ответить) (Уровень выше)


[info]weary
2015-11-11 00:27 (ссылка)
>наверное, просто теги br подсчитать, больше 800 - "коммент слишком большой".

Тут можно ошибиться с цифрой, а из-за одного упрямого человека нехорошо ограничивать всех. Например, тут в посте около 200 br-ов: https://lj.rossia.org/users/hyperion/325500.html

При этом пост уже большой. То есть либо резать сильно (условные 200, причем всё равно размер будет на пару экранов), и тогда пострадают невиновные, либо резать мягко (условные 800), но тогда достаточно быстро опытным путём цифру найдут и начнут постить 799. Коммент, конечно, не пост, и там даже 200 уже странно смотрятся, но мало ли.

В идеале нужно как-то считать некий коэффициент, вроде X * (количество br) / (количество символов), и, если он получается большим, просто скринить коммент, а владелец журнала пусть дальше сам решает, что и как. А ещё лучше - несколько разных критериев. И опцией сделать, чтобы желающие могли не участвовать в этом. Заодно не будет надобности по-умолчанию всем скринить всех анонов, например.

Но тут есть много вопросов, нужно чтобы не страдала производительность, нужно придумать сами критерии и так далее.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]tiphareth
2015-11-11 00:48 (ссылка)
неплохо бы иметь короткий регексп на "больше 20 повторов последовательности, содержащей два \n", это убьет большую часть откровенного спама
не в состоянии написать такой регексп без получаса медитации,
а сейчас не до медитаций

(Ответить) (Уровень выше)


[info]tiphareth
2015-11-11 00:52 (ссылка)
на 20 подряд, это просто, а 20 раз где-то в тексте
впрочем, кажется, я и это могу
но не могу понять, как это дело удалить, и как добиться,
чтобы он был greedy

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]weary
2015-11-11 01:48 (ссылка)
>а 20 раз где-то в тексте

Похоже, что это не очень просто. Можно попробовать посчитать:

my $count = 0;
while ($data =~ /^\h*\n\h*\n/mg) { $count++ }
if ($count > 20) {
# ...
}

/m чтобы он работал по multiline string, \h - горизонтальный пробел (потому что \s ловит переводы строк). По идее должно ловить блоки по 2 и больше пустых строк или строк с одними пробелами/табами и считать их.

Если строки с пробелами не считать за пустые, то просто s/^\n\n/mg

На глаз работает, но могу ошибаться, регэкспы это то ещё дело.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]weary
2015-11-11 01:53 (ссылка)
>по 2 и больше

Ой, нет, всегда блоками по 2. То есть в \n\n\n\n\n\n будет $count = 3;

И, имхо, 20 это мало, кто-нибудь наверняка отбивает абзацы таким образом.

(Ответить) (Уровень выше)


[info]tiphareth
2015-11-11 00:53 (ссылка)
пожалуй, понимаю, как удалить, а чтоб он был greedy?
/g; это оно?

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]maxmornev
2015-11-11 01:12 (ссылка)
/g это global т.е. поиск всех включений шаблона в строке.

В каком смысле greedy? По идее, если backreferences и прочие хитрости не
используется, то будет бегать конечный автомат, эффективнее нельзя.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]tiphareth
2015-11-11 01:44 (ссылка)
ну типа - если там эта хуйня встречается не 20 раз, а 50, либо
там одна и та же последовательность 20 раз появляется как часть последовательности побольше, чтобы он все зажирал
http://stackoverflow.com/questions/2301285/what-do-lazy-and-greedy-mean-in-the-context-of-regular-expressions
чего я не понимаю - это кто в перле greedy, а кто нет,
и есть ли способ на это воздействовать

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]maxmornev
2015-11-11 02:01 (ссылка)
Ага, разобрался. Насколько помню, в Перле почти все по умолчанию greedy. Как включить lazy, не знаю.

(Ответить) (Уровень выше)


[info]maxmornev
2015-11-11 02:07 (ссылка)
Кстати, я подумал над задачей (определить, есть ли в строке подстрока, встречающаяся
более n раз), и что-то она мне не нравится. На вскидку сложность по времени O(n^2), а то и O(n^3),
где n --- число символов в строке. Тормозить будет страшно. Если записать это через перловые регексы,
то будет полный ад. Матчинг перлового регекса это NP-трудная задача в общем случае.

Т.е. вместо защиты от обезьяны у нас появится уязвимость к DDOS-атакам.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]maxmornev
2015-11-11 02:14 (ссылка)
> Тормозить будет страшно

Тут такой инженерный принцип: все, у чего сложность O(n^2) и хуже, на практике будет жрать тучу ресурсов.
Без расчета нагрузки такое лучше не добавлять.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]polytheme
2015-11-11 02:58 (ссылка)
а, кстати, сишную функцию у нас получится из перла дёрнуть ? вроде у него есть FFI, вопрос, насколько это всё глюкабельно.
на перле строить осмысленные структуры данных как-то стрёмно, у него же там за ширмой будет ад происходить с невменяемой асимптотикой.

сорри, адскую ошибку поправил

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]maxmornev
2015-11-11 03:06 (ссылка)
> вроде у него есть FFI

Угу. Я ни разу не пользовался, впрочем.

> у него же там за ширмой будет ад происходить с невменяемой асимптотикой

Не уверен --- такое лучше тестами выяснять. Те же хэши сделаны очень хорошо.

(Ответить) (Уровень выше)


[info]polytheme
2015-11-11 02:52 (ссылка)
не-не, вроде не n^2, а за линейное время, наука называется "сжатые суффиксные деревья", об этом написано в книжке Шеня, например, во втором издании "программирование - теоремы и задачи"

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]maxmornev
2015-11-11 03:16 (ссылка)
Неа, по-моему suffix tree не помогает --- мы же не знаем a priori, какую именно подстроку искать.
Или я что-то упускаю?

На всякий случай, сформулирую задачу аккуратнее:

Дана строка s и число n. Определить, существует ли подстрока s', такая, что s содержит
не менее n вхождений s'.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]polytheme
2015-11-11 03:34 (ссылка)
смотри, суффиксное дерево умеет решать за линейное время такую задачу: найти самую длинную подстроку строки, которая встречается дважды.

думаю, твоя задача должна быть где-то рядом.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]maxmornev
2015-11-11 03:46 (ссылка)
Ага, вижу. Крутизна!

(Нижнее ограничение --- ага.)

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]polytheme
2015-11-11 03:51 (ссылка)
за O(N^2), кстати, она делается через хеширование (можно за O(N^2) найти хеши всех подстрок и посмотреть, какой повторяется сколько надо раз).

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]maxmornev
2015-11-11 03:56 (ссылка)
Угу, я так и думал изначально.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]polytheme
2015-11-11 19:38 (ссылка)
В общем, я нашёл статью (2014 года), где за линейное время решается такая задача: назовём подстроку k-максимальной, если она встречается не менее k раз и не является подстрокой никакой другой подстроки, встречающейся минимум k раз. Найти _все_ максимальные подстроки.

Нашу задачу я бы переформулировал так: дано k, найти максимальную _длину_ подстроки, встречающейся как минимум k раз. Она проще, есть даже в книжке Седжвика по алгоритмам в качестве задачи (но там не указана асимптотика).

Единственное что раньше вечера пятницы я это не напишу, потому что у меня завтра и послезавтра адские лекции у студентов в духе "взял интеграл ? положи его на место !". Могу скинуть статью, если хочешь (но там overkill, конечно).

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]maxmornev
2015-11-12 00:57 (ссылка)
Я не уверен в эффективности этой меры --- зарубим повторения, и обезьяна
начнет спамить /dev/random'ом или пастой. А вот кат для комментов, который
тут [info]los поминает, может серьезно облегчить жизнь.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]tiphareth
2015-11-12 02:16 (ссылка)
а что такое "кат для комментов?" и зачем?
я честно не понимаю
если нужно запись без комментов, ее можно в ленте прочесть

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]plumphelmet
2015-11-12 02:37 (ссылка)
наверное что-то вроде автоматического lj-cut.
если коммент длиннее n, обрезать и добавить кнопку/ссылку скрыть/показать. как на ютубе и фейсбуке, например.

(Ответить) (Уровень выше)


[info]maxmornev
2015-11-12 02:46 (ссылка)
Я это так понимаю: в бар для каждого коммента можно добавить кнопку,
которая его скрывает/раскрывает. Мне кажется, так проще листать через
ветки, загаженные обезьяной, но я не настаиваю, конечно.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]tiphareth
2015-11-12 02:59 (ссылка)
а, понял
это было бы полезно, но лезть в UI я не умею
это самая мутная часть кода: там BML и жабаскрип
(по уму, от жабаскрипа надо было бы вообще избавляться,
но до этого точно не дойдет(

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]maxmornev
2015-11-12 03:04 (ссылка)
Я попробую тогда. Там ужас, S2 и пр. Без жабьего скрипа кнопку реализовать не получится, боюсь.

(Ответить) (Уровень выше)


[info]maxmornev
2015-11-12 05:27 (ссылка)
Придумал makeshift-решение. Оно совершенно не production --- сейчас оно будет работать только со
стилем твоего журнала (bluewhite), во все остальные стили нужный код придется добавлять отдельно.

Идея вот такая: в бар комментария после строчки (ссылка) добавим строчку (x), на x гиперссылка,
щелчок по которой сворачивает/разворачивает текст комментария.

К сожалению сам я его протестировать не могу --- git почему-то не подсасывает репозиторий.

Собственно, патч:

Файл livejournal/htdocs/talkread.bml

Вместо строчки 458:
$ret .= "<div id='cmtcontent$dtid'>$post->{body}</div>";

После строчки 417 добавить:
$ret .= " <font size='-1'>(<a href='javascript:togglecomment(\"$dtid\")'>x</a>)</font> ";

Файл local/cgi-bin/bml/scheme/bluewhite.look

После строчки 107:
<script language='javascript'>
function togglecomment(a) {
var e = document.getElementById("cmtcontent" + a).style;
if(e.display == "none") { e.display="" } else { e.display = "none"}
}
</script>

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]tiphareth
2015-11-13 14:28 (ссылка)
можно репозиторий скачать через cvs
http://cvs-ljr.lenin.ru/cgi-bin/viewvc.cgi/LJR/?view=tar
это даже проще

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]maxmornev
2015-11-14 05:18 (ссылка)
О, спасибо! Не сообразил.

(Ответить) (Уровень выше)


[info]weary
2015-11-12 23:30 (ссылка)
Вот очень простой вариант для BML-журналов, не требующий js-а, хотя и имеющий недостатки:

В /htdocs/bml/talkread.bml на 502-й строке меняем $ret .= $post->{'body'}; на http://pastebin.ca/3249803
(движок вырезает тэги в моём комменте, так что pastebin).

Подкручиваем max-height, если надо. Все комменты, занимающие больше 400px по высоте будут заворачиваться браузером в контейнер со скроллом. При желании можно ещё max-width добавить, но тут у всех мониторы разные. Не самое лучшее решение (меняет вёрстку, не убирает сам коммент), но читать легче станет. Предположу, что эту штуку можно обойти, конечно.

В теории можно такое воткнуть сразу везде (в том числе в S2), перенеся код куда-нибудь в cleanhtml, но там есть пара нюансов, над которыми надо подумать (нет данных о юзере, например). Да и криво смотрится.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]weary
2015-11-12 23:42 (ссылка)
Хотя нет, 400 это слишком жестоко, многие с s1 расстроятся, лучше под тысячу даже.

(Ответить) (Уровень выше)


[info]tiphareth
2015-11-13 14:14 (ссылка)
сделал, спасибо

(Ответить) (Уровень выше)


[info]tiphareth
2015-11-13 14:16 (ссылка)
проблема: она запихивает в окошко все подряд, не только анонима и openid

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]tiphareth
2015-11-13 14:28 (ссылка)
причем совершенно непонятно, почему

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]weary
2015-11-13 15:11 (ссылка)
Похоже потому, что я идиот, строки надо через eq сравнивать, а я через == делал.

По идее надо заменить $pu->{'journaltype'} == 'I' на $pu->{'journaltype'} eq 'I'

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]tiphareth
2015-11-14 03:09 (ссылка)
Спасибо! Вроде заработало, да

(Ответить) (Уровень выше)


[info]maxmornev
2015-11-14 05:19 (ссылка)
Congrats! Решение работает на отлично --- прямо сейчас наблюдаю.

(Ответить) (Уровень выше)


[info]weary
2015-11-12 02:43 (ссылка)
Если очень надо, то совсем втупую это делается юзерскриптом (хотя это не спасает от поломанной вёрстки и прочего).

Вот, например, для стиля данного журнала: https://dl.dropboxusercontent.com/s/vd3k9xprtunka2k/cmntcut.user.js

Но надо адаптировать под конкретную разметку, если хочется больше журналов. Ну или везде со style=mine ходить.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]maxmornev
2015-11-12 02:48 (ссылка)
Угу, у меня privoxy делает похожее --- вставляет кнопку для сворачивания.

(Ответить) (Уровень выше)


[info]polytheme
2015-11-12 02:44 (ссылка)
ага. тут мне пришла идея, обсужу-ка я её с кетмаром

(Ответить) (Уровень выше)


[info]polytheme
2015-11-11 03:35 (ссылка)
и да, там должно быть нижнее ограничение на длину подстроки снизу, конечно, иначе достаточно взять буквы. но думаю, это все равно получится за линейное сделать.

(Ответить) (Уровень выше)


[info]polytheme
2015-11-11 02:53 (ссылка)
кстати, с удовольствием бы это попробовал запрограммировать, никогда не писал

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]maxmornev
2015-11-11 02:54 (ссылка)
Супер! Ну вот, самое время попробовать.

(Ответить) (Уровень выше)


[info]weary
2015-11-11 03:09 (ссылка)
По поиску подстроки есть много извращённых алгоритмов, где обещают O(n) (с нюансами): https://en.wikipedia.org/wiki/String_searching_algorithm#Single_pattern_algorithms

Сходу не соображу, но подсчёт количества вхождений не должен давать прироста сложности.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]maxmornev
2015-11-11 03:17 (ссылка)
Пардон, я задачу сформулировал двусмысленно.

Вот тут более четко:
http://lj.rossia.org/users/tiphareth/1943201.html?thread=97377953#t97377953

(Ответить) (Уровень выше)


[info]maxmornev
2015-11-11 01:16 (ссылка)
А тьфу, пардон, тебе же нужно повторение одного и того же паттерна.
Тут конечным автоматом не обойдешься, т.к. язык не регулярный.

(Ответить) (Уровень выше)


[info]rednyrg721
2015-11-11 01:20 (ссылка)
Да, соглашусь, что коэффициент был бы лучше - можно ещё учесть, что часть коммента может быть и стеной текста без br, что добавляет сколько-то строк (для моего экрана (32000-800)/165 ~ 200).

В любом случае даже 800 лучше, чем 32000 - сложно поймать неспамовые комменты скроллом, когда тысячи экранов пустоты в посте.

Хотя он может тупо увеличить количество комментов, конечно (ну хоть в 40 раз больше потрудиться придется).

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]weary
2015-11-11 01:57 (ссылка)
>Хотя он может тупо увеличить количество комментов, конечно (ну хоть в 40 раз больше потрудиться придется).

Как тут ниже заметили, можно просто копипасту кидать. "Войну и Мир", например. И никакие алгоритмы с критериями это не возьмут, как ни старайся, да и не нужно это. Лучше пользователям прикрутить сворачивалку комментов через userscript-ы, а устранять в коде только самое нехорошее, вроде поломанной вёрстки, как тут уже было.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]rednyrg721
2015-11-11 02:25 (ссылка)
Ну да, но, по-моему, это не отменяет того, что очень высокие комменты используются практически только для атак (особенно с учетом того, что тут разрешенная длина коммента сравнительно большая).

А так только проверенные решения с других площадок: перенести часть модерации на юзеров с репутацией (пять минусов от разных юзеров = коллапс коммента, репорты), свежим юзерам без репутации давать мало прав (короткие комменты, растущую задержку между комментами, например). Но это всё чревато протестами, конечно :)

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]weary
2015-11-11 03:00 (ссылка)
Вообще это скорее организационный вопрос, чем технический. Найти способ заспамить можно даже с жесткими ограничениями, да и само понятие спама субъективно. Кому-то типичный гафуркотред с копипастой будет казаться спамом, а кому-то наоборот, только копипаста и будет казаться чем-то интересным, а скучная ругань о феминизме сойдёт за спам. И если решать по своему мнению, то незаметно для себя можно очень далеко зайти, это уже будет совсем не тот ресурс, который был вначале. Но это, думаю, и так очевидно.

В идеале каждый должен сам модерировать свой блог и решать, что ему надо, а что нет. Что делать с теми, кто не хочет/не может постоянно следить за блогом, но при этом хочет чтобы сам блог был - вообще не знаю, все решения какие-то сомнительные выходят. "Юзеры с репутацией" так замодерируют, что жить не захочется (надо всегда предполагать худшее, жизнь такая). Кнопка репорта, в принципе, лучше, так как большой разницы между админом, случайно зашедшим и удалившим коммент (как сейчас), и админом, который сделал это по репорту - нет, в обоих случаях вопрос "удалять - не удалять" остаётся на усмотрение админа.

Репутация юзеров может создать гнусную атмосферу, preaching to the choir и тому подобное. Зайдёшь, бывает, на какой-нибудь кармодрочерский ресурс, так аж читать противно. Оно и без репутации-то случается, а с ней на порядок хуже станет. Тем более что ресурсов со всем этим полно, причем более удобных чем тифаретник, смысл делать ещё один? Те же анонимные комментарии вообще почти везде пропали, и это, имхо, плохо.

Знаю точно, что стоит исправлять проблемы вроде возможности вставить кривую вёрстку, испортив всё, или уронить сервер. И переписать весь тот ад, конечно, надо, это и вопрос нагрузки на сервер, и вопрос безопасности. А вот про остальное не знаю. По своему опыту лишь скажу, что хорошего решения в плане организации онлайн-сообществ никогда не получается, как бы ты не старался, всегда кто-то будет недоволен, и будет недоволен вполне по делу.

(Ответить) (Уровень выше)


[info]ketmar
2015-11-11 11:54 (ссылка)
на самом деле макака очень тупая, почти со всей её сранью справляется хорошо обученый байес и немного паттернов. но если уж делать байес — то тогда так, чтобы каждый юзер мог его обучать сам. и всё это всё равно нагрузит сервер, поэтому выносить в нативный код. в общем, идей хороших у всех много, делать только некому. увы.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]weary
2015-11-11 14:32 (ссылка)
Байес тяжеловат будет, наверное, как его не делай. Можно будет большими документами ддосить, а хотя это и сейчас можно, конечно.

>в общем, идей хороших у всех много, делать только некому. увы.

Там ещё эти идеи не так просто реализовать, потому что сам код уж очень кривой. По-хорошему, для начала надо вообще всё переписать, а там и половина проблем решится, но это тем более некому, особенно если на перле.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]ketmar
2015-11-11 14:38 (ссылка)
>Байес тяжеловат будет, наверное, как его не делай.
да не, байес же на самом деле простой, как копейка. там всего‐то — побить текст на слова (фигня), посчитать их (фигня), обновить базу со счётчиками да формулой по словам пройтись (тоже, тащемта, фигня). фактически, не намного сложнее парзинга на предмет корректировки html.

ну, то есть, байесов много есть, конечно, но вот этот простой у меня вполне себе задачу исполняет. но он, конечно, вовсе даже не на перле, а на D, и вообще локальный.

>потому что сам код уж очень кривой
это да: мало того, что перл, так это ещё и ужасный говнокодный перл. варианта «оно росло‐росло, а потом выросло. блядь!»

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]maxbrown.livejournal.com
2015-11-12 01:15 (ссылка)
Байес - штука хорошая, но против спама, а не против флуда и вайпа.
Вы уверены, что хотите регулярно читать в Мишином дневничке фрагменты полного собрания сочинений Бездарьи Донцовой? Да ещё и разбитые для удобства чтения на строчки по 10 - 15 знаков.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]ketmar
2015-11-12 05:57 (ссылка)
дело в том, что макака неимоверно тупая, она всё делает руками, и не может в автопостинг. меня макака так пытается заебать уже довольно довно. итог этого — нервные срывы у макаки и несколько клацев на новополученых письмах, чтобы робот их выучил и в дальнейшем не пропускал. ей‐ей, не вижу никаких проблем: мусор чуть‐чуть повисит, а потом пропадает, как будто его и не было. всем глубоко похуй, макака в очередной раз рыдает в углу о том, что её труды смыли в унитаз и даже не обратили внимания.

(Ответить) (Уровень выше)


[info]ketmar
2015-11-12 05:59 (ссылка)
алсо, макака гадит одинаковыми залпами. поэтому вполне можно сделать решение вида «много юзеров отметили почти одинаковый камент как макаку — обучить байес‐для‐всех этому каменту, автоматически его скрывать».

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]polytheme
2015-11-12 17:27 (ссылка)
Интересно. Мы будем обучать макаку, и у неё будет расти колмогоровская сложность (вариант, что она вымрет, отбросим как неинтересный).
Со временем можно будет ввести по выбору капчу программистскую, написать что-нибудь на Хаскеле или шаблонную магию какую на C++ или D, или капчу математическую, посчитать дзета-функцию эллиптической кривой там, или найти какой-нибудь класс Чженя на расслоении на CP^n или там на Дель Пеццо.

Если действовать постепенно и аккуратно, можно будет показывать в дарвиновском музее - искусственный отбор ускоряет естественный, обезьяна эволюционировала в человека (пары лет должно хватить, думаю).

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]ketmar
2015-11-12 17:29 (ссылка)
нифига, макака тупорылая и необучаемая.

(Ответить) (Уровень выше)


[info]rednyrg721
2015-11-12 19:21 (ссылка)
https://xkcd.com/810/

:)

(Ответить) (Уровень выше)


(Читать комментарии) -