Логические операции над тегами
Господа админы, а отчего бы не добавить к системе подписки/блокировки тегов возможность использования логических выражений? Это бы было очень полезно для зарегистрированных пользователей.Вот вам простой пример (про себя любимого, конечно же!): мне нравится эротика, которую тут постят, но я не люблю аниме, поэтому данный тег у меня в блокировке. Однако, у него есть дочерний тег AnimeEroCosplay, который, разумеется, невидим тем, кто заблокировал у себя родительский. Сейчас с этим ничего не поделать: или не включай блокировку Anime и радуйся тому, что теперь 60% контента у тебя - бурятские порномультики, или откажись от любования очаровашками-косплеершами. Если бы работала система логических выражений, то решением проблемы была бы блокировка выражения Anime && !AnimeEroCosplay.
Пример номер 2 (снова о себе любимом): мне не нравится вселенная MLP, но гибрид ее и Вархаммера я обожаю (да-да, такой-то извращенец, не зря получил медальку Ересиарха). Решением было бы выражение MLP && !Warhammer40k.
Думаю, суть понятно изложил, буду признательным, если это введут.
Подробнее
SYMBOLS MEANINGS LOGICAL AND: true when all expression areT false otherwise F "II" LOGICAL OR: true when either expression is T false when both are F //|// NOT: negation ( T F) and vice-versa
dev,реактор,разработка,предложения,joyreactor,песочница
Нужна ли такая фича?
Да | |
|
630 (51.3%) |
Нет | |
|
97 (7.9%) |
У меня за такие вопросы во дворе убивают | |
|
502 (40.8%) |
Еще на тему
– если млп, майпони, ебучие-лошади -- условия через "или"
–– если ваха, вахаебы
––– подписаться
–– игнорить
– если /.*девушк.*/
–– подписаться
– игнорить -- все остальное, если так хочется
Реализация той же сложности, только выглядит не как логическое говно и не требует вывертов при пересечении приоритетов (афаик в сложных запросах они будут). Идея с регулярками в общем-то тоже хорошая, потому что теги многие ставят хуй пойми как.
Допустим ты игноришь 5 тегов: 1..5. Но в фендоме "A" ты разрешил 1..3, а в фендоме "B" – 2 и 5. Попробуй записать это в логической форме – тебе олимпиадная задачка – и я покажу, где ты ошибся. Императивная куда удобнее, потому что первое совпадение *завершает* принятие решения, а в логической нужно экранировать каждый вариант, что вообще нетривиально.
▲
▲▲
Если А
Если 1 2 3
Игнорить
Если Б
Если 2 5
Игнорить
Если 1 2 3 4 5
Игнорить
// остальное разрешено по дефолту
(или краткая форма с той же сутью)
Если А
Игнорить 1 2 3
Если Б
Игнорить 2 5
Игнорить 1 2 3 4 5
Кроме того, если сделать две логических формулы – одну для подписки и другую для игнора, то возникнет проблема приоритетов, что важнее – игнор или подписка – и в каких случаях кто победит.
Вообще, для каждого тега нужно составлять своё выражение, если тег имеет какие-то правила для игнорирования. Для твоего примера, список игнора будет выглядеть так:
1 && !B
2
3 && !B
4 && (!A || !B)
5 && !A
Обрати внимание на тег 4 - игнорить только если он вне фендомов A или B. В какой-то ситуации может потребоваться запись вида
4 && !A && !B
Что означает - игнорить 4 если он одновременно вне фендомов A и B. С императивной записью у тебя это получится?
А что касается приоритетов подписки и игнора, то, как мы ниже выяснили, игнор приоритетнее подписки. С этим проблем не видно. Более того, имея такой мощный инструмент игнора, можно обойтись вовсе без логических выражений для подписки.
Тут в другом камень преткновения. Как верно написал ОП, мало кому это надо, мало кто в этом стал бы разбираться (в чем угодно, будь то логические выражения или императивные цепочки условий). Стало быть, это никто не будет реализовывать.
Вы имхо зря думаете, что люди *вообще* понимают логику в противовес инструкциям, которые они ежедневно выполняют на работе или на кухне за плитой. Нанести, растереть, если жжет обратиться к врачу же. Этот подход также используется в любом сетевом фильтре/фаерволе, например.
зы: насчет подписки не уверен – я не подписан, но если бы был, значит хотел бы получать свой контент не копаясь в ленте.
Императив полезен там, где есть состояния. В нашем случае, теги - просто набор флагов. Тег либо есть, либо его нет. Всё можно свести к простейшей логике высказываний, со всеми вытекающими отсюда свойствами. И не лезть в предикаты. Совсем другое дело, что на реакторе уже имеются определенные правила взаимозависимости тегов - фендомы, сообщества. И, учитывая наличие такого рода множеств, сведение системы игнора тегов к булевой алгебре может сыграть злую шутку, тут я с тобой согласен.
Что касается обывателя, подчеркиваю - простейшие примеры из поста можно реализовать обоими методами с равным удобством, люди даже не заметят разницы. Особенно, если со стороны UI это будет реализовано как обычно. Если же углубляться и городить огород - а оно нам надо? =)
В скриптах я шарю, но, увы, только в серверной разработке на них. Даже с банальной работой на фронтенде никогда не сталкивался. Поэтому могу в кооперации с кем-то написать данную приблуду: я полностью описываю методы логики, которые получают на вход данные о картинках и возвращают результат, а кто-то другой пишет обработку самой страницы.
Сработает для решения задачи 1, а вот для второй уже нет.