Re[7]: RSDN@Linux 2
От: Sheridan Россия  
Дата: 15.06.05 08:59
Оценка: :))
Здравствуйте, Mamut, Вы писали:

M>Не, это браузер запоминает, по каким ссылкам ты щелкнул В "Обсуждении сайта" было когда-то обсуждение о том, что неплхо было бы запоминать движения юзера по сайту, но, по-моему, идея была непринята

Чтож тогда либо каждому юзеру табличку либо одну табличку на всех...

M>Ну, этот самый стрим все равно парсить надо Ибо информация из него будет приходить очень разная — от списка деревьев до списка форумов до содержимого самого сообщения. То есть все равно остается вопрос о формате передаваемых данных. Предлагаешь просто сериализовать данные/объекты в поток?

гм... Че его парсить? К примеру возьмем какойть абстрактный стрим...
union UDataType (dtMessage,dtForumTree... etc);
struct SData
{
    UDataType Type;
    unsigned int DataSize;
    _данные_ Data;
};
class SMember
{
    std::string Nick;
    unsigned int uid;
    ...
    void WriteToStream(CStream * Stream){Stream->Write(uid,sizeof(unsigned int)); ... };
    void ReadFromStream(CStream * Stream){uid = Stream->Read(sizeof(unsigned int)); ... };
}
class SMessage
{
    std::string Caption;
    std::string Body;
    SMember Author;
    unsigned int mid;
    ...
    void WriteToStream(CStream * Stream)
    {
        Author->WriteToStream(Stream);
        Stream->Write(mid,sizeof(unsigned int));
        ... 
    };
    void ReadFromStream(CStream * Stream)
    {
        Author->ReadFromStream(Stream);
        mid = Stream->Read(sizeof(unsigned int));
        ... 
    };
    ...
};

... и прочее. Далее.
UDataType Type = dtMessage;
SMessage Msg;
...
// заполняем 
...
CStream *Stream = new Cstream();
Stream->Write(Type,sizeof(UDataType));
Msg->WriteToStream(Stream);

Ну и так далее, заполняем структуру SData, отсылаем сокетом... надеюсь ясно. При чтении наоборот. С тем что читаем сначала тип и по свичу типизируем, читаем, и все...
Что только взять в качестве "_данные_" и что взять в качестве стрима....
Запрос версии RSDN@Home...
[1.1.4][beta 7][474]
Matrix has you...
Re[6]: RSDN@Linux 2
От: Sheridan Россия  
Дата: 15.06.05 09:14
Оценка:
Здравствуйте, HotDog, Вы писали:

HD>Эх.. вашу бы энергию да на мирные цели Если на С++ чего нить писать охота, по вон переведите лучче сцайнтиллу на уникодные рельсы.


Жизненноважно!
К томуже я перехожу в линух дома. Пару месяцев винду уже даже и не вгружал ниразу... К томуже траффик жалко... Что меньше траффика сделает — 1 синхродемон на серваке + его клиенты или когда каждый синхронится самостоятельно?
К томуже я наблюдал ситуации когда доступ вовне порезан с локальных машин хотя (гдетотам) сервак в интернет смоттрич и вполне могут поставить этого синхродемона на ем. ПФР, налоговая...
Запрос версии RSDN@Home...
[1.1.4][beta 7][474]
Matrix has you...
Re[8]: RSDN@Linux 2
От: Mamut Швеция http://dmitriid.com
Дата: 15.06.05 09:22
Оценка:
[потоптано ]
S>Ну и так далее, заполняем структуру SData, отсылаем сокетом... надеюсь ясно. При чтении наоборот. С тем что читаем сначала тип и по свичу типизируем, читаем, и все...

Как мне выделенное не нравится... Как только понадобится возможность это дело расширить, как Что-то подумалось. Может, надо ... эээ ... абстрагироваться от понятий "список форумов", "список сообщений", а оставить просто "иерархический список (jagged aray?)"(список топиков в форуме, например), "плоский список"(например, список форумов) и "текстовая информация" (например, инфа про пользователя, тело сообщения)? Таким образом можно отсылать клиенту просто что-нибкдь типа

