В интернете множество инструментов для обмена опытом, накопления базы знаний, но всем им присущи недостатки.
Базы знаний на движке Wiki посвящены обычно фундаментальным знаниям, таким как энциклопедии. Вы вряд ли найдете Wiki-базу по житейскому опыту, выращиванию овощей на даче и прочим мелким отраслям знаний.
Для систематизации мелких знаний используются форумы. Это вроде бы удобный инструмент. Если исключить из дискуссий флуд и офф-топы, форум – прекрасный инструмент для обмена опытом. Но информация в форумах достаточно плохо классифицирована. В одной ветке может обсуждаться одна или сразу несколько тем. Для обсуждения подтем редко создают отдельные ветки. В результате информация размыта по ветке. Накапливать и классифицировать факты в форуме довольно сложно. Скорее, форум – это место получения ответов на вопросы.
Сайты – хорошее место для получения знаний. Но статьи пишет один автор, остальные могут подключиться только при использовании вики. Однако при совместном творчестве требуются жесткие регламенты, иначе качество статьи страдает. Помимо этого, в дело часто вмешивается политика, какую-то информацию считают недостойной для отражения в статье, тем не менее, эта информация может быть полезной.
Я попытаюсь скрестить форумы, сайты и Wiki и посмотреть, что из этого получится. Далее я буду называть свою идею румом.
Рум – это сеть, состоящая из сообщений (post). Каждое сообщение имеет уникальный целочисленный номер - идентификатор (id) в базе данных.
У сообщения есть тема (goal) и содержание (body).
Тема может быть не заполнена. Но если тема заполнена, она должна быть уникальной. В теме могут содержаться пробелы, в словах не допускается смесь русских и латинских букв. Тема не может начинаться с цифры. Тема должна начинаться с буквы. В базе есть предопределенные темы, по принципу уникальности темы не могут совпадать с этими элементами.
В названии могут содержаться только буквы, пробел и цифры.
Заполненная тема далее может называться тегом.
Между любыми двумя сообщениями Родитель и Подчиненный может быть установлено отношение (link). Наличие отношения обозначает, что сообщение Подчиненный детализирует сообщение Родитель. Соответственно, если сообщение имеет двух родителей, то значит, оно детализирует два сообщения сразу.
Отношения между элементами А, В, и С, где А и В – родитель элемента С будем далее записывать как А, В – С.
Отношения хранятся в таблице с колонками parent (Родитель), id (Подчиненный).
Примеры отношений:
Отношения образуют сеть из сообщений.
Для этой сети определяются требования:
Румом пользуются пользователи (user) и анонимы.
В сообщении фиксируется автор(author), дата создания(created), дата последней правки (modified) и сделавший ее пользователь – редактор (editor).
История сообщений хранится в таблице history.
Для сортировки сообщений по популярности имеет смысл сделать возможность каждому пользователю делать оценку любого сообщения другого пользователя.
Вверху стартовой страницы находится поле для ввода поискового запроса. Рядом с ним находится кнопка искать.
Далее идет форма списка сообщений, найденных по поисковому запросу. По умолчанию при открытии главной страницы выполняется поисковый запрос «Корень» по всем корневым элементам рума.
Внизу расположена форма для ввода нового сообщения.
Поисковой запрос представлен в виде перечня искомых тегов, разделенных знаками плюс и минус. Плюс обозначает включать в результат поиска тег, минус – исключать. Начальные и конечные пробелы в теге игнорируются.
Пример:
Бесплатная программа - Архив – поиск не устаревших бесплатных программ.
Спортивный рекорд + Негр – спортивные рекорды, установленные неграми.
Анекдот про Вовочку – Пошлость – не пошлые анекдоты про
Вовочку.
Восклицательный знак обозначает исключение соседей в дереве. Это эквивалентно исключению родительского узла.
Пример:
Программы для командной строки + !Windows
– поиск программ для командной строки исключительно для Windows.
Что эквивалентно запросу: Программы для командной строки + Windows
– Операционные системы.
Если у темы не заполнено название, можно использовать для поиска номер. Любое число в запросе интерпретируется как номер сообщения.
Если в теге содержится символ подстановки *, то поисковый запрос ищет все сообщения, которые соответствуют указанному шаблону. Именно сообщения, а не потомки таких сообщений.
Пример:
Медицин* + Россия - найдет все теги, касающиеся медицины в России.
Значок доллара ($) обозначает,
что искать по шаблону нужно не в заголовке сообщения, а в теле сообщения.
Если в поисковом запросе указаны неправильные теги, они не исключаются из запроса, а выделяются знаком вопроса перед тегом.
Список сообщения выглядит в виде таблицы с колонками:
Сообщения-родители идут перед обычными сообщениями.
По умолчанию сообщения отсортированы по дате. Можно отсортировать сообщения по оценкам.
При щелчке по теме в новом окне открывается поисковый запрос по этой теме (с учетом текущего поискового запроса). Ели был открыт запрос А + В, а открывается тема С, будет выполнен запрос А + В + С.
Форма ввода сообщения используется для ввода нового сообщения.
Поле для ввода дополнительных тегов вверху формы используется для указания дополнительных родителей для сообщения. Само сообщение помещается в те группы, которые выбрал поисковый запрос. Заголовок поля – «Теги».
Поле заголовка используется для ввода заголовка сообщения.
Поле текста сообщения используется для ввода текста сообщения. В тексте сообщения можно использовать теги <b>,<s><u> и для них должны быть кнопки.
В группе радио-кнопок «Эмоция» можно указать, что сообщение является не конструктивным, а эмоциональным и выбрать одну из нескольких эмоций.
К сообщению можно прикрепить файл.
Форма редактирования аналогична форме ввода сообщения. В поле «Теги» выводятся все теги сообщения. Можно удалить ненужные.
Учитывая, что проект не коммерческий, на руме действуют ограничения по хранимым файлам. По крайней мере на первом этапе, пока не заработает) можно хранить только небольшие файлы
В главе рассмотрим различные примеры иерархий, соответственно, станет более наглядным преимущества рума по сравнению с обычными форумами, сайтами и вики.
Служебные сообщения используются в системных целях.
Варианты отношений:
Все новости и происшествия (далее события) привязываются к месту и времени и относятся к тегу Событие.
События удобно рассортировать по смысловым тегам, например:
Рум можно использовать для построения сети отзывов о товарах и выбора товаров.
Товар:
Магазин:
Отношения:
Рум можно использовать для накопления методик и приемов программирования.
Рум можно использовать для классификации идей. Это могут быть идеи, используемые для написания книг, идеи для рекламы и другие идеи.
Анекдоты – наиболее очевидная область для использования рума.
Жанр анекдота:
В руме можно классифицировать сценарии различных бесед – с друзьями, с клиентами и т.п.
Рум может быть весьма полезным политическим инструментом, для агрегации усилий единичных пользователей в единое волеизъявление. Это касается как сбора и накопления информации по политическим темам (компромат, досье по делам) так и координация акций.
Примеры используемых сообщений:
Событие:
Версия объяснения – для описания объяснения некоторой версии события.
События обычно датируются отношением к Дата.
К событию относятся действующие лица.
В системе существуют следующие уровни доступа:
Просматривать публичные ветки могут все. Непубличные ветки доступны только пользователям с соответствующим доступом.
Анонимы пользователи могут публиковать сообщения, подтверждая их вводом каптчи.
Новички должны подтверждать сообщения вводом каптчи.
Новички и Обычные могут публиковать сообщения в любую ветку, которую могут просматривать.
Редакторы могут редактировать доступные ветки.
У каждого сообщения есть поле уникального идентификатора (guid). Есть специальные служебные сообщения, которые используются в определенных смыслах в руме, например «Мнение», «Вопрос» и т.п.
В разделе описана реализация структуры таблиц базы данных.
Таблица posts:
Таблица users:
Таблица history – история сообщения:
Важность топика для статьи – lo, us, hi
Дата события – поле привязанное к ВСЁ
Поля, привязанные к веткам.
ВСЁ – корень всех объектов.
Каждый узел может быть или темой или комментарием с возможностью переквалификации.
У каждого узла может быть список родителей.
Коды до 50 000 зарезервированы под служебные поля.
Линки и картинки в теле статьи. С ограничением на текст картинки… Картинки переводятся в служебные поля…
Ближайший аналог РУМ – сайт ответов и вопросов Stack Overflow: http://stackoverflow.com/
Каждый вопрос может иметь несколько меток. Но это решение не оригинально. Оригинальность и продвижение вперед в том, что при отборе одной метки система выводит другие метки, которые встречаются вместе с этой меткой. Если выбрать еще одну метку, то система выдаст только те вопросы, которые содержат обе эти метки и выдаст список меток, которые встречаются с данными двумя.
Панель навигации по меткам выглядит так:
Вверху – текущие выбранные метки.
Внизу – связанные (related) метки.
URL запроса выглядит как перечисление всех выбранных меток:
http://stackoverflow.com/questions/tagged/javascript+css+html5+canvas
При выборе еще одной метки (printing) она добавляется в запрос и поиск детализируется (в данном случае до одного вопроса):
http://stackoverflow.com/questions/tagged/javascript+css+html5+canvas+printing
Windows : Windows 7, Windows XP, Windows NT, Windows Vista, Windows 95
Человек: Билл Гейтс, Иосиф Сталин, Адольф Гитлер
Профессия: Политик, Актер, Музыкант, Программист, Переводчик
Программа Instasize чтобы помещать картинку целиком в Инстаграмм.
Twitter и Инстаграмм
Недостаток Инстаграмма на андроиде – нельзя просто отвечать, потягивая иконки.
Недостатки электричек – не объявляют, на каких станциях не будет остановок.
Куда можно прятать деньги в поездках.
Общественный транспорт это: