piggymouse: (Default)
[personal profile] piggymouse

В ходе обсуждения идей Кукуца. Сохраняю текст своего коммента отдельно.

Сущность жопы в том, что в модели LJ френды и группы связаны как "многие-ко-многим" общего вида, а иногда хочется более сложных разбиений. В частности поэтому у меня не поднялась рука на чёткий feature spec для френд эксплорера. Мыслям было слишком просторно. А вообще-то хочется чего-то такого:

  • Группы входят в гипергруппы, причём группа принадлежит не более чем одной гипергруппе.
  • Френд не может входить в более чем одну группу, принадлежащую к одной и той же гипергруппе.

Таким образом, каждая гипергруппа является дизъюнктным (хотя, возможно, и не полным) разбиением множества френдов.

Безусловно, из-за политических ограничений информацию о гипергруппах придётся хранить локально, со всеми вытекающими неудобствами. Утешает то, что подобный механизм нужен только для удобной ручной работы по организации френдов, а все остальные механизмы LJ могут работать и без него.

Пример использования гипергрупп:

  • Гипергруппа "Происхождение" включает группы "Работа", "Родственники", "Собутыльники", "Не пойми кто".
  • Гипергруппа "Приоритет прочтения" включает группы "Читать всегда", "Читать часто", "Читать иногда", "Читать, если больше делать нечего".
  • Гипергруппа "Степень доверия" включает группы "Абсолютно доверяю", "Доверяю, но проверяю", "Продадут обязательно".
  • Ну, вот ещё пример… (Предупреждение: нецензурно!)

Update: вот куда лучше формулировка. Говорю же, хреновый я аналитик.


Disclaimer: У меня очень интересная жизнь!

Date: 2002-12-24 08:10 am (UTC)
From: [identity profile] vba.livejournal.com
Если бы LJ предоставлял более открытый интерфейс, то любые из вышеперечисленных, а также множество других хороших предложений можно было бы реализовать в LJ-клиенте. Сейчас под клиентом понимается только программа для добавления записей и простейшего администрирования, увы :(

Существует такое множество различных и взаимоисключающих предложений по развитию LJ, что единственным выходом развития LJ я вижу создание клиентов-браузеров на базе какого-нибудь "LiveJournal API".

Хотя, в принципе, это можно начать делать и сегодня...

Date: 2002-12-24 08:14 am (UTC)
From: [identity profile] piggymouse.livejournal.com

Ценность ЖЖ – в его населении (банальность, да), поэтому некоторую умеренную уёжищность его с технической точки зрения я лично ему легко прощаю. Что касается реализации предложений, подобных описанному, я специально оговариваю, что дополнительная информация будет храниться на клиенте.

Универсальный блог-сервер с открытым API… Ещё и JXTA какое-нибудь добавить… Не в этой, похоже, жизни. Вот аська, кстати, тоже ещё то уёжище.

Date: 2002-12-24 08:27 am (UTC)
From: [identity profile] vba.livejournal.com
Ценность ЖЖ – в его населении
Именно. Поэтому, на мой взгляд, единственное, чего ему не хватает - это открытого API. И все были бы счастливы :)

дополнительная информация будет храниться на клиенте
Это уже детали. Ее можно хранить на специальном сервере, чтобы не было привязки к машине.

Не в этой, похоже, жизни.
Увы, согласен.

Date: 2002-12-24 08:35 am (UTC)
From: [identity profile] piggymouse.livejournal.com
Кстати, уж дополнительную-то информацию, хранимую сервером и интерпретируемую клиентским софтом, реализовать даже в рамках нынешнего подхода легче лёгкого.

Date: 2002-12-24 09:29 am (UTC)
From: [identity profile] vba.livejournal.com
легче лёгкого
Так, может, вперед?

Я как-то даже начал писать такой клиент, и он даже немного работал :)

Date: 2002-12-24 10:24 pm (UTC)
From: [identity profile] piggymouse.livejournal.com

Я имел в виду, что какая-т поддержка сервера нужна. Типа HTTP cookies, только наоборот. Application-specific data associated with various LJ objects. То есть:

package com.livejournal.api;

public interface DataHolder {
  public void setData(String dataURI, Object cargo) throws Exception;
  public Object getData(String dataURI) throws Exception;
}

public class User … implements DataHolder { … }

public class Friend … implements DataHolder { … }

public class FriendGroup … implements DataHolder { … }

public class Post … implements DataHolder { … }

public class Comment … implements DataHolder { … }

public class MemorablePost … implements DataHolder { … }

Если не хранить данные на сервере, невозможно обеспечить client location transparency.

Date: 2002-12-24 11:06 pm (UTC)
From: [identity profile] vba.livejournal.com
Совершенно не обязательно хранить дополнительные данные на серверах LJ. Можно использовать другой (свой) сервер.

Так что действительно можно начинать прямо сейчас.

Date: 2002-12-24 08:16 am (UTC)
From: [identity profile] piggymouse.livejournal.com
А если мы соберёмся уходить в седьмую, извините, зону, за нами никто не пойдёт. И будем мы там сидеть как маленькая толпа уродов на journals.ru каких-нибудь.

Date: 2002-12-24 08:28 am (UTC)
From: [identity profile] vba.livejournal.com
в седьмую, извините, зону
А это, извините, что такое?

за нами никто не пойдёт
Я сам туда не пойду :)