// типа псевдо-код
HierList/*topicList*/{
  id = 1; // по этому ИД клиент может понять, что это - список топиков в форуме
          // или можно даже ID = "forum_list"
  data...
}

HierList/*favouritesList*/{
  id = 2; // или можно даже ID = "fav_list"
  data...
}

PlainList/*availableTopics*/{
  id = 3;
  data...
}


Ну и так далее. Ых?

S>Что только взять в качестве "_данные_" и что взять в качестве стрима....




dmitriid.comGitHubLinkedIn
Re[9]: RSDN@Linux 2
От: Sheridan Россия  
Дата: 15.06.05 09:48
Оценка:
Здравствуйте, Mamut, Вы писали:

M>Ну и так далее. Ых?


А я про что? Я практически тоже самое и предложил.

Подумалось вот... Что кому пересылать...
Демон -> клиент.
1. Сообшение. (только текст)
2. Заголовок сообщения. (Caption, дата, оценки...)
3. Пользователь.
4. Форум.
5. Списки id для форумов, верхних веток форума или непосредсвенных дочерей какойто ветки.
клиент -> Демон.
1. Новое сообщение.
2. Оценка.
3. Того что возвращает демон
Это наверное еще не все нада думать....
Приблизительный обмен... Интерфейс скажем типа сейчашнего (-> клиент, <- демон)
 -> Вотон я мой uid такойто
 <- Лови список id форумов
 -> Дай инфу о форуме [id]
 <- Лови инфу о форуме [id]
 ...
 -> Дай инфу о форуме [id]
 <- Лови инфу о форуме [id]
 [построили список форумов]
 [выделяется верхний форум]
 -> Дай список id верхних веток форума
 <- Лови список id верхних веток форума
 -> Дай инфу о ветке [id]
 <- Лови инфу о ветке [id]
 ...
 -> Дай инфу о ветке [id]
 <- Лови инфу о ветке [id]
 [нарисовали верхние ветки]
 [аналогично при разворачивании ветки]
 [хотим почитать]
 -> Дай текст сообщения ветки [id]
 <- Лови текст сообщения ветки [id]

Думаю все понятно... Не надо ничего усложнять передавая списки целиком сразу... Я просто могу сделать страничнвй вывод топиков и мне не нужны будут сразу все данные, а вот просто список id будет к месту — кол-во страниц вычислю
Запрос версии RSDN@Home...
[1.1.4][beta 7][474]
Matrix has you...
Re: RSDN@Linux 2
От: Al-Ko  
Дата: 15.06.05 10:41
Оценка:
Здравствуйте, Mr.Chipset, Вы писали:

MC>Привет всем!

MC>После разговора с Sheridan'ом прояснились некоторые детали по сабжу.
MC>В частности, есть идея разделить RSDN@Linux на две части:
MC>1. Драйвер -- синх+драйвер к БД, скажем в виде демона.
MC>2. Представление -- в данном случае это некий клиент который используеться драйвер для доступа к БД и синхронизации. К примеру это может быть веб-интерфейс на Джаве, десктопная программа просмотра, наподобие Janus'a или вообще плагин к FF
MC>Так что сейчас требуеться лишь начать. Начать предлагаю с рефакторинга сервиса синхронизации Януса на С++ и к-платформенную библиотеку SOAP'a, наподобие gSOAP.
MC>Всё в интересе со стороны C++'ников Linux'оидов.
MC>СУВ.

посмотрите в сторону Mono + Gtk#. Тем более, что писать и отлаживать можно и под виндой, в студии (об этом &mdash; здесь). В Моно 1.1.7 уже все довольно серьезно. Там даже Windows.Forms уже неплохо развиты. Честно говоря, не знаю, как там обстоят дела с веб-программированием, но GUI уже делать можно. Правда, Mono любит Gnome...

