Pull to refresh

Comments 104

Строим древо, каждую ветвь глубиной более 3х месаг подгружаем аяксом при нажатии. При подгрузке строить ответы не древовидно, а лентой. Если внутри ленты обсуждение снова расходиться на 2 ветки, то добавляем ещё 1 подобное Ajax развёртывание.

Если не ясно выразился сорри, поздно уже, мозг не сильно варит. Но идея в общем самому себе понравилась)
"Интенсивный диалог" превращать не в дерево, а в ленту. Иными словами - делать отступ только тогда, когда на сообщение более одного ответа.


Все проблемы это не решит, но движение сообщений на правый край сократится.
Спасибо, не знал, что такое уже есть :)
Я еще нигде не видел. :) Просто визуально воплотил идею.
О, я хоть что-то "изобрёл". Только наверняка такое уже где-то было (
Ну будем считать меня автором, а Вас воплотителем :)
В Paint? Или в чем?
В нем самом :)
Полезно знать. [Нажал плюсик рядом с вашим коментом]
Могу предложить ещё вариант. Не обязательно убирать отступ у комментарием большого уровня вложенности, достаточно подобрать величины отступов так, чтобы их сумма имела предел в допустимых границах. Комментарии не будут расплющиваться о правый край, но сохранится иерархия. Если поставить величины отступов в процентах и сделать возможность растягивать комментарии в ширину мышкой, то даже самые глубокие из них, если это необходимо, смогут быть выделены пользователем в правильной структуре для удобства чтения.
Мне кажется, такое воплощение оставит у пользователя ощущение хаоса и разлада. Все криво, косо, невпопад и непонятно, к какому комментарию относится. Тем более, если дискуссия плотная, то разница между блоками получится буквально в 0.5-1%, что на глаз совершенно не заметно. И опять он будет гадать - кто на что ответил.
Ну и, кроме того, лучше, чем давать пользователю возможность самому мышкой такскать комментарии (я не говорю о том, что не давать ему это сделать - если есть свободные программисты в проекте, то почему нет), а сделать наилучшее решение, то есть, чтобы только у самых привередливых пользователей возникла необходимость растаскивать комментарии.
Мой пост был дополнением к сказанному выше.Мне кажется уж лучше оставить хоть какой-то отступ, чем сливать последние комментарии в список.
Все криво, косо, невпопад и непонятно, к какому комментарию относится.
А вот с этим в корне не согласен :) Смотря как это реализуется в коде, вроде дерево с отступами ещё ни у кого не вызывало разлада.
Ну и, кроме того, лучше, чем давать пользователю возможность самому мышкой такскать комментарии
Я предлагаю дать возможность изменять ширину всей области комментарием, а не отдельных. А необходимость расстасскивать возникнет, действительно, только у привередливых, которым нужно проследить связи между глубокими комментариями. Да и к тому же, если вложенность до 5-7 уровней, то это и не понадобится :)
Если дискуссия очень большая (на 0.5-3 тыс. ответов), то это неудобно. При автоматической многократной подгрузке сильно тормозит браузер; если же разворачивать каждую ветку, чтобы её посмотреть — то замучаться можно.
Возможно, я слишком пристрастен из-за организации этого в связке ЖЖ + LJ-addons. Тем не менее, либо стоит усовершенствовать такой способ, либо найти иной.
читать обсуждение на 3 тысячи ответов - в любом случае замучаешься :)
Если там ещё и работает скрипт — то можно замучать и комп, если он неновый.
А постраничная навигация? Или вы хотите выдать все 3к комментов на 1 странице? оО
А так, как я предложил можно выдать просто по 30 ветвей на страницу
Иногда бывает удобнее загрузить единоразово все комментарии, чтобы потом не листать. Потом, если есть пагинация, то сложнее обсчитывать прямую ссылку на комментарий.

Выдать-то можно, только потом придётся их разворачивать. (: Хотя если читатель экономит траффик, то это неплохое решение.
В конце концов, это можно сделать опционально, и те, кто хочет, грузят коментарии сразу все целиком либо поветвлённо.
Для таких, как Вы я бы просто добавил кнопочку "Показывать все комментарии" и избавил Вас от мучений с постраничной навигацией :)

