Удаление постов: как?
Задача: как сделать так, чтобы пользователи могли редактировать комментарий и при этом никого не травмировали.
1. Diff (ревизии и версии) не работает, честно. Он даже в вики не работает. Даже если бы он работал, никто не полезет сравнивать отредактированный комментарий с конечным. Более того — даже конечный комментарий не факт, что прочитают.
2. Любые методы «через N минут...» не работают, ибо N для всех разный, зависит от размера поста, времени твоей реакции, скорости связи, скорости дискуссии, времени реакции других пользователей.
3. Способ «не публиковать сразу, а публиковать через N минут, зато N минут давать редактировать» тоже не работает (ибо N), к тому же сводится к более простому и более раздражающему способу: публиковать только после предпросмотра. Это хороший способ избежать опечаток, кстати, то есть для предотвращения необходимости редактировать. С другой стороны, можно обойтись без фашизма и сделать опциональную кнопку «предпросмотр». Что тоже уже у многих есть.
4. Способ «давать дописывать только в конце» кажется правильным, но только на первый взгляд: функционал «дописывать в конце» на самом деле называется... «написать новый комментарий». А такой функционал уже есть.
5. Да, кстати, «исправить пост и поднять его наверх, чтобы видели» тоже описывается через функционал «удалить и написать заново».
6. Хотя, если уж на то пошло, удаление комментариев — тоже не безвредная процедура, по понятным причинам.
7. «Запретить исправлять более 10% символов, а так же добавлять и вычеркивать частицу „не“» — этот способ попахивает созданием универсальных антиматерных фильтров, которые, как известно, только все усугубляют. Модераторы — тоже не выход, те же фильтры, но человеческие, более дорогие и менее надежные.
А теперь — правильный ответ.
Конечно же, редактировать комментарии давать не нужно. И удалять тоже. Это фашизм, но для вашего же блага. Не сопротивляйтесь. Можно сделать опциональную (а вот это не фашизм) кнопку «предпросмотр».
Если же вам действительно очень-очень нужно дать редактировать, или у вас все-таки есть возможность удаления, то все проблемы с «подделкой» смысла решаются просто: подписью «этот пост редактировался автором».
То есть, вместо удаления поста, автор сможет переписать его, фактически, «удалить и написать новый», просто в другом интерфейсе, в виде «редактирования».
Комментарии эскпертов
Зона .РФ станет хорошим подспорьем для малограмотных пользователей Рунета — в первую очередь, для рекламщиков, сотрудников телевидения и чиновников Министерства образования.
Умри, а лучше не скажешь.
Малограмотные пользователи Рунета. Чиновники Министерства образования, бомжи, деклассированные элементы.
Почему это в «отзывы за» запихали — не понятно. Не распознали видимо иронии, ага.
Ну и да, зона .рф — редкое уебанство.
Метки, тэги и AJAX
На проекте появились тэги, возможность подписки на новые ролики выбранных пользователей, в проекте применены AJAX-технологии.В новой версии проекта Видео@Mail.Ru существенно расширен функционал и улучшен пользовательский интерфейс. Появилась возможность использования тэгов, широко применены AJAX-технологии.
Обновленный функционал проекта позволяет присваивать каждому ролику набор меток (тэгов), характеризующих данный ролик. Каждый пользователь может наблюдать облако меток в личном меню «Мои метки».
А еще там есть AJAX, метки и тэги. Тэги, метки и AJAX.
Тэги, метки и AJAX. Тэги, метки и AJAX.
И AJAX.
Тэги 2.0: сontribute or not!
В последнее время я работаю в Яндексе. Это такая интернет-компания, поэтому я время от времени думаю про всякие интернетовские вещи, типа вики, голосований или прочего.
Некоторые из этих мыслей не дают Яндексу неоспоримое конкурентное преимущество, поэтому не подпадают по NDA, но делают мир лучше, поэтому грех не поделиться. Особенно учитывая то, что на самом-то деле я не почетный член Yandex Labs и занимаюсь совсем другим.
Сегодня я долго и нудно думаю про тэги, ярлыки, категории, ключевые слова, — про эти штуки, которые пользователи добавляют к своим документам непонятно зачем и непонятно как.
Речь пойдет о тэгах на массовых сервисах.
Костя Коломеец придумал себе замечательный принцип — «сontribute or GTFO» и теперь носится с ним. Более емкую и понятную формулировку того же самого я видел у кого-то на сайте в виде disclaimer’а «Если ты нехороший человек, иди нахуй отсюда!».
Костя мечтатель, а принцип работает только в маленьких сплоченных группах («сектах»).
В реальности все не так. Все из вас наверняка видели онлайновые игрушки, типа «некое место, где все и каждый может составлять слова из букв». Этого зрелища хватает минут на пять, основные паттерны поведения понятны сразу. Даже если не брать случаи явного вандализма, коллективная работа и сontribute не выходит не только потому, что люди к ней не способны, но еще и потому, что способа договориться у них нет.
Тэги — наиболее уродское изобретение вебдваноля. Ровно по тем же причинам: предполагается, что люди «как масса» обладают неким интеллектом и способны действовать сообща.
Наглядный пример, почему весь этот вебдваноль не работает. Не глядя могу сказать, что одним из самых популярных тегов на яндекс.фотках будет тэг «я».Как легко догадаться, там должен быть изображен я. Но там почему-то изображен вовсе не я, а какой-то хуй в панамке.
(Смех в зале).
И если вдуматься, это не шутка.
Язык многозначен, уровень владения им у всех разный, все думают по-разному, а кто-то вообще не думает; правил заполнения тэгов нет никаких.
На выходе получается вполне наглядная картина: некий срез понимания того, как тэги нужно заполнять, помноженный на популярные темы и закрепленный в виде облака тэгов.
В этом, кстати, сакральная суть вебдваноля: взять много-много говна и снимать с него сливки. Все, что снизу, уже не найдет никто. Понятно, что тэг «кошки» на каком-нибудь фотохостинге будет мегапопулярен до такой степени, что «кошечками», «котятами» и «котами» можно вроде как и пренебречь.
На фотки.яндексе запрос «кошки минус коты» дает 88 тысяч фотографий, «коты минус кошки» — 18 тысяч. И пять тысяч «котят». Еще есть «cats» и «кошечки». Это всё одно и то же, но в Облаке Тэгов пользователю предлагают только «кошек». Процентов 30 теряется, но UGC — такая помойка, что все к подобному поведению привыкли.
Кто смог, тот всплыл, ага. При этом хорошо, что Яндекс ищет по тэгам с учетом форм слова, то есть «кошки» и «кошка» — это одно и то же. В других местах это совсем не так.
Но это детские примеры. Желающие могут угадать, какой тэг приписал автор своему посту «КАК ВЫТАСЧИТЬ КЛЕЩА».
Конечно же, «ПАРАЗИТЫ КЛЕЩ». Это один тэг.
Первые три мысли, которые возникают сразу:
1. Синонимы.
2. Поиск.
3. Конечно же, «паразиты / клещ».
Тэги против категорий.
Начнем с конца, «паразиты / клещ». Давно, до тэгов, были попытки создать всеобъемлющую классификацию зверей, птиц, гадов морских и всего, что есть в этом мире. Да, я говорю о древовидной классификации. Проблемы с ней были ровно те же: сотням людей приходилось понимать логику одного, который поместил, скажем, «компьютерные игры» в «компьютер / софт / игры», а не в «развлечения / игры / компьютерные».
Cовершенно очевидно, что игры должны быть и там и там, при этом это должны быть «одни и те же игры».
Продолжая мысль — те же «игры» могут быть и корнем (главной категорией) в одном случае, и подкатегорией — в другом. Очевидно, что нужна не древовидная структура, а скорей структура связей между категориями. Для умных — граф категорий с выделением корневых узлов. Очевидно, что категории должны отражать интересы пользователей, как тэги. Не на уровне «популярные категории выводятся жирным шрифтом», а на уровне «есть интерес — есть категория».
Что-то похожее сделано у меня на nudnik.ru: тэги+связи, важные тэги, аналог «корневой категории», выделяются руками.
Важный нюанс: эта система связывает уже существующие тэги, всеобъемлющую классификацию она создать не пытается.
Идеальная система тэгов на любом посещаемом сайте должна выглядеть так:
1. Пользователи вводят тэги в обычном порядке.
2. Модераторы берут существующие тэги и выстраивают между ними связи. Да-да, модераторы. Если вы считаете, что можно создать сайт с UGC без модераторов, то закройте эту страницу и всё забудьте.
При этом эта задача «модерации» тэгов гораздо более продуктивна, чем модерирование постов: новые тэги появляются не так часто, достаточно из связать один раз, и это будет работать надолго.
2.5. Одна из таких связей — несомненно, связь типа «синонимы». Достаточно один раз завязать всех «кошек» на одной слово — и всё, проблема с котами решена once and for all. При этом у синонимов должен быть один главный, вокруг которого растет гнездо. (Бесполезный факт: синонимы растут в гнездах).
Когда пользователь вводит неглавный синоним, этот синоним должен автоматически заменяться на главный. Да, это будет фрустировать пользователя, но окончательно решит проблему с двояким толкованием термина «киски».
3. После редактирования связей происходит автоматическая чистка тэгов в существующих «постах». Например, «cats, киски, кошки, животные» становятся просто «кошками». «Животные» убираются по понятным соображениям: «кошки / животные», то есть «кошки» входят в «животных», и при выборке по тэгу «животные» кошки будут показаны тоже.
Один из плюсов тэгов — в том, что одной записи можно поставить более одного тэга. Но этот функционал чаще приводит к «стрельбе наугад», когда пользователь пытается предугадать, какой синоним «кошек» все-таки нужно использовать, и в результате пишет их все, — и заодно придумывает новые.
После чистки же (в идеале) остаются только несвязанные между собой тэги, например, пост про ребенка и кошку будет иметь тэги, натурально, «ребенок» и «кошка».
4. Пользователю предлагается новый улучшенный интерфейс ввода тэгов, с автозаполнением, подсказками, блэкджеком и шлюхами.
Наиболее близка с идеалу вот эта реализация, только там это поле почему-то называется «Search Categories» и выбирать можно только одну категорию. Попробуйте ввести туда «cat».
5. Выборку по тэгам делаем так же, как выборку по древовидным категориям, то есть «в этом тэге и подтэгах».
Плюсы системы: модератору не надо заранее изобретать всеобъемлющие категории, всё делают пользователи сами. Модератору достаточно один раз связать и причесать уже готовые, введенные пользователями, тэги.
Тестирование: Я взял 10000+ популярных тэгов с fotki.yandex.ru и попробовал их классифицировать, используя мою систему c nudnik.ru.
Удалось разобрать 200 самых популярных тэгов, потом мне просто надоело. Самое главное, что мне не пришлось создавать ни одного нового тэга, пользователи действительно все сделали за меня, и все тэги уже имели привязанный к ним контент.
«Корневых» тэгов, из которых можно попасть в остальные, получилось всего 8 штук.
В качестве побочного эффекта сразу стало понятно, что интерфейс модерации можно сделать проще и удобней.
Итого: Для пользователей не меняется ничего (это важно), они все так же вводят тэги. Модераторы связывают тэги и указывают на ошибки («синонимы»). Эти ошибки больше не повторяются.
По выборке «животные» мы получаем всех животных, а не только тех, где пользователь соизволил указать «животные», а не конкретный их вид. Вместо страшного гиковского облака тэгов имеем более компактную и логически связанную псевдо-древоподобную навигацию.
Интерфейс.
Очень сильно хотелось написать прототип модераторского интерфейса и выложить в публичный доступ, но это было бы все то же «некое место, где все и каждый может составлять слова из букв», и ни к чему хорошему бы не привело.
Так что опишу словами.
Идеальный интерфейс для работы со словами — это... текстовый редактор. В нашем случае — поле ввода, типа textarea.
В несвязанном виде тэги имеют такой вид:
люди
я
дети
ню
природа
животные
домашние животные
кошки
кошечки
котенок
лошадь
Модератор берет и, натурально, работает с этим, как с текстовым файлом, используя простые правила, типа «знак „/“ является разделителем» и простые понятные механизмы, типа cut/paste.
После редактирования человеком текст выглядит примерно так:
люди / я
люди / дети
люди / ню
природа / животные
животные / домашние животные / кошки
кошки / котенок
животные / лошадь
кошечки
После нажатия на кнопку «ок» получаем уже связанные цепочки, отсортированные по алфавиту:
кошечки
люди / дети
люди / ню
люди / я
природа / животные / домашние животные / кошки / котенок
природа / животные / лошадь
Осталось придумать синтаксис для синонимов. Тут всё просто, главное слово — кошки:
кошки = кошечки = киски
Никто не мешает выводить синонимы в конце текста, понимать комментарии и прочие служебные символы. На выходе (в форме ввода) получаем текст, вида:
!люди / дети ## синонимы
кошки = кошечки = киски
## еще не имеют связи
динозавры## категории
!люди / ню
!люди / я
природа / животные / домашние животные / кошки / котенок
природа / животные / лошадь
Ну и мелочи — например, «!» в начале строки означает, что тэг действительно корневой (это вместо checkbox-а, ага), к тому же с сортировкой по алфавиту корневые тэги выводятся первыми. (Иногда надо связать несколько тэгов, но корневой тэг, который «достоин» попасть на морду сайта, например, выделить не получается).
Этот интерфейс в разы быстрей в работе, чем интерфейс с кнопочками, стрелочками и даже drag’n’drop-ами. Не говоря уже о поиске (Ctrl+F) и даже возможности банально впечатать нужное слово в нужном месте.
Стоимость разработки этого интерфейса стремится к нулю. Обработка данных тоже простая: режем на слова, сравниваем их с текущими тэгами, если есть «/» — проставляем связи.