P.S.Через некоторое время выложу в форум небольшой триллер, о том как на Gtk# портировался VirtualGrid из соседней ветки форума. Получилось кроссплатформенное решение — один и тот же код на шарпе работает и в виндовс и в линуксе.
Старый глюк лучше новых двух!
Re[10]: RSDN@Linux 2
От: Mamut Швеция http://dmitriid.com
Дата: 15.06.05 11:05
Оценка:
M>>Ну и так далее. Ых?
S>А я про что? Я практически тоже самое и предложил.

Меня просто switch напугал

S>Подумалось вот... Что кому пересылать...

[skip]
S>Думаю все понятно... Не надо ничего усложнять передавая списки целиком сразу... Я просто могу сделать страничнвй вывод топиков и мне не нужны будут сразу все данные, а вот просто список id будет к месту — кол-во страниц вычислю

Что-то подумалось — а не много ли слишком данных туда-сюда по сетке? Особенно если есть таки список топиков и какую-нибудь ветку решили развернуть. Правда, это обходится просто разделением вызовов типа "getTopicList" и "getTopic"...

*охохонюшки — куда это я ввязываюсь. я ж и программист-то весьма посредственный...*


dmitriid.comGitHubLinkedIn
Re[2]: RSDN@Linux 2
От: Mamut Швеция http://dmitriid.com
Дата: 15.06.05 11:10
Оценка: +1
AK>посмотрите в сторону Mono + Gtk#. Тем более, что писать и отлаживать можно и под виндой, в студии (об этом &mdash; здесь). В Моно 1.1.7 уже все довольно серьезно. Там даже Windows.Forms уже неплохо развиты. Честно говоря, не знаю, как там обстоят дела с веб-программированием, но GUI уже делать можно. Правда, Mono любит Gnome...

Хм... Интересно было бы посмортерть, насколько можно Янус портировать на Моно. А мы (вернее, Шеридан, я просто работаю провокатором ), хотим "пойти другим путем" и "свой, новый мир построить" Просто на .NET уже проект есть — Янус. Интересно было бы попробовать сделать похожее (такое же, превосходящее — нужное подчеркнуть) с другим инструментарием.

За одно будем популяризировать Qt в массах

AK>P.S.Через некоторое время выложу в форум небольшой триллер, о том как на Gtk# портировался VirtualGrid из соседней ветки форума. Получилось кроссплатформенное решение — один и тот же код на шарпе работает и в виндовс и в линуксе.


А вот это было бы очень интересно посмотреть. Ждем


dmitriid.comGitHubLinkedIn
Re[7]: RSDN@Linux 2
От: HotDog Швейцария www.denebspace.com
Дата: 15.06.05 11:11
Оценка:
Здравствуйте, Sheridan, Вы писали:

S>Что меньше траффика сделает — 1 синхродемон на серваке + его клиенты или когда каждый синхронится самостоятельно?

S>К томуже я наблюдал ситуации когда доступ вовне порезан с локальных машин хотя (гдетотам) сервак в интернет смоттрич и вполне могут поставить этого синхродемона на ем. ПФР, налоговая...

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

Может для начала ограничится демоном который для клиента является нюьс сервером? По крайней мере тогда над клиентом не надо будет голову ломать, а взять что то готовое (я имею ввиду ньюс ридер)
При этом потеряются такие фичи как оценки, данные о юзерах, но в принципе это тоже можно обьехать, запихав, к примеру, пользователя в отдельную ньюс группу и "прилинковать" его как сообщение.
Кстати тут на рсдн я уже видел даже что то подобное для виндов (NNTP клиент или что то вроде этого), т.е опять таки уже не с нуля ковырять.