Просто я, например, не был бы рад, если бы открыл топик хабра чтобы почитать быстренько сам пост с мобильного дейвайса, а потом оказалось что там внизу ещё пару мегабайт комментариев догружает))))
Словом, нужно разрабатывать несколько решений. (:
Ага, только людей у которых терпения 3к комментов прочесть нужно ещё поискать :), я бы на 100-200 уже поругался и закрыл страницу :)
Иногда бывает больше 30-40% равномерно распределённых в тысячах осмысленных комментов) Хотя это редкость, кажется.
Внестри сортировку по рейтингу коммента, но некому наверное рейтинг ставить. Многим терпения не хватит читать всё и оценивать :)
Тогда могут появиться лакуны в смысле - многие не столь высоко оцененные комментарии дополняют и расширают ветвь беседы.
Не везде есть столько комментариев, на хабре я думаю такой метод был бы удобен.
На опеннете вон половину сообщений чтоб почитать - нужно кнопочку нажать. Так что подгрузка аяксом при нажатии раздражает. Как пользователь говорю :)

А на хабре блоки плохо читабельны, потому что их границы никак не выделяются. Имхо.
Кстати, как вариант. Если б эти деревья грузились сразу, но можно было бы их сворачивать - было бы лучше :) Опять же, имхо :)
Можно из загрузить все, а потом скрыть через JS.

ИМХО я думаю нельзя сразу под топиком показывать всё сразу в развёрнутом виде... Пусть пользователь сам решает нужно ли ему трафф економить или нет. Меня часто убивает скролл в браузере, когда информации для меня нужно минимум, а попасть по ползунку стаёт тяжело)))

Для тех, кто любит вчитаться просто кнопку добавить "Показать все"...
Я думаю, что существующие технологии позволяют делать легкораскрывающееся дерево комментов без постраничного разбиения.

Изначально все комменты свернуты. Можно развернуть лдин, можно ветвь.

Кроме этого у меня давно ходит идея сделать следующее:

Любое сообщение может быть легким движением руки «превращено» в чат, который будет сохраняться в этом сообщении. В Блогах такая возможность вряд ли бы пригодилась, а вот на форумах — очень возможно.
на digg.com посмотрите. Отличное решение по работе с комметариями.
выглядит круто, но например ваш коммент я бы на диге не увидел, ели бы не нажал реплаис
Мы говорим о то, чтобы увидеть мой личный комментарий или об удобстве обсуждений?

Обратите внимание на сортировки.
Чтобы не прикладывать линейку можно ограничить высоту дочернего блока комментариев и скролить его. А чтобы полоса скрола не напрягала глаз, показывать ее только при наведении мышки.
Можно попробовать поэкспериментировать с визуальным отображением связи (а-ля как дерево в проводнике Win), можно добавить ссылку для перехода на родителя данного камента.
Вроде закрепления заголовка таблицы в Экселе? Надо подумать...
Проблема лент заключается в том, что они выстраиваются исключительно хронологически, не делая привязки к родительскому комментарию. Соответственно можно постараться делать дерево с неизменной шириной - компромис между деревом и лентой. А вот чтоб не теряться в этом лесу комментариев можно во-первых делать всплывающую подсказку с родительским собщением, просто чтоб под мышкой всплывало, а во-вторых надо в каждом комментарии делать ссылку на дерево от первого, до именно этого комментария, так сказать путь от корня только до этой ветки. Таким образом в этом дереве не будет одноуровневых сообщений, и каждое последующее будет ответом на предыдущее.
Некторое преимущество цитирования в лентах - я могу в одном сообщении ответить на часть разных сообщений пользователя(лей), подводя некоторый итог. Постить в разные ветки объясняя одно и тоже не есть гуд.
кстати, хорошее замечание. можно бы предусмотреть возможность в новых комментах ставить ссылки на предыдущие. Причем, не только свои.
Это преимущество, когда вы пишете сообщение. Читать же это зачастую просто невозможно... (особенно, когда в сообщениях идут вложенные многократные цитирования, это ужас)
Долго думал, как организовать гибрид ленточных и древовидных комментов. Очень просто. У каждого коммента есть id, соответственно, для каждого коммента можно сохранить родительский id. Далее можно экспериментировать. Например, по умолчанию представлять обсуждение в виде ленты, но со ссылкой на родительский и дочерний (или как его назвать-то?) комментарий. Если какого-то из них нет - то и пес с ними. Если дочерних комментариев больше одного - ссылка открывает новую ленту, где отображаются все дочерние комментарии (ровно на один уровень).
Есть варианты. Можно добавить ссылки на ветки - тогда в виде ленты открывается отдельная ветка.
Еще можно сделать, чтобы текст камента всплывал при наведении курсора или нажатии ПКМ (Ajax). В этом есть один минус - за счет этого может быть меньше просмотров страниц. Зато время, проведенное на странице увеличится.
При таком способе организации комментариев очень важно прослеживать путь - вверху, например. Чтобы к главной ветке юзер мог вернуться не в n кликов, а всего в 1. Равно и на любой другой уровень вложенности.

