Сравнение версий созданного пользователем и измененного контента - PullRequest
1 голос
/ 09 мая 2009

Я работаю над проектом по созданию онлайн-инструмента для совместной работы. Глядя на Википедию, я заметил, что сгенерированные пользователем итерации страницы можно легко сравнить друг с другом ; сравнение подчеркивает различия.

Концептуально, что мне нужно реализовать, чтобы сделать почти то же самое?

Ответы [ 2 ]

1 голос
/ 10 мая 2009

Составлено из полезного совета:

Самый простой способ - просто использовать любой из уже существующих вики-движков. Есть множество хороших вики-движков. Не изобретай велосипед.

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

0 голосов
/ 10 мая 2009

Вам потребуется версионное хранилище данных и алгоритм различий.

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

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

Выберите алгоритм сравнения, основанный на том, как вы храните ресурсы. Wikitext, как правило, аналогичен, поэтому, если пользователи его редактируют, имело бы смысл использовать diff различий, как стандартная утилита Unix diff. Если ресурсы представляют собой XML, возможно, вы захотите найти специфичный для XML алгоритм сравнения, чтобы пользователям было понятно, в чем различия.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...