А на счет линуха ... у меня ситуация наоборот: основное время сижу в виндах (по работе), пацан всякие там Halo, Unreal играет, жена фильмы смотрит (пока я не успел на DVD скинуть, чтоб на телике посмотреть), т.е без форточек никуда. Ну а побаловаться запускаю Дебиана или Suse, но это так.. для души.
Re[3]: RSDN@Linux 2
От: Al-Ko  
Дата: 15.06.05 11:37
Оценка:
Здравствуйте, Mamut, Вы писали:


M>Хм... Интересно было бы посмортерть, насколько можно Янус портировать на Моно. А мы (вернее, Шеридан, я просто работаю провокатором ), хотим "пойти другим путем" и "свой, новый мир построить" Просто на .NET уже проект есть — Янус. Интересно было бы попробовать сделать похожее (такое же, превосходящее — нужное подчеркнуть) с другим инструментарием.

Понимаю. Что касается меня, то у меня есть намерение показать, что на C# можно программировать для разных платформ.


M>За одно будем популяризировать Qt в массах

Тогда мне остается проповедовать Gtk#


Кстати, на шарпе есть обвязка и для Qt — qtcsharp, но, насколько я вижу, этот проект не обновлялся уже около года.
Старый глюк лучше новых двух!
Re: RSDN@Linux 2
От: ironwit Украина  
Дата: 15.06.05 11:41
Оценка:
Здравствуйте, Mr.Chipset, Вы писали:

MC>Привет всем!

MC>После разговора с Sheridan'ом прояснились некоторые детали по сабжу.
А если попробовать проект mono? тогда не надо будет создавать новую сущность, а, возможно, хватит небольших переделок существующего клиента?
... << RSDN@Home 1.1.4 beta 7 rev. 474>>
Я не умею быть злым, и не хочу быть добрым.
Re[2]: RSDN@Linux 2
От: ironwit Украина  
Дата: 15.06.05 11:46
Оценка:
Здравствуйте, ironwit, Вы писали:

I>Здравствуйте, Mr.Chipset, Вы писали:


MC>>Привет всем!

MC>>После разговора с Sheridan'ом прояснились некоторые детали по сабжу.
I>А если попробовать проект mono? тогда не надо будет создавать новую сущность, а, возможно, хватит небольших переделок существующего клиента?
Re: RSDN@Linux 2
Автор: Al-Ko
Дата: 15.06.05
упс
... << RSDN@Home 1.1.4 beta 7 rev. 474>>
Я не умею быть злым, и не хочу быть добрым.
Re[4]: RSDN@Linux 2
От: Mamut Швеция http://dmitriid.com
Дата: 15.06.05 11:57
Оценка:
M>>Хм... Интересно было бы посмортерть, насколько можно Янус портировать на Моно. А мы (вернее, Шеридан, я просто работаю провокатором ), хотим "пойти другим путем" и "свой, новый мир построить" Просто на .NET уже проект есть — Янус. Интересно было бы попробовать сделать похожее (такое же, превосходящее — нужное подчеркнуть) с другим инструментарием.
AK>Понимаю. Что касается меня, то у меня есть намерение показать, что на C# можно программировать для разных платформ.

Ваше дело — предложить, наше — пощупать пациента за вымя Кто знает, вдруг нас удастся совратить С#'ом или даже портировать Янус под Моно — было бы здорово.

M>>За одно будем популяризировать Qt в массах

AK>Тогда мне остается проповедовать Gtk#


AK>Кстати, на шарпе есть обвязка и для Qt — qtcsharp, но, насколько я вижу, этот проект не обновлялся уже около года.

Увы Я так надеялся, что дело у них сдвинется с мертвой точки, но увы


dmitriid.comGitHubLinkedIn
Re[2]: RSDN@Linux 2
От: Sheridan Россия  
Дата: 15.06.05 12:03
Оценка: :))) :)))
Здравствуйте, ironwit, Вы писали:

I>Здравствуйте, Mr.Chipset, Вы писали:


MC>>Привет всем!