Можно просто ветвить, но по наведению курсора или ПКМ показывать текст. оч удобно, между прочим. На kharkovforum.com всплывающая подсказка показывает текст первого сообщения темы при наведении на название самой темы в разделе.
UFO just landed and posted this here
Вот что я думаю по поводу дерева: каждая ветвь дерева - это уже отдельная тема разговора. Ее вполне можно рассматривать как новую тему. Т.е на форуме ветвь можно пихать в отдельный топик.
Пример: Разговор о еде
-арбуз
-банан
-кстати самые вкусные бананы привозят...
--да, правда, а я там недавно был!
---далее куча постов уже не о еде, а о том месте, откуда привозят бананы
Тут под ветвь "да, правда.." можно смело создать отдельный топик. Самый правильным способ создания дисскусий - лента, с очень продуманным цитированием. Потому что, по сути, каждая ветвь дерева - оффтоп. Для него надо создать отдельный топик и уже в нем писать. На хабре ветви используются главным образом как замены цитатам. Ведь не обязательно делать цитаты, как обрамляемые прямоугольником, куски текста. Можно делать ссылки на цитату или грузить цитаты AJAX'ом в раскрывающемся окошке. Цитаты - вполне адекватная замена ветвям. А вообще любую тему можно запутать в хлам, ведь понятливость темы зависит главным образом от того, кто ее ведет(не даром ведь есть модераторы).
Предложенный тобой способ очень трудно автоматизировать. А значит, это достаточно дорогое решение - человек должен модерировать темы и, если есть необходимость, "выселять" оффтоп в новые темы.

Но у модератора есть недостатки - он человек, так что может не успеть (к примеру, новая тема, переликающаяся с оффтопом в "текущей", создаст кто-нибудь другой, и тогда зря пропадет ветка), он не объективен, он может ошибаться.
Это не предложенный мной способ - это способ использующийся на форумах =) Вообще, наскока я понимаю, он используется довольно успешно. Вообще даже сами пользователи не любят офтопа, и он жестко карается правилами форума. Поэтому если кто-то хочет создать новую ветвь дискуссии, он просто создает новую тему. Все что не тянет на новую темы обсуждается в текущей, при этому это должно удовлетворять правилам форума и тематике топика. Просто на мой взгляд грамотная организация цитат и недопущение жесткого офтопа позволяет сворачивать древовидную структуру в ленту. Для форумов - лента самое подходящие решение. Вот например наше с тобой общение легко свести к цитатом даже на хабре.
Я представляю себе, как работает форум, спасибо :)
Я просто хочу указать, что способ "живой модератор" работает не идеально, а автоматизировать этот процесс очень трудно.
Но можно поэкспериментировать с делегированием самим пользователям возможности "отчленения" ветки в отдельную тему. Например N человек проголосовали за отделение, и оно отделилось...
А чтобы можно было найти, куда оно отделилось, на месте отрыва ветки стоит ссылка... что ли.
И так можно. Но вот не перегрузит ли это ui? Голосование за комментарий, ответить в комментарий (опционально: пожаловаться на спам, удалить, редактировать), проголосовать за вынесение комментария в отдельную ветку.

Короче, страшная каша может получиться. Или не получиться, зависит от дизайнера.
Главная беда километровых рассуждений в том что они "плавают"
Начали по теме, потом пошли офтопики, пошли коменты про офтопики и про то что харабракат добавить надо
Потом прибежали кармоопускатели, сказали чегонить плохое. Им опустили карму и высказались что они типа плохие..

Вывод - каждый километр можно разбить на несколько дистанций.
Возьмем пример харабра комента:
Комент либо написан на первом уровне вложенности и относиться либо к топику - либо к посту выше, но почемуто написан на первом уровне...
Комент написан под другой комент, коментуруя этот комент.
После чего разгорается флейм, в пределах этой ветки..

Как вариант - както занизить одиночные коменты первого уровня вложенности на которые нет ответов и вынести отдельно( в навигацию ) особо разросшиеся ветки.
Модератор\администратор при должном уровне сноровке и интерфейсе сделает это за 5 минут для бааафого топика.
Правда модеров на всех не хватит
Пока я набивал данный текст alexshelkov уже отметился со схожей мыслью..
Такс - TODO: добавить авторефреш коментам :)
Иногда и оффтопики так же интересны, как и основная тема. И совсем отрезать их от основной темы не всегда хорошо. (Вот например, в этом месте может начаться оффтопик на тему, отрезать ли оффтопики. И вобщем-то оффтоп этот может оказаться небезынтересным и довольно таки релевантным к основной теме)
Кто сказал что обрезать :)
Выносить в отдельную навигацию.
Если оперировать понятиями форума то следует представить топик как раздел где топиками являются "длинные" ветки.
А основной "треп" идет ниже..

