← kolan.mobi
     хоумпэйдж
 Главная

← ksoftware.ya.ru
     блог
 

Чтение форума

Сегодня за окном отвратная погода, и Федя как всегда пришел на работу позже всех. Ну почти всех, начальника еще нет, так что он не получит втык и у него есть пара минут (часов?) для того, чтобы полазить в интернете.

Посещение мастеров делфи для Феди - каждодневный ритуал. Он открывает клиент…

Какие у Феди при этом цели:

  • посмотреть что появилось нового на форуме. Причем все ему не интересно, а интересно только интересное для него :).
  • узнать как идут дела по поводу его вчерашнего вопроса о службе в армии в Прочее.
  • продолжить беседу по поводу дискрипторов окон в WinAPI, в которой участвовал вчера, чтобы его не сочли пустомелей.
  • Ответить на сообщения, которые были адресованы ему, правда он незнает где их искать.
  • выполнить все это быстро, потому, что скоро придет начальник.
  • держать все под контролем.
  • не чувствовать себя идиотом.

Задача

Сделать, чтобы Феди было легко читать форум.

Для этого Федя должен контролировать состояния веток. Мгновенно определять эти состояния. Быстро находить нужное и не терять старое.

Решение - система пометки веток и сообщений.

Подойдем к проблеме системно

Какие бывают состояние

Постоянные Переменные
Не видел
Видел
Не читал Есть новые
Читал Нет новых
Не писал
Писал
Не создавал
Создал

То есть всего 16 состояний.

Я это не видел и есть новые.
Я это видел и есть новые.
Я это не читал и есть новые. 
Я это читал и есть новые.
Я тут не писал и есть новые.   
Я тут писал и есть новые.      
Я этого не создавал и есть новые.
Я это создал и есть новые.     
Я это не видел и нет новых.   
Я это видел и нет новых.
Я это не читал и нет новых.   
Я это читал и нет новых.      
Я тут не писал и нет новых.   
Я тут писал и нет новых.      
Я этого не создавал и нет новых.
Я это создал и нет новых.     

Уфф… Может феди столько знать не нужно. Давайте разберём каждый в отдельности.

Сначала выбросим бессмысленные основный состояния.

Не видел    - полезно, можно увидеть что появилось совсем новенького.\\
Видел       - ну видел и видел.\\
Не читал    - раз знает, что не читал, значит видел как минимум.\\
Читал       - полезно, раз читал, значит заинтересовало.\\
Не писал    - значит или просто видел или читал, но написать не захотел.\\
Писал       - писал так писал, ессно перед этим надо было прочесть. Хотя многие этого не делают.\\
Не создавал - как минимум видел, а дальше хз.\\
Создал      - самое ценное - Федины темы.\\

Выходит раз не создавал, то что-то другое, значит это состояние ненужно. Видел и не читал одно и тоже, оставим видел. Если не писал, то или виде или читал или не видел - тоже не нужно.

Осталось:

Не видел    - полезно, можно увидеть что появилось совсем новенького.\\
Видел       - ну видел и видел.\\
Читал       - полезно, раз читал, значит заинтересовало.\\
Писал       - писал так писал, ессно перед этим надо было прочесть. Хотя многие этого не делают.\\
Создал      - самое ценное - Федины темы.\\

Из 16 осталось 10 - неплохо:

Я это не видел и есть новые.
Я это видел и есть новые.
Я это читал и есть новые.
Я тут писал и есть новые.      
Я это создал и есть новые.     
Я это не видел и нет новых.   
Я это видел и нет новых.
Я это читал и нет новых.      
Я тут писал и нет новых.      
Я это создал и нет новых.

Понятно, что если не видел, то там все новые, убираем.

Я это не видел
Я это видел и есть новые.
Я это читал и есть новые.
Я тут писал и есть новые.      
Я это создал и есть новые.     
Я это видел и нет новых.
Я это читал и нет новых.      
Я тут писал и нет новых.      
Я это создал и нет новых.

Теперь надо определить что такое новые. Новые это не те, что появились на сервере с прошлого обновления. Про сервер вообще надо забыть, его нет, а сообщения появляются с помощью заклинаний чёрной магии.

Так вот, новые - это те, что Федя не читал еще. То есть, если теме уже месяц, но федя не читал её, то для него там все новое. Заменяем «есть новые» на «есть не читанные».

Я это не видел
Я это видел и есть не читанные.
Я это читал и есть не читанные.
Я тут писал и есть не читанные.      
Я это создал и есть не читанные.     
Я это видел и нет не читанных.
Я это читал и нет не читанных.      
Я тут писал и нет не читанных.      
Я это создал и нет не читанных.

Видно, что во второй части от «нет не читанных» можно избавиться.

Я это не видел
Я это видел и есть не читанные.
Я это читал и есть не читанные.
Я тут писал и есть не читанные.      
Я это создал и есть не читанные.     
Я это видел.
Я это читал.      
Я тут писал.      
Я это создал.

Опять же если только видел, то значит там все не читанные. Наверно «нет не читанных» надо вернуть назад.

Итого:

Я это не видел и там все не читанные
Я это видел и там все не читанные.
Я это читал и есть не читанные.
Я тут писал и есть не читанные.      
Я это создал и есть не читанные.     
Я это видел и нет не читанных.
Я это читал и нет не читанных.      
Я тут писал и нет не читанных.      
Я это создал и нет не читанных.

Совсем изменения на сервере прятать не надо. Если Федя просто видел эту ветку, то там для него все новое. И так будет всегда, пока он её не прочтет. Но то, что на сервере появились новые сообщения показывает, что ветка активно обсуждается другими участниками форума, и возможно, она федю заинтересует.

Кстати «Я это видел и нет не читанных.» - абсурд. Если там нет не читанных, то это значит, что он уже читал.

Разобьем на группы:

Я это не видел и там все не читанные
Я это видел и там все не читанные.
Я это читал и есть не читанные.
Я это читал и нет не читанных.  
Я тут писал и есть не читанные.      
Я тут писал и нет не читанных.
Я это создал и есть не читанные.     
Я это создал и нет не читанных.  

Состояния веток (итог)

  • Новьё (Я это не видел и там все не читанные).
  • Неинтересное говно (Я это видел и там все не читанные).
  • Я это читал и есть не читанные.
  • Я это читал и нет не читанных.
  • Я тут писал и есть не читанные.
  • Я тут писал и нет не читанных.
  • Я это создал и есть не читанные.
  • Я это создал и нет не читанных.

Реализация

Состояний веток кодируются несколькими способами. Цвет, Стиль шрифта, иконка.

Важно, чтобы иконки были разные.