Перейти к контенту

Как мы ломали

  • записи
    24
  • комментариев
    147
  • просмотра
    16 233

Дизайн vs Функционал


MiksIr

205 просмотров

Так уж получилось, что проектировщик интерфейса - он же PM проекта. В общем, спорить о чем-то по дизайну было бы сложно, но, к счастью, это не часто приходится делать. Некоторые идеи заставляют задуматься в оценке глобальности изменений по форуму, но, ИМХО, понятия "нельзя сделать" не существует. Сделать можно все и сложность тут - сделать это правильно и красиво.

Главная страница форума озадачила тем, что там 1. подфорумы выводятся по-разному (в каких-то категориях как обычно, строчками, а в каких-то в несколько столбцов), 2. сложная струкрута форума, т.е. много категорий, однако в навигаторе (строке вида "вы сейчас тут") вся эта цепочка не нужна нафиг и 3. нужно выводить "последнее сообщение" и для категорий... конечно, последнее соообщение из вложенных подфорумов.

Первый вопрос решился попроще, ибо разный вывод форумов нужен был только для главной. Как решился - уже никто вспомнить не может ;) Но, думаю, уровень влоенности тут использовался.

Для реализации 2 и 3 задачи были введены 2 дополнительных флага "Использовать в пути" и "Обновлять инфу о последнем посте". Теперь, когда кто-то написал сообщение, мы обновляет last_post не только в текщем форуме, но идем вверх по дереву и обновляем категории с этим флагом - при определнной оптимизации кол-во запросов в базу не изменилось ;) А флаг использования названия форума/категории в пути нам пригодился и сейчас еще раз - для конструирования ЧПУ. Но о нем расскажу позже, когда допишем ;)

PS: Долго рассматривал diff, но там столько лишнего (работа по дизайну), то все же не буду его выкладывать. Зато обнаружил, что оптимизации апдейтов категорий последним сообщением - нет. Задачка... ;)

19 комментариев


Рекомендуемые комментарии

Теперь, когда кто-то написал сообщение, мы обновляет last_post не только в текщем форуме, но идем вверх по дереву и обновляем категории с этим флагом

Вы хотите сказать, что IPB этого сам не делает?

Ссылка на комментарий
Я смотрю вы большой любитель изобретать новые "велики".

Или я не прав? :)

О, а вы смотрю любитель однотипных шаблонных решений.

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

 

Если говорить более глобально о велосипедостроении, то даже велосипедов бывает много, разного качетсва и они продолжают придумываться. Что же говорить о вебостроительстве. Всегда стоит выбор - взять чужой велик и тюниговать его под свои задачи или делать свой велик с нуля. У каждого варианта в зависимости от желаемого результата есть цена - на разработку и на поддержку. Главное выбрать верный путь. Например, CMS мы делаем свою - слишком специфичны запросы. А форум мы свой _пока_ не делаем - дорабатываем готовое решение. "Пока" - потому что видя инвижн изнутри такое желание появляется, но ресурсов на это нет... возможно появятся в будущем.

Ссылка на комментарий
Вы хотите сказать, что IPB этого сам не делает?

Не готов сейчас ответить на этот вопрос ;)) Как минимум, он в категориях выше не хранит форум, где был этот пост совершен. Извлекать этот форум из топик_id накладно.

Ссылка на комментарий
Ну тогда я отвечу: делает ;) Да, forum_id не хранит, ну так это и не надо ему, да и вы вроде в споём посте такую задачу не озвучивали :)

Вы уверены? Можно ткнуть носом? По крайней мере ipb_2_3_3\upload\sources\classes\post\class_post.php функция pf_update_forum_and_stats делает апдейт только текущего форума.

Ссылка на комментарий
Согласен, это делается позже, при генерации дерева в class_forums, forums_calc_children(). Собственно мне кажется было бы логичнее не нагружать лишний раз БД для этого обновления(хоть и оптимизированно), а избавится от генерации дерева при каждом открытии страницы, его можно вполне пихать в память :) Но и против обновления всех вышележащих я не против на самом деле, главное не забыть пересчитать всё это при изменении структуры форумов и других админских действиях. А тут я чувствую diff и вправду будет большой :)
Ссылка на комментарий

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

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

Ссылка на комментарий

MiksIr

я не любитель шаблонных решений, но я так же и не велосипедо-строитель

 

То что ты про делал и так сделано в самом движке форума (про главную страничку)

 

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

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

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.