Так например зайдя вот сюда под статьей над коментами мы бы увидели бы ссылку "to резать or not to резать" ведущий на эту вот ветку
еще можно разделять отдельные ветки дерева различными оттенками цвета, тогда каждая ветвь дискуссии будет иметь например свой цвет фона, а разветвление внутри этой дискуссии будут иметь фон оттенка того цвета.
Или пойти смотреть как работают IDE у программеров. Там тоже "строим" деревья. Есть сворачивание и линия слева вместо линейки.
Как вариант - показывать основную ветку, а ответвления оставлять свернутыми. При развертывании перемещать предыдущий уровень дерева влево в виде схематичных блоков, при наведении на которые можно показывать текст. При новых ответлениях слева будут несколько рядом блоков. Если обсуждение стало слишком глубоким то слева показывать только три последних уровня например. Вот только х.з как такое сделать :)
Мы просто сделали возможность переключения между видами, когда можно выбрать читать лентой или деревом. Если лентой- то соотв. идет анкер, на комментарий к которому идет ответ.
Хотя изначально был только древовидный форум, после покупки некоторых сайтов, на которых стоял phpbb, пришлось делать и ленту, дабы аборигены не взбунтовались.

Плюс еще есть так называемый комбинируемый вид, когда вверху есть дерево с обрезанными комментариями (начало сообщения без форматирования) при клике на который внизу показывается развернутая ветка.
Меня всегда смущали эти Re[0], Re[5] с одним заголовком. Поэтому есть какое-то неудобство пользования.
А так, в рамках задачи - да, неплохое решение.
Это просто привычка. Ты когда общаешься - не произносишь заголовок реплики вслух. Так и на форумах никто не пишет заголовки сообщениям.

Следовательно - надо как-то этот "заголовок" создавать, например, отрезая первый n символов сообщения.
Воистину общее информационное поле существует. Сегодня (7 июня) ровно в полночь думал над тем же вопросом. Писать на хабр не могу _сами_знаете_почему_, поэтому свои мысли отразил только в заметках.

Мысли такие
Действительно, ничего хорошего в существующем положении дел нет, что Вы хорошо выразили в посте - тут добавить нечего. Решение тут может быть только одно - отказаться от лент и деревьев в общепринятом понятии вообще. В пользу чего отказаться? Конечно же в пользу гибрида, объединяющего достонства лент и деревьев и не имеющего их недостатков. Только без яваскрипта такое решение существовать не может, поэтому должна быть html-версия (опять же список или дерево - тут уж ничего не попишешь).

Что нужно пользователю?
1. Видеть связь вопрос-ответы
2. Видеть цепочку обсуждения (длинный диалог) нечитабельной "лесенки", рвущей вёрстку
3. Не видеть мусора от троллей

для решения первой задачи - дерево лучший выход
второй пункт хорошо решен в гуглпрупс
третий пункт — хорошее решение на хабре, только троллей не только по карме бить, но и помечать в данном обсуждении как офтоп и опускать в них страницы в секцию, скрытую по умолчанию.

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

Возможно, это решение уже где-то есть, но я пока не видел.
По-моему, http://digg.com очень напоминает описанную тобой систему. Правда, комментарии в нем не выставляются лесенкой, но связь и так понятна. А так - скрытие низкорейтинговых постов, скрытие посторонних дискуссий есть.

