Здравствуйте, Mamut, Вы писали:
M>Не, это браузер запоминает, по каким ссылкам ты щелкнул В "Обсуждении сайта" было когда-то обсуждение о том, что неплхо было бы запоминать движения юзера по сайту, но, по-моему, идея была непринята
Чтож тогда либо каждому юзеру табличку либо одну табличку на всех...
M>Ну, этот самый стрим все равно парсить надо Ибо информация из него будет приходить очень разная — от списка деревьев до списка форумов до содержимого самого сообщения. То есть все равно остается вопрос о формате передаваемых данных. Предлагаешь просто сериализовать данные/объекты в поток?
гм... Че его парсить? К примеру возьмем какойть абстрактный стрим...
UDataType Type = dtMessage;
SMessage Msg;
...
// заполняем
...
CStream *Stream = new Cstream();
Stream->Write(Type,sizeof(UDataType));
Msg->WriteToStream(Stream);
Ну и так далее, заполняем структуру SData, отсылаем сокетом... надеюсь ясно. При чтении наоборот. С тем что читаем сначала тип и по свичу типизируем, читаем, и все...
Что только взять в качестве "_данные_" и что взять в качестве стрима....
Здравствуйте, HotDog, Вы писали:
HD>Эх.. вашу бы энергию да на мирные цели Если на С++ чего нить писать охота, по вон переведите лучче сцайнтиллу на уникодные рельсы.
Жизненноважно!
К томуже я перехожу в линух дома. Пару месяцев винду уже даже и не вгружал ниразу... К томуже траффик жалко... Что меньше траффика сделает — 1 синхродемон на серваке + его клиенты или когда каждый синхронится самостоятельно?
К томуже я наблюдал ситуации когда доступ вовне порезан с локальных машин хотя (гдетотам) сервак в интернет смоттрич и вполне могут поставить этого синхродемона на ем. ПФР, налоговая...
[потоптано ] 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>Что только взять в качестве "_данные_" и что взять в качестве стрима....
Здравствуйте, 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 будет к месту — кол-во страниц вычислю
Здравствуйте, 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#. Тем более, что писать и отлаживать можно и под виндой, в студии (об этом — здесь). В Моно 1.1.7 уже все довольно серьезно. Там даже Windows.Forms уже неплохо развиты. Честно говоря, не знаю, как там обстоят дела с веб-программированием, но GUI уже делать можно. Правда, Mono любит Gnome...
P.S.Через некоторое время выложу в форум небольшой триллер, о том как на Gtk# портировался VirtualGrid из соседней ветки форума. Получилось кроссплатформенное решение — один и тот же код на шарпе работает и в виндовс и в линуксе.
M>>Ну и так далее. Ых? S>А я про что? Я практически тоже самое и предложил.
Меня просто switch напугал
S>Подумалось вот... Что кому пересылать...
[skip] S>Думаю все понятно... Не надо ничего усложнять передавая списки целиком сразу... Я просто могу сделать страничнвй вывод топиков и мне не нужны будут сразу все данные, а вот просто список id будет к месту — кол-во страниц вычислю
Что-то подумалось — а не много ли слишком данных туда-сюда по сетке? Особенно если есть таки список топиков и какую-нибудь ветку решили развернуть. Правда, это обходится просто разделением вызовов типа "getTopicList" и "getTopic"...
*охохонюшки — куда это я ввязываюсь. я ж и программист-то весьма посредственный...*
AK>посмотрите в сторону Mono + Gtk#. Тем более, что писать и отлаживать можно и под виндой, в студии (об этом — здесь). В Моно 1.1.7 уже все довольно серьезно. Там даже Windows.Forms уже неплохо развиты. Честно говоря, не знаю, как там обстоят дела с веб-программированием, но GUI уже делать можно. Правда, Mono любит Gnome...
Хм... Интересно было бы посмортерть, насколько можно Янус портировать на Моно. А мы (вернее, Шеридан, я просто работаю провокатором ), хотим "пойти другим путем" и "свой, новый мир построить" Просто на .NET уже проект есть — Янус. Интересно было бы попробовать сделать похожее (такое же, превосходящее — нужное подчеркнуть) с другим инструментарием.
За одно будем популяризировать Qt в массах
AK>P.S.Через некоторое время выложу в форум небольшой триллер, о том как на Gtk# портировался VirtualGrid из соседней ветки форума. Получилось кроссплатформенное решение — один и тот же код на шарпе работает и в виндовс и в линуксе.
А вот это было бы очень интересно посмотреть. Ждем
Здравствуйте, Sheridan, Вы писали:
S>Что меньше траффика сделает — 1 синхродемон на серваке + его клиенты или когда каждый синхронится самостоятельно? S>К томуже я наблюдал ситуации когда доступ вовне порезан с локальных машин хотя (гдетотам) сервак в интернет смоттрич и вполне могут поставить этого синхродемона на ем. ПФР, налоговая...
Да я не спорю, что подобные юзкейсы возможны. Просто, на мой взгляд, тут огромнейший фронт работ, начиная от сервера (демона) до клиента, которые надо начинать с нуля. А на сях, да еще под линухом это просто
Может для начала ограничится демоном который для клиента является нюьс сервером? По крайней мере тогда над клиентом не надо будет голову ломать, а взять что то готовое (я имею ввиду ньюс ридер)
При этом потеряются такие фичи как оценки, данные о юзерах, но в принципе это тоже можно обьехать, запихав, к примеру, пользователя в отдельную ньюс группу и "прилинковать" его как сообщение.
Кстати тут на рсдн я уже видел даже что то подобное для виндов (NNTP клиент или что то вроде этого), т.е опять таки уже не с нуля ковырять.
А на счет линуха ... у меня ситуация наоборот: основное время сижу в виндах (по работе), пацан всякие там Halo, Unreal играет, жена фильмы смотрит (пока я не успел на DVD скинуть, чтоб на телике посмотреть), т.е без форточек никуда. Ну а побаловаться запускаю Дебиана или Suse, но это так.. для души.
M>Хм... Интересно было бы посмортерть, насколько можно Янус портировать на Моно. А мы (вернее, Шеридан, я просто работаю провокатором ), хотим "пойти другим путем" и "свой, новый мир построить" Просто на .NET уже проект есть — Янус. Интересно было бы попробовать сделать похожее (такое же, превосходящее — нужное подчеркнуть) с другим инструментарием.
Понимаю. Что касается меня, то у меня есть намерение показать, что на C# можно программировать для разных платформ.
M>За одно будем популяризировать Qt в массах
Тогда мне остается проповедовать Gtk#
Кстати, на шарпе есть обвязка и для Qt — qtcsharp, но, насколько я вижу, этот проект не обновлялся уже около года.
Здравствуйте, Mr.Chipset, Вы писали:
MC>Привет всем! MC>После разговора с Sheridan'ом прояснились некоторые детали по сабжу.
А если попробовать проект mono? тогда не надо будет создавать новую сущность, а, возможно, хватит небольших переделок существующего клиента?
Здравствуйте, ironwit, Вы писали:
I>Здравствуйте, Mr.Chipset, Вы писали:
MC>>Привет всем! MC>>После разговора с Sheridan'ом прояснились некоторые детали по сабжу. I>А если попробовать проект mono? тогда не надо будет создавать новую сущность, а, возможно, хватит небольших переделок существующего клиента? Re: RSDN@Linux 2
M>>Хм... Интересно было бы посмортерть, насколько можно Янус портировать на Моно. А мы (вернее, Шеридан, я просто работаю провокатором ), хотим "пойти другим путем" и "свой, новый мир построить" Просто на .NET уже проект есть — Янус. Интересно было бы попробовать сделать похожее (такое же, превосходящее — нужное подчеркнуть) с другим инструментарием. AK>Понимаю. Что касается меня, то у меня есть намерение показать, что на C# можно программировать для разных платформ.
Ваше дело — предложить, наше — пощупать пациента за вымя Кто знает, вдруг нас удастся совратить С#'ом или даже портировать Янус под Моно — было бы здорово.
M>>За одно будем популяризировать Qt в массах AK>Тогда мне остается проповедовать Gtk#
AK>Кстати, на шарпе есть обвязка и для Qt — qtcsharp, но, насколько я вижу, этот проект не обновлялся уже около года.
Увы Я так надеялся, что дело у них сдвинется с мертвой точки, но увы
Здравствуйте, ironwit, Вы писали:
I>Здравствуйте, Mr.Chipset, Вы писали:
MC>>Привет всем! MC>>После разговора с Sheridan'ом прояснились некоторые детали по сабжу. I>А если попробовать проект mono? тогда не надо будет создавать новую сущность, а, возможно, хватит небольших переделок существующего клиента?
Честно скажу: шарп недолюбливаю изза того что оно всетаки интерпритатор... Мне например будет интересно сравнить шарп и с++ в деле...
Здравствуйте, Mamut, Вы писали:
M>Что-то подумалось — а не много ли слишком данных туда-сюда по сетке? Особенно если есть таки список топиков и какую-нибудь ветку решили развернуть. Правда, это обходится просто разделением вызовов типа "getTopicList" и "getTopic"...
С одной стороны конечно тудасюда столько гонять не совсем хорошо есть, с другой стороны мы развязываем руки при написании клиента. Можно конечно и запрос списков подвязать и запрос веток... Но имхо всетаки вот такой начальный протокол следует принять как "атом". Из него уже можно строить "молекулы" запросов к демону. Скажем — дай мне мол вот эту ветку — а демон возвращает соответствующий набор атомов, может быть уже упорядоченный.
M>*охохонюшки — куда это я ввязываюсь. я ж и программист-то весьма посредственный...*
А что ты думаеш — я крут?
Здравствуйте, HotDog, Вы писали:
HD>Да я не спорю, что подобные юзкейсы возможны. Просто, на мой взгляд, тут огромнейший фронт работ, начиная от сервера (демона) до клиента, которые надо начинать с нуля. А на сях, да еще под линухом это просто
Согласен. Работы много. Один я непотяну даже пятую часть. Но и янус тоже не с неба свалился.
HD> т.е опять таки уже не с нуля ковырять.
С нуля надо начинать. И первым делом конверт бд и рисовать просмотрщика. Потом можно братся за синхронизатора и следом за постинг сообщений и оценок. Это в общем.
HD>жена фильмы смотрит (пока я не успел на DVD скинуть, чтоб на телике посмотреть), т.е без форточек никуда.
Игры да, в винду. Фильмы... xine ставь... HD>Ну а побаловаться запускаю Дебиана или Suse, но это так.. для души.
В федоре 3й сижу. Жду когда 4ю привезут.
Здравствуйте, Mamut, Вы писали:
M>Ваше дело — предложить, наше — пощупать пациента за вымя Кто знает, вдруг нас удастся совратить С#'ом или даже портировать Янус под Моно — было бы здорово.
За моно братся небуду. Вся фишка в том что хочется именно скомпилировать и чтобы оно само работало. не прося всяких там интерпритаторов дособрать себя итд. С++ имхо однозначно.
AK>>Кстати, на шарпе есть обвязка и для Qt — qtcsharp, но, насколько я вижу, этот проект не обновлялся уже около года. M>Увы Я так надеялся, что дело у них сдвинется с мертвой точки, но увы
И слава богу.
Здравствуйте, 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
Какая странная планета! — подумал Маленький принц. — Совсем сухая,
вся в иглах и соленая. И у людей не хватает воображения. Они только
повторяют то, что им скажешь...
Здравствуйте, Rebus83, Вы писали:
R> 3 обслуживает запросы клиентов, с использованием, например, SOAP, выдавая им XML-ки с результатами конкретных запросов.
Ну не xml а всетаки думаю "по старинке" — socketstream пользовать...
R> Вопросы: R> Я все правильно понял?
ну.. на 85-87% правильно
R> Где можно посмотреть, как сейчас Янус взаимодействет с сервером?
В исходниках которые лежат в subversion репозитории януса. Почитай здесь — там гдето вроде написано...
АВК, ну хотябы сказал чтонибудь... А то улыбаешся загадочно както... Интересно всетаки и тебя былобы послушать. Проект в стадии задумки и на этой стадии имхо важны всетаки мнения Старших Или ты нехочеш переносить янус в линукс?
R>> Где можно посмотреть, как сейчас Янус взаимодействет с сервером? S>В исходниках которые лежат в subversion репозитории януса. Почитай здесь — там гдето вроде написано...
Здесь возникают некоторые как бы проблемсы из-за использования s:any и авторизации, но, если использовать, скажем, тот же gSOAP, то эти проблемы решаемы. Блин, надо бы покопать еще SOAP из Qt Solutions...