MC>>После разговора с Sheridan'ом прояснились некоторые детали по сабжу.
I>А если попробовать проект mono? тогда не надо будет создавать новую сущность, а, возможно, хватит небольших переделок существующего клиента?

Честно скажу: шарп недолюбливаю изза того что оно всетаки интерпритатор... Мне например будет интересно сравнить шарп и с++ в деле...
Запрос версии RSDN@Home...
[1.1.4][beta 7][474]
Matrix has you...
Re[11]: RSDN@Linux 2
От: Sheridan Россия  
Дата: 15.06.05 12:03
Оценка:
Здравствуйте, Mamut, Вы писали:

M>Что-то подумалось — а не много ли слишком данных туда-сюда по сетке? Особенно если есть таки список топиков и какую-нибудь ветку решили развернуть. Правда, это обходится просто разделением вызовов типа "getTopicList" и "getTopic"...

С одной стороны конечно тудасюда столько гонять не совсем хорошо есть, с другой стороны мы развязываем руки при написании клиента. Можно конечно и запрос списков подвязать и запрос веток... Но имхо всетаки вот такой начальный протокол следует принять как "атом". Из него уже можно строить "молекулы" запросов к демону. Скажем — дай мне мол вот эту ветку — а демон возвращает соответствующий набор атомов, может быть уже упорядоченный.

M>*охохонюшки — куда это я ввязываюсь. я ж и программист-то весьма посредственный...*

А что ты думаеш — я крут?
Запрос версии RSDN@Home...
[1.1.4][beta 7][474]
Matrix has you...
Re[8]: RSDN@Linux 2
От: Sheridan Россия  
Дата: 15.06.05 12:06
Оценка:
Здравствуйте, HotDog, Вы писали:

HD>Да я не спорю, что подобные юзкейсы возможны. Просто, на мой взгляд, тут огромнейший фронт работ, начиная от сервера (демона) до клиента, которые надо начинать с нуля. А на сях, да еще под линухом это просто

Согласен. Работы много. Один я непотяну даже пятую часть. Но и янус тоже не с неба свалился.

HD> т.е опять таки уже не с нуля ковырять.

С нуля надо начинать. И первым делом конверт бд и рисовать просмотрщика. Потом можно братся за синхронизатора и следом за постинг сообщений и оценок. Это в общем.

HD>жена фильмы смотрит (пока я не успел на DVD скинуть, чтоб на телике посмотреть), т.е без форточек никуда.

Игры да, в винду. Фильмы... xine ставь...
HD>Ну а побаловаться запускаю Дебиана или Suse, но это так.. для души.
В федоре 3й сижу. Жду когда 4ю привезут.
Запрос версии RSDN@Home...
[1.1.4][beta 7][474]
Matrix has you...
Re[5]: RSDN@Linux 2
От: Sheridan Россия  
Дата: 15.06.05 12:06
Оценка:
Здравствуйте, Mamut, Вы писали:

M>Ваше дело — предложить, наше — пощупать пациента за вымя Кто знает, вдруг нас удастся совратить С#'ом или даже портировать Янус под Моно — было бы здорово.

За моно братся небуду. Вся фишка в том что хочется именно скомпилировать и чтобы оно само работало. не прося всяких там интерпритаторов дособрать себя итд. С++ имхо однозначно.

AK>>Кстати, на шарпе есть обвязка и для Qt — qtcsharp, но, насколько я вижу, этот проект не обновлялся уже около года.

M>Увы Я так надеялся, что дело у них сдвинется с мертвой точки, но увы
И слава богу.
Запрос версии RSDN@Home...
[1.1.4][beta 7][474]
Matrix has you...
Re: RSDN@Linux 2
От: Rebus83 Россия  
Дата: 15.06.05 12:23
Оценка: 10 (1) +1
Здравствуйте, Mr.Chipset, Вы писали:

MC>Привет всем!