З.Ы. Почитал твои комментарии, вроде как человек ты неплохой и уж точно не троль. Так что кинул плюс в карму, можешь теперь спокойно писать в свой блог.
ахда, еще присовокупить туда же голосование за оффтоп, чтобы офтопики "падали" вниз списка
А что если не привязываться к тому, что комменты должны идти обязательно в вертикальном направлении?!
Т.е. что если реализовать это допустим как сделали на Plurk.com...
Подробнее:
Каждый новый коммент размещается по горизонтали... начало соответственно слева и прокрутка такая же как на это сайте... Все ответы на какой либо коммент идет уже на уровень ниже и в принципе можно уже в вертикальном направлении (вниз от начального коммента)...
Можно это все и усовершенствовать... например так же как на plurk сделать временные интервалы, если посетителям интересно кто и когда комментирует...
В общем я думаю принцип примерно ясен... его можно додумать и получить вполне новое видение отображения комментариев!
Даже если их 500 или 5000 страница не будет ОГРОМНАЯ, а прокрутка такая, что ее не зацепишь мышкой! =)
Там по горизонтали идут не комменты, а самостоятельные "плюрки", то есть посты. Ответы (комменты) идут вертикально.
Я в курсе...
Но я же предлагаю сделать именно комменты в таком варианте!!!
Это добавит некоего шарма на ресурс, да и для многих людей удобства! А если это все нагрузить еще удобными опциями, поисками и тд, то выйдет очень даже неплохо! При условии, что не все комменты будут грузиться сразу, а только их часть (видимая), а остальные уже при прокрутке, то это ускорит начало процесса изучения...
Из того что попадалось наиболее продвинут был форум Кураева, где в ленточном варианте указывается кто кому на какой пост отвечает, а по опции открывается дерево, где видны графические связи (без самих текстов, т.е. это ближе всего собственно к дереву; тексты открываются по клику). Плюс в ленточном еще опция видеть новые комментарии внизу или вверху.
На мой взгляд, подход Хабра самый лучший и удобный. А вместо прикладывания линейки можно поставить курсор мыши к краю комментария и скроллить вверх.
Это то же самое. Вы не понимаете, что про линейку я иронично. А вот когда нужно скролить 50-150 сантиметров вверх (а потом еще и обратно), чтобы понять к чему написано определенное сообщение - это уже неудобно.


И так дальше... Как бы открывать новые комментарии после прочтения прошлых.
Обратите внимание на стрелочки. :-)
Задача решена не полностью.
Что делать, если много вложенных комментариев (жаркая дискуссия вокруг одного комментария)?
Спасибо за визуализацию, но сама идея изложена выше :)
* Что делать, если много вложенных комментариев (жаркая дискуссия вокруг одного комментария)

я имел ввиду, что комментарии придется плющить о правую сторону экрана;
А если я люблю читать в оффлайне? или хочу сохранить себе всю дискуссию "для потомков" ?
Или хочу сначала "пробежаться глазами"...
Хотя в этом случае можно полностью грузить все комментарии.
У древовидной структуры еще один недостаток есть: структура не передает времени появления комментария.
Выше отписал способ с учетом этого фактора!
Но не древовидная структура...
Я вот не могу с уверенностью сказать, насколько для читателя или участника дискуссии важно видеть хронологию.
Возможно кластеризации по времени с помощью цветокодирования будет достаточно.
Или возле комментария рисовать какой-то динамический символ (например полузаполненный диск часов) позволяющий различать комментарии различной степени давности... тут надо думать дальше
Собственно, а зачем это нужно знать? Для хронометража? Кто раньше ответил, того и тапки?
По-моему, вполне достаточно того, что видно, кто и на какой комментарий (мысль) ответил.
Коментарии к самой теме в зависимости от "+" и "-" выставленных пользователями и количества ответов на них выстраиваются после темы. Это убирает с глаз посты троллей и посты типа "Дайте кармы" - они будут висеть в самом дауне. Соответственно если комментарий умный и адекватный он идет в топ. Что бы коментарий стал первым учитывается так же количество ответов на него. Тоесть если к примеру есть коментарий +9 и у него 8 ответов и коментарий +8 у него 3 ответа - первый коментарий будет ближе к топу. Я думаю, что "+" или "-" можно вообщем приравнять к ответу. Так как это либо согласие, либо несогласие с автором коментария. И если к примеру есть коментарий у которого 100 ответов и -10 то вес его будет 90. Такой коммент тоже пойдет в топ. Все остальные комментарии, которые есть в обсуждении первого комента(простите за тафтологию) орагнизуются по такому же принципу.
Это - то что будет видеть пользователь, когда пойдет смотреть коментарии
http://www.picamatic.com/view/404865_example/
Это - то, что он увидит, когда захочет посмотреть ответы сначала в топовом коментарии, а потом нажмет на просмотр ответов к первому из топовых ответов
http://www.picamatic.com/view/404866_example2/