Date: 2002-12-24 08:33 am (UTC)
From: [identity profile] piggymouse.livejournal.com

А это, извините, что такое?

Фидошное. Из-за каких-то забытых ныне проблем мятежники во главе с Завалишиным собирались организовывать зону 7 вместо региона 2:50. И то, и другое означало Россию. Типа автокефальная церковь и всё такое. Кончилось, естественно, ничем.

Date: 2002-12-24 12:41 pm (UTC)
From: [identity profile] 109.livejournal.com
прочитал про гипергруппы. верной тропинкой идёте, товарищ! но слишком узкой (тропинкой). почему гипергруппы обязательно эксклюзивны?

прочитал "куда лучше формулировку". совсем ботва. из неё следует только, что у френдов есть свойства (surprise! surprise!).

а вот как надо

Date: 2002-12-24 10:30 pm (UTC)
From: [identity profile] piggymouse.livejournal.com

Ты описываешь Общую Теорию Всего, а я пытаюсь понять, как нужно подпилить конкретный софт LJ, а ещё лучше – как, не подпиливая серверного софта, который всё равно Авва и Брэд хрен подпилят, приделать something helpful сбоку в качестве бантика. Данные, хранимые локально и отвязанные от всяческих кривых сервисов можно организовывать любыми outlinerами, метакаками и так далее. И фантазировать на эту тему. Кстати, интересно вы там перетираете. :)

Да, а в нынешнем LJ френды не имеют ни хера, поэтому всё это конечно же surprise, surprise. :)

Re:

Date: 2002-12-25 05:28 pm (UTC)
From: [identity profile] 109.livejournal.com
мы все трое обсуждаем, как приделать что-то сбоку, не трогая серверного софта. и я, на мой скромный :-) взгляд, предлагаю это сделать наименее криво. разница в трудозатратах же ничтожна, если вообще есть, и окупится первым же случаем, когда потребуется что-то, не предусмотренное более специфичным дизайном.

тем более, что не только разница в трудозатратах ничтожна, а и сами трудозатраты целиком.

Date: 2002-12-25 09:57 pm (UTC)
From: [identity profile] piggymouse.livejournal.com
Ну, у тебя там формулировки, специально к ЖЖ не привязанные. Я и решил, что ты обдумываешь аутлайнер общего вида. Насчёт трудозатрат – это ты Сёме скажи. :)

Re:

Date: 2002-12-26 07:21 am (UTC)
From: [identity profile] 109.livejournal.com
не, я обдумываю, как и сказал, общую теорию организации всего :-)

а аутлайнер и список френдов - конкретные приложения теории.

Date: 2002-12-24 10:33 pm (UTC)
From: [identity profile] piggymouse.livejournal.com
Гипергруппы эксклюзивны, потому что у меня в голове в рамках данной задачи каждый объект однозначно классифицируется в пределах одной классификации. Человек не имеет двух степеней доверия или интересности. Именно поэтому, кстати, признаки, причём имеющие линейную метрическую семантику, я счёл лучшей формулировкой.

Re:

Date: 2002-12-25 05:34 pm (UTC)
From: [identity profile] 109.livejournal.com
ок, то есть у тебя только два уровня - группы и гипергруппы, причём первые и вторые - разные сущности (хотя отличаются они только значением свойства exclusive=true/false). а если две гипергруппы захочется почему-нибудь объединить?

Date: 2002-12-25 10:14 pm (UTC)
From: [identity profile] piggymouse.livejournal.com

На самом деле я повёл себя, как поклонник сурового бога Yagni. Что мне прямо сейчас нужно – это атрибуты. Поэтому формулировка "через свойства" показалась мне более адекватной. На вопрос "supposing we want to move all LJ friends with trust level 0 to trust level 1…" я отвечу винни-пуховским "supposing we don't", потому что в моей реальной практике обращения с предметами операции типа "update T set a=1 where a=0" не встречаются. Из программистского опыта я знаю, что такие операции означают обычно изменения в метамодели – но это уже форс-мажор.

И вообще, я считаю, что аутлайнер общего вида – очень хорошая и нужная вещь, но для задач организации списка ЖЖ-френдов он чрезмерен. У тебя, скажем, 83 френда – какой уж тут yahoo.com?

Re:

Date: 2002-12-26 07:09 am (UTC)
From: [identity profile] 109.livejournal.com
И вообще, я считаю, что аутлайнер общего вида – очень хорошая и нужная вещь, но для задач организации списка ЖЖ-френдов он чрезмерен. У тебя, скажем, 83 френда – какой уж тут yahoo.com?

не, дело в том, что идея global directory, организованной так, как я изложил, давно витала в моей голове, и твой пост явился толчком к тому, чтобы изложить её письменно.

а дальше - идея не в применении аутлайнера к списку френдов, а применения способа организации - как к аутлайнеру, так и к списку френдов.

кстати, обрати внимание, что Чак так и не способен пока grasp the idea (если ты следишь за дискуссией). может, я слова неправильные употребляю? вот на твой взгляд, что я изложил неточно/непонятно?

Profile

piggymouse: (Default)
איש אי הכלבים

April 2011

S M T W T F S
     1 2
34 56 789
10 1112 13141516
17181920212223
24252627282930

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Mar. 20th, 2026 06:49 pm
Powered by Dreamwidth Studios