В общих чертах, как создать доску записи, подобную 37signals? - PullRequest
2 голосов
/ 16 июня 2011

Я нахожусь на начальных этапах рельсов и хотел построить что-то вроде Доска объявлений 37Signals , просто чтобы я мог учиться и чувствовать себя "выполненным", но не знаю, с чего начать в следующих сегментах:

  1. это форматированный текст уценки хранится как необработанный текст в БД?
  2. - каждая редакция / версия сохранена как необработанная уценка текст в БД?
  3. самое главное как сделать мы находим различия в двух или больше версий? есть ли набор алгоритм для этого?

1 Ответ

1 голос
/ 16 июня 2011

Хотя я, очевидно, не могу ответить, как именно это реализовано на 37Signals, это мои мысли:

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

  2. Поскольку доски для записи могут стать довольно большими, вы, вероятно, сохраните diff (см. 3.) каждой версии вместе с полной последней версией. Таким образом, при отображении панели записи вы можете взять полную последнюю версию, и вам не придется собирать ее из diff-файлов, и в то же время вы экономите место, не сохраняя каждую ревизию в полной форме.

  3. Вы можете использовать diff , это то, что делается в vcs ', как svn и git, diff дает вам разницу между двумя текстовыми файлами: какие символы были изменены, вставлены и удален.

...