П.С. простите за кривость реализации :)
Ваше сообщение заставило меня задуматься о том, хорошо ли превращать чтение форума в "кликоманию", когда от пользователя постоянно требуются клики.
Точнее все зависит от направленности. Если тема сложная и интересная, а сообщения большие - ничего страшного, но "откликивать" каждой однострочный комментарий как-то не хочется.
По моим наблюдениям один маленький комментарий не вызовет интересного, большого обсуждения, и не получит большое количество кармы. Меня лично напрягает читать комментарии, когда там короткие фразы с соответственно малым количеством информации. А кому надо - увидит их в самом низу. Это ведь именно решение для нормальных ресурсов, а не для фраз типа первый нах и прочее.
Для начала нужно четко отделить "комментарий к комментарию", "ответ на комментарий" и "новый комментарий".
А) Комментарий и все ответы на него выводить лентой и сгруппировать. Можно даже отображать это как чат, а всю информацию о пользователях участвовавших в этой обсуждении, включая аватары, поместить под этой беседой, а ля "в дискуссии участвовали" =)
Б) Комментарии к комментариям выводить в виде дерева. Собственно, как сейчас на хабре выводятся ответы на комментарий.
В) Новый комментарий отделять от предыдущих.

Таким образом мы получим:
1) Увеличение отступа слева ТОЛЬКО при комментировании чего-либо
2) Выделение каждого комментария в самостоятельную единицу, а не часть потока. Будет легче переключаться с одного комментария и беседы им вызванной, на другой комментарий, другие споры и вопросы.
3) Наглядное отображение того к чему была сказана та или иная фраза
Воот. Процесс пошел =) Я думаю, мы совместными усилиями через неделю выдадим концепцию продвинутого форума. У меня начали появляться идеи.
По проблеме определения родительского сообщения я для себя решил клиентским Greasemonkey расширением, подсвечивающим родительское сообщение, пример (мышка наведена на сообщение "Матчасть пускай ждет...", просто на скриншотах не видна):
http://www.picamatic.com/view/405325_1/
http://www.picamatic.com/view/405326_2/
Лента нехорошая. Дерево нехорошее. Остается Граф! Ведь иногда очень хочется сказать что-то типа "вы, вы, и вот вы человек в красной кепочке, идите нафиг" :) В дереве это сделать просто не получится. В ленте возможно. На мой взгляд, лента очень удобна для постоянной дискуссии, когда общая тема в голове у всех участников, но для новичков она тяжеловата. А в дереве тоже тяжело разобраться, когда в параллельные ветви уходит одно и тоже обсуждение.
В общем, делаем граф, когда каждое новое сообщение можно хронологически связать с существующими ветками или выделить в новую, захватив с собой одно родительское сообщение.
По умолчанию показывать в виде облака сообщений с различной степенью детализации (чтобы понять картину обсуждений), по желанию пользователя можно развернуть сообщения по определенной тематике в ленту. При этом можно и объединять сообщения, подводя итоги, и разводить обсуждение на две ветви, и многое другое.
При плохой организации всё уйдет в кашу, если же пользователи стремятся поддерживать общение, должно получиться очень даже интересно.
Вот о сетеобразном представлении дискуссии я тоже задумывался, но так и не смог придумать, как это изобразить на экране. Но я планирую подумать в этом направлении.
Пока что мое воображение уносит меня вообще в виртуальную реальность, где структура дискуссии представляется в виде чего-то трехмерного, где ты летаешь между ветвями сообщений, где используются свето-цвето-формокодирования, и все это постоянно меняется, стараясь как можно полнее изложить посетителю все, что там есть. Но это технология далекого будущего )
Все же, как изобразить облако....
Вообще, есть различные алгоритмы отрисовки графов. Можно поискать общую информацию по словам "Визуализация графов".
Но для простоты можно просто нарисовать схематичную структуру дискуссии (чтобы еще и выглядело красиво) в виде квадратиков с линиями-связями. Дальше можно придумать различные варианты.
Простой - человек наводит на квадратик мышку, ему полностью разворачивается сообщение.
Чуть сложнее - человек выбирает первое и последние из интересующих сообщений и получает ленту по заданной тематике.
Еще вариант, человек читает сообщения в виде ленты, в момент развилки ему показываются все первые сообщения ветки. Он выбирает нужное и читает до следующей развилки. Дополнительно показывать что ветка сходится.
Например:
1. пост. Бананы дешевле яблок.
2. развилка: Яблоки вкуснее! | Бананы делают негры! | Такую страну загубили!
(тут пользователь думает, что ему дальше интересно, читать про вкусовые ощущения, про расовые предпочтения, или про политические игры с бананами ;) И читает дальше.