MC>После разговора с Sheridan'ом прояснились некоторые детали по сабжу.
MC>В частности, есть идея разделить RSDN@Linux на две части:
MC>1. Драйвер -- синх+драйвер к БД, скажем в виде демона.
MC>2. Представление -- в данном случае это некий клиент который используеться драйвер для доступа к БД и синхронизации. К примеру это может быть веб-интерфейс на Джаве, десктопная программа просмотра, наподобие Janus'a или вообще плагин к FF
MC>Так что сейчас требуеться лишь начать. Начать предлагаю с рефакторинга сервиса синхронизации Януса на С++ и к-платформенную библиотеку SOAP'a, наподобие gSOAP.
MC>Всё в интересе со стороны C++'ников Linux'оидов.
MC>СУВ.

Прочитав ветку, сделал следующие выводы.

В памяти на сервере висит демон януса, который
1 связыватся периодически (в зависимости от заданных настроек) с центральным сервером и скачивает обновления.
2 кладет скачанные обновления в какую-то СУБД, например MySQL (может быть сделана независимость от конкретной СУБД, благо это просто).
3 обслуживает запросы клиентов, с использованием, например, SOAP, выдавая им XML-ки с результатами конкретных запросов.

Клиент, который может быть вовсе на другой машине в локальной сети, делает следущее
1 при запуске связывается с демоном, авторизуется, и получает от него список форумов и список тем в текущем форуме.
2 при просмотре сообщения получает от демона текст этого сообщения.
3 при отправке сообщения связывается с демоном и передает данные для отправки.

База данных хранится в одном экземпляре на сервере.

В общем, вроде бы, типичное 3-tier приложение, разве что несколько громоздко выглядит...

Вопросы:
Я все правильно понял?
Где можно посмотреть, как сейчас Янус взаимодействет с сервером?
Metallica — Devil's Dance
Какая странная планета! — подумал Маленький принц. — Совсем сухая,
вся в иглах и соленая. И у людей не хватает воображения. Они только
повторяют то, что им скажешь...
Re[2]: RSDN@Linux 2
От: Sheridan Россия  
Дата: 15.06.05 12:37
Оценка:
Здравствуйте, Rebus83, Вы писали:

R> 3 обслуживает запросы клиентов, с использованием, например, SOAP, выдавая им XML-ки с результатами конкретных запросов.

Ну не xml а всетаки думаю "по старинке" — socketstream пользовать...

R> Вопросы:

R> Я все правильно понял?
ну.. на 85-87% правильно

R> Где можно посмотреть, как сейчас Янус взаимодействет с сервером?

В исходниках которые лежат в subversion репозитории януса. Почитай здесь — там гдето вроде написано...
Запрос версии RSDN@Home...
[1.1.4][beta 7][474]
Matrix has you...
Re[3]: RSDN@Linux 2
От: Sheridan Россия  
Дата: 15.06.05 12:40
Оценка:
АВК, ну хотябы сказал чтонибудь... А то улыбаешся загадочно както... Интересно всетаки и тебя былобы послушать. Проект в стадии задумки и на этой стадии имхо важны всетаки мнения Старших Или ты нехочеш переносить янус в линукс?
Запрос версии RSDN@Home...
[1.1.4][beta 7][474]
Matrix has you...
Re[3]: RSDN@Linux 2
От: Mamut Швеция http://dmitriid.com
Дата: 15.06.05 12:44
Оценка:
R>> Где можно посмотреть, как сейчас Янус взаимодействет с сервером?
S>В исходниках которые лежат в subversion репозитории януса. Почитай здесь — там гдето вроде написано...

Янусовский WSDL лежит здесь: http://www.rsdn.ru/ws/service.asmx?WSDL, само описание сервиса здесь: http://www.rsdn.ru/ws/service.asmx.

Здесь возникают некоторые как бы проблемсы из-за использования s:any и авторизации, но, если использовать, скажем, тот же gSOAP, то эти проблемы решаемы. Блин, надо бы покопать еще SOAP из Qt Solutions...


dmitriid.comGitHubLinkedIn
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.