При этом где-то рядом должна витать это облако схема со стрелочкой - "вы здесь", чтобы потом быстро вернуться чтобы прочитать другую ветку.
Вспомнил, что есть такой распределенный проект Dimes - строит карту сети, он рисует подобные графы. Можно посмотреть скриншоты или попробовать. Если добавить масштабирование то можно красиво нарисовать. Т.е. получится такое симпатичное облако, в котором модератор может двигать ветки графически. Т.е. если завязалась отвлеченная дискуссия между двумя пользователями, он тащит её за хвост в сторону и всем видно, что тема это перпендикулярна общей ветви дискуссии. Облако можно нарисовать на флеше, Silverlight или хорошем Javasсript. Чтобы всё плавало и переливалось.
Т.е. получится такое симпатичное облако, в котором модератор может двигать ветки графически.
То бишь, механизм не будет полностью саморегулирующимся?
Я думаю автоматическим с возможной ручной корректировкой. Ибо в плоскости открывается много вариантов расположения сообщений, и часть из них можно закрепить в определенной позиции, чтобы подчеркнуть их статус. Естественно, автоматически тоже много чего можно добиться. Тут большой полет фантазии и математические алгоритмы для построения.
Лишь бы всё оставалось читаемо. (: Идея-то интересная.
Можно изобразить в формате mind map (при условии, что топик - какой-то вопрос, а обсуждение - поиск ответа). Тогда можно автоматически подцеплять комментарии (иногда будут косяки, но их можно разрешить править модератору руками)
И еще, раз уж зашла такая тема. Чуть-чуть в сторону, но просто тем, кто будет организовывать пейджинг рекоменую использовать растягивающуюся последнюю страницу. Например, стоит разбивка по 10 сообщений. А если сообщений 11? Зачем делать 2 страницы (показ рекламы - отдельная тема) ради одного лишнего сообщения. Я думаю сам пользователь с удовольствием прочитает лишнее сообщение и будет держать всю тему в голове. Ведь одно грустное сообщение на странице не радует, да и если хочется написать ответ (если предусмотрено), то опять - обычно надо возвращаться к последним двум-трем сообщениям чтобы их иметь ввиду. Т.е. 10 сообщений - 1 страница, 11 - тоже одна, 12 - одна, 13 - одна, и например 14 - две страницы 10+4. Не получаем грустных одиночных сообщений, и в общем-то сохраняем приемлемую разбивку.
Что касаемо веба - полностью поддерживаю такую идею!
Но если это wap... многие старые модели телефонов не могут отобразить слишком много символов... поэтому иногда ради "красоты" (чтобы не было одникого сообщения) мы можем пожертвовать пользователями, у которых большая страница просто не отобразится! =( Правда жизни!
WAP - это слишком специфическая и узкая тема. А раз она слишком специфическая, то и методы для нее должны быть соответствующими.
Вот идея насчет древовидной структуры:
с каждым ответвлением уменьшать размер шрифта и величину отступа. Вплоть до их схематичного отображения. Сделать интерфейс для изменения масштаба, который позволит увидеть ветвь беседы и размеры отступа. При чем корневые ветви беседы превращаются как бы в заглавие темы Т.е вся остальная часть дисскусии, при каком-то увеличение масштаба - скрывается, и это не должно быть незначительное изменение масштаба, а наоборот - значительное. Опять таки можно вернуться в обычный масштаб, и все становится прежним. При добавление нового поста в дерево как-то это показывать. Естественно можно ставить ссылки на ветви в заданном масштабе. Тут главное правильно подобрать параметры(размеры шрифтов и т.п.), но должно получится интересно и очень оригинально. Как вам?
Превратить курсор мыши во что-то вроде лупы? Веселая идея :)

Только очень трудно реализовать средствами html - ее на flash/silverlight надо делать. А с их средствами можно еще много каких фишек приделать :)
Я бы делал AJAX'ом, ну JS'ом в целом. Не люблю flash, а о silverlight я услышал совсем недавно и даже толком не знаю что это такое.
Ну у браузера других способов интерактивно изменять контент нет, кроме JS. Есть еще flash и java, конечно (из массовых), но java как-то сдает позиции в последнее время (по моим ощущениям, во всяком случае, я ее не видел уже давненько), а flash тебе не нравится.

Ну а лупу эмулировать в JS... Что-то мне подсказывает, что это не самая простая задача. Считай - ресайз картинок, шрифтов, правка css, чтобы перемещать контент, скрытие невидимых элементов... Короче, задача нетривиальная.
Ну понятно что не все так просто. Но вполне осуществимо. И я бы не делал лупу, а просто чето вроде Google Maps, токо без использования скрола(а то как листать страницу то).
Знаете... У меня есть такое чувство, что это "облако" или как там оно у нас будет, должно реагировать просто на движения мышлью. Мышь отползла от центра - и вместе с этим поехал в сторону весь контент, при этом возвращая курсор мыши к центру. Так можно бесскроллово навигировать по графу сообщений практически неограниченного размера. При этом области приближающиеся к краям можно делать уменьшающимся шрифтом.
Я не совсем это имел ввиду. Точнее даже совсем не это. Наоборот я хочу избавится от необходимости горизонтального скрола. Вот что я хочу:
-0, big
--1
--2
---2.1, small
---2.2, small
----2.2.1, small^2
-----2.2.1.1, small^3
------2.2.1.1.1, small^4
--3

0: начало топика, главное сообщение. Далее идут коменнты.
2.2.1.1.1: с этого момента тескт уже не видно. Поэтому отображаем его схематично. При изменение масштаба будем грузить его AJAX'om

Увеличим масштаб на 1:
-0, big^2
--1, big
--2, big
---2.1
---2.2
----2.2.1, small
-----2.2.1.1, small^2
------2.2.1.1.1, small^3
--3

2.2.1.1.1, надо догрузить текст AJAX'ом.

Увеличим еще на 1:
-2, big
--2.1
--2.2
---2.2.1, small
----2.2.1.1, small^2
-----2.2.1.1.1, small^3

2: стал как бы заглавием топика, при этом количество отступов уменьшилось. И мы избавились от эффекта big. Вложженость сообщения лекго определить по максштабу.

Главное - сделать систему так чтобы все параметры можно было легок изменять.
Появился вопрос.

Какая продолжительность сессии будет являться оптимальной при древовидной структуре (время после которого все новые сообщения в теме, после входа в нее, будут считаться прочитанными?). На Хабре это сколько? (Как я понял здесь все новые отмечены рамочкой - стоит обновить страницу все отмечается прочитанным). Или удобнее делать кнопку "отметить прочитанными"? Начнешь следить за обсуждением, но сразу все прочесть не успеваешь - хочешь вернуться (через час, два), а лента уже обновилась и не видно, где закончил.

Как сортировать новое от старого?
как я уже говорил, можно цветом отмечать.
8 градаций серого человек на глаз вполне хорошо отличит. И вот мы создаем логарифмическую шкалу времени... самое свежее - белое, до получаса - серее, до часа - еще серее, до двух часов - еще серее, потом 4, 8, 16 часов и т.д. (временные промежутки нужно подбирать в зависимости от интенсивности дискуссии)
Я понимаю, что мы все технари и сайт этот для компьютерщиков. Но, господа, человеческий мозг, в отличие от программы не приспособлен думать рекурсивно. Обычный человек читает все сверху вниз и бегать своим внимаем туда-сюда, как программный указатель по стеку не удобно. Кроме этого деревья способствуют отходам от главной темы и порождению локальных побочных дискусий между парой комментаторов.

В ленте нужно лишь сделать удобную систему цитирования (напр., выделить произвольный текст курсором и кликнуть куда-либо). Цитирование всего сообщения конечно же неправильно и происходит исключительно только там, где разработчики по своему недомыслию сами весь текст предыдущего сообшения по умолчанию подставляют как цитату.
Чем принципиально плохо цитирование. При чтении сообщения с цитатой читателю приходится читать (или хотя бы просматривать) и саму цитату. А ведь он этот текст уже читал в оригинальном сообщении. В итоге, приходится читать одно и то же по 2 раза. А если кто-то через 5 страниц ответит на чье-то сообщение с цитатой, то еще и назад придется отматывать, чтобы уловить контекст оригинального сообщения.
Это не значит, что от него надо категорически отказываться, но надо что-то решать.
В чем и суть цитаты, чтобы мотать назад не надо было (некорректное цитирование мы не рассматриваем). А вот в дереве как раз надо мотать каждый раз, когда ответ "уезжает", чтовы понять вообще о чем речь? Отвечаюший нисколько не озабочен, тем что его ответ будет находится двумя экранами ниже. А в ленте он это видит зарание и позаботится, чтобы его ответ выглядел корректно, а не пятью копейками непонятно к чему вставленными.

К тому же цитирование вообще нужно далеко не всегда, а лишь когда (1)оригинальный пост "уехал" на значительную дистанцию, и (2) последний пост затрагивает немного другую тему, чем нужно комментатору. По моему опыту в нормально текущем обсуждении цитирование очень краткое и появлется лишь где-то в каждом 5 посте.
Так вот же ж мозг и хочет изобрести такую структуру "форума", чтобы не нужно было ни читать лишнее по два раза, улавливая суть разговора из середины, ни прокручивать много. Тут идет творческий процесс =)
Sign up to leave a comment.

Articles

Change theme settings