Ru-Board.club
← Вернуться в раздел «Ikonboard v.2»

» Скрипт + клиент для Ib2 для офлайновой работы с форумом

Автор: Svarga
Дата сообщения: 22.11.2003 03:36
Приветствую!
Пока что куча сырых несформулированных толком идей, мало ли, может что-то и получится из этого...



Началось с того, что в одной теме в "Помощи по Ru.Board" промелькнула идея по поводу создания CD с информацией с Ру-Борда, благодаря ironwit’у, идея постепенно мутировала в идею написания клиентской и серверной части для форума с целью экономии трафика (за счёт создания локальной базы просмотренных тем/постов и отсутствия повторного скачивания одного и того же) и для возможности офлайновой работы с форумом (возможность офлайнового доступа ко всем просмотренным темам/постам, возможность офлайновой подготовки ответов и т.д.).
Чтобы могла появиться возможность что-то подобное использовать на ру-борде, необходимо, чтобы существовало что-то более-менее рабочее (не считая, конечно, самой малости — согласия админов). Поэтому, по мере возможностей, будем пытаться сделать нечто подобное сначала для Ib2, а потом... А потом видно будет... (дожить до этого "потом" ещё надо )

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

Предполагаемые этапы работы:
1. Разработка подробного ТЗ для серверной и клиентской части, описывающего формат запросов клиента, формат выдаваемых сервером данных, механизмы взаимодействия клиентской и серверной частей, принципы и механизмы работы серверной и клиентской частей.
2. Создание серверной части согласно ТЗ
3. Создание клиента (-ов) для работы с серверной частью согласно ТЗ.
4. Тестирования, исправления глюков и под.

Что надумали
Стало быть, попытался начать обобщать всё, что уже надумали (что забыл — просьба дополнить, где ошибся, просьба подправить, также новые идеи настоятельно приветствуются ):


1. Серверная часть
Отдельный серверный скрипт, который выдаёт определённые данные на определённые http-запросы.

2. Клиентская часть
Пользовательская программа, которая формирует определённые запросы к серверу, получает, обрабатывает, хранит и выдаёт полученные от сервера данные в определённом виде.

Варианты реализации программы:
а) локальный HTTP-сервер, который перехватывает запрос браузера к серверу форума и, если запрашиваемые данные доступны локально, формирует на основе локальной базы HTML-страницу и выдаёт её браузеру, если же данные недоступны локально, переформулирует запрос, обращается к серверу, получает запрашиваемые данные, добавляет их в локальную базу, формирует HTML-страницу в соответствии с запросом и выдаёт её браузеру;

б) приложение, которое непосредственно обращается к серверному скрипту, формирует базу сообщений и отображает имеющиеся в базе данные (организованное аналогично почтовым клиентам)


В принципе, оба варианта можно совместить.


3. Формат данных
Варианты формата выдаваемых сервером данных:
а) XML, напр.
Код: <message author="Svarga" date="02:19 24-03-2003"><b>Hrun</b>
<quote><quote>Хотя траффик упадет реально. И для сервера и для клиентов. </quote>
счетчики, баннеры...
кто же на такое согласиться.. </quote>
и еще куча проблем, о которых я говорил раньше.</message>
Автор: ironwit
Дата сообщения: 24.11.2003 10:58
отметился...

Очень уж тут много вопросов...

Начну с того, что ближе.

ИМХО, лучше всего забирать посты с сервера в txt формате (так какждый может писать свой клиент - или даже смотреть форум просто любой смотрелкой).


Цитата:
Предполагаемые этапы работы:
1. Разработка подробного ТЗ для серверной и клиентской части, описывающего формат запросов клиента, формат выдаваемых сервером данных, механизмы взаимодействия клиентской и серверной частей, принципы и механизмы работы серверной и клиентской частей.


Навеяло урлом.... http://forum.ru-board.com/topic.cgi?forum=21&topic=2144

1 запрос клиента серверу. Дай мне список топиков. (определенный http запрос, либо просто вывод какого нить скрипта без параметров)

2 ответ с сервера. идет txt файл вида
21|Ikonboard v.2
...

3 Запрос скрипта выдачи списка тем с параметром номер топика.

4 ответ с сервера. идет txt файл вида
2144|Скрипт + клиент для Ib2 для офлайновой работы с форумом|кол-во ответов

...

(так же здесь можно передать и доп.инфу по топику (типа когда последний...)

5 запрос к срипту (дай мне ответ такой то, топика такого то, темы такой то).
6 ответ сервера


Цитата:
Код:Svarga|02:19 24-03-2003:<b>Hrun</b><br>
Цитата:
Цитата: Хотя траффик упадет реально. И для сервера и для клиентов.
<br>счетчики, баннеры...<br>кто же на такое согласиться..
Автор: ironwit
Дата сообщения: 25.11.2003 15:29
почитайте одно из описаний протокола...

http://deep.webm.ru/forum/client.php
Автор: Smog
Дата сообщения: 04.12.2003 11:10
Svarga

Цитата:
б) приложение, которое непосредственно обращается к серверному скрипту, формирует базу сообщений и отображает имеющиеся в базе данные (организованное аналогично почтовым клиентам)

склоняюсь к этому варианту, хотя бы потому, что локальный сервер

Цитата:
формирует HTML-страницу в соответствии с запросом и выдаёт её браузеру;

нам не нужен....
Нужна программа. Для примера можно привести понравившийся мне (кстати opensource) клиент екслера:
http://exler.metacom.ru/client/FERClient_IB.zip
и исходники:
http://exler.metacom.ru/client/FER_Src.ZIP
Скачайте, посмотрите, и от этого отталкивайтесь....


Цитата:
б) Текст с определёнными разделителями (| или, скажем, \n):

в приведенном тобой коде

Код: [no]
Svarga|02:19 24-03-2003:<b>Hrun</b><br>
Цитата:

Цитата: Хотя траффик упадет реально. И для сервера и для клиентов.
<br>счетчики, баннеры...<br>кто же на такое согласиться..
Автор: Svarga
Дата сообщения: 05.12.2003 02:12
ironwit
Smog
хм... интересные вещи, бум смотреть...
Автор: Smog
Дата сообщения: 05.12.2003 18:14
Svarga

Цитата:
хм... интересные вещи, бум смотреть...

такой коллектив у нас большой получился....диву даешься

ironwit

Цитата:
4 ответ с сервера. идет txt файл вида
2144|Скрипт + клиент для Ib2 для офлайновой работы с форумом|кол-во ответов
(так же здесь можно передать и доп.инфу по топику (типа когда последний...)

эту инфу нужно обязательно!

Цитата:
5 запрос к срипту (дай мне ответ такой то, топика такого то, темы такой то).
6 ответ сервера

а у меня вот так бы:
5) Запрос к скрипту выдачи списка ответов в тему с параметром номера темы (список может быть представлен номером сообщения и его автором)
6) ответ сервера
7) при выборе определенного сообщения по номеру - запрос к срипту (дай мне ответ такой то, топика такого то, темы такой то).
8) ответ сервера
Автор: ironwit
Дата сообщения: 10.12.2003 11:13

Цитата:
5) Запрос к скрипту выдачи списка ответов в тему с параметром номера темы (список может быть представлен номером сообщения и его автором)
6) ответ сервера
7) при выборе определенного сообщения по номеру - запрос к срипту (дай мне ответ такой то, топика такого то, темы такой то).
8) ответ сервера


чего так то? Зачем лишние запросы гонять? Все равно ведь нужно подчитывать все ответы..
Автор: Smog
Дата сообщения: 10.12.2003 16:00
ironwit

Цитата:
чего так то? Зачем лишние запросы гонять?

о лишних запросах не подумал...тогда ладно...

а что никто обсудить это дело больше не желает?
Автор: Svarga
Дата сообщения: 11.12.2003 01:47
Smog

Цитата:
а что никто обсудить это дело больше не желает?

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

Попытаюсь на днях инфу, которая в первом посте в удобоваримый читабельный вид привести и дополнить информацией, которая по вашим ссылкам живёт: тогда проще будет обсуждать — по отдельным пунктам, а не общими замечаниями
Автор: Smog
Дата сообщения: 12.12.2003 10:54
Svarga

Цитата:
я желаю,

я имел ввиду кроме нас троих


Цитата:
тогда проще будет обсуждать — по отдельным пунктам, а не общими замечаниями

и прдуктивней тоже

Клиент запускал экслеровский?
Автор: ironwit
Дата сообщения: 17.01.2004 11:26
Так, все затихло. А я тут недавно подумал. Что если работать с форумом так (клиентом).

Черновые идеи - еще даже в голове толком не оформились.

1. Запрос новых сообщений с такой то даты/времени.
В ответ идет просто набор их номеров и номеров их разделов и номера их тем (строка из трех цифр разделенные точкой с запятой к примеру).
2. Отбираем те сообщения на которые у нас есть маска по скачиванию.
3. По уникальному коду сообщения запрашиваем их данные с сервера (его номер в этом топике, текст, ник...)
4. Проверяем по номеру в топике полный ли топик или нет, если нет, то догружаем предыдущие, если номер меньше - значит редактировался...)
5. ...


Вот такие вот наметки. Кто что скажет?
Автор: Smog
Дата сообщения: 17.01.2004 14:46
ironwit

Цитата:
1. Запрос новых сообщений с такой то даты/времени.
В ответ идет просто набор их номеров и номеров их разделов и номера их тем (строка из трех цифр разделенные точкой с запятой к примеру).

приведи пример для какого-нибудь сообщения
например первое сообщение на 2 странице в этом топике и дальше - это вот так:
20 2144 21
21 2144 21
22 2144 21
23 2144 21
24 2144 21
25 2144 21
26 2144 21
27 2144 21
28 2144 21
29 2144 21
???
тогда,

Цитата:
2. Отбираем те сообщения на которые у нас есть маска по скачиванию.

допустим у нас в локальной базе сохранено до 21 (оно последнее)
то для скачивания:

Код: for i= 22 to lastmsg
download_msg i 2144 21
next i
Автор: ironwit
Дата сообщения: 19.01.2004 08:11

Цитата:
А это не понял, если честно:


это для того, что если при запросе новых сообщений получилось так, что мы скачали предположим третье, а первого и второго в списке новых нет (и у нас в локальной БД их нет) тогда мы их докачиваем. Далее, если по номеру новое сообщение уже есть в базе, то значит оно редактировалоась, и нужно его заменить в локальной БД. Вот так в общих чертах.
Автор: Smog
Дата сообщения: 20.01.2004 20:21
ironwit
ну дык это реализовать со стороны форума если, то что для этого надо по-твоему7
Автор: ironwit
Дата сообщения: 21.01.2004 07:37
Smog

Ты же сам в предыдущем посте ответил на свой вопрос

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

Вот с этого , примерно, можно и начать. Где там основные специалисты? Чего ничего не говорят?
Автор: Smog
Дата сообщения: 21.01.2004 10:45
ironwit

Цитата:
Ты же сам в предыдущем посте ответил на свой вопрос

решил удостовериться


Цитата:
1. Нужен скрипт выдачи кодов новых сообщений по дате\времени.

ок
входные данные - дата время
выходные данные - коды сообщений, начиная с этой даты/времени

Цитата:
2. Нужен скрипт выдачи сообщений по коду.

входные данные - код сообщения (одного? или сразу нескольких?)
выходные данные - текст сообщения в кодах руборда (согласен?)

Цитата:
3. Нужен скрипт выдачи информации о том, какое наименование топика\раздела для этого сообщения. Либо как эту информацию можно расшифровать имея номер сообщения.

если код сообщения будет в виде
Цитата:
25 2144 21
, то раздел форума можно расшифровать, а название топика все же надо запрашивать

итак, для №3
входные данные - код сообщения
выходные данные - название и описание топика

Подожди, а как тогда

Цитата:
1. Нужен скрипт выдачи кодов новых сообщений по дате\времени.


Цитата:
входные данные - дата время

узнает скрипт, из какого топа мы запрашиваем сообщения?

Нужно все же, чтобы был еще один скрипт, выдающий список топиков данного раздела с описаниями, количеством ответов и дате/времени/автора последнего сообщения, я правильно мыслю?
Автор: ironwit
Дата сообщения: 21.01.2004 11:35

Цитата:
узнает скрипт, из какого топа мы запрашиваем сообщения?


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

Цитата:
входные данные - дата время
выходные данные - коды сообщений, начиная с этой даты/времени


добавить еще и код топика.


Цитата:
Нужно все же, чтобы был еще один скрипт, выдающий список топиков данного раздела с описаниями, количеством ответов и дате/времени/автора последнего сообщения, я правильно мыслю?


можно и такой.. Но кто их писать будет то?
Автор: Smog
Дата сообщения: 21.01.2004 12:16
ironwit

Цитата:
можно и такой.. Но кто их писать будет то?

скореее нужно, чем можно...
Вот создали новый топик в нужном нам разделе, а как мы о нем узнаем?
Так что список топиков чтоб выдавал - это обязательно, ну а если будет скрипт, который выдает список топиков, то к нему несложно, имхо, прикрутить выдачу описаний этих топиков, их авторов, и даты/времени/автора последнего сообщения
почти как forums.cgi получится, только не в кодах хтмля, а в текстовой форме с разделителями...
а выдача сообщений - это тоже модифицированный topic.cgi

Представление верное?
Автор: ironwit
Дата сообщения: 21.01.2004 13:07
угу

ИМХО
Автор: Smog
Дата сообщения: 21.01.2004 15:06
ironwit
дальше чего думать будем?
а то пока еще неудобно сюда батву звать...
может топик создать в программировании?
Автор: ironwit
Дата сообщения: 21.01.2004 18:10
Smog

Цитата:
дальше чего думать будем?


ты на php шаришь? Если бы был готовый скрипт может дело и пошло
Автор: Smog
Дата сообщения: 21.01.2004 18:17
поставил себе на локалхост борду, чтобы в кодах покопаться, вот чего накопал:

Цитата:
Нужно все же, чтобы был еще один скрипт, выдающий список топиков данного раздела с описаниями, количеством ответов и дате/времени/автора последнего сообщения, я правильно мыслю?

такой скрипт есть, он называется list.cgi и вот что он выдает:


Код:
3|{Название темы}|{Описание темы}|open|0|1|Admin|1074700027|Admin|1074700027
2|2|2|open|0|0|Admin|1074698235|Admin|1074698235
1|1|1|open|1|4|123|1074551304|Guest|1074695905
Автор: Smog
Дата сообщения: 24.01.2004 07:32
Svarga
как там с ковырянием кода?
Автор: Svarga
Дата сообщения: 01.02.2004 07:24
Smog

Цитата:
Svarga
как там с ковырянием кода?

невесело
полез в код — местами впечатления в духе "смотрю и плачу"

Что-то начал химичить:
http://forall.ru-board.com/Svarga/ib/forums.rar
(здесь на главной странице раздела выдаёт только чистые данные о разделе и темах — добавь в адрес &client=1, а потом > view source)

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


Касательно последовательности действий как мне теперь это видится:

Клиент делает обычный запрос скрипту (со всеми forum=21&topic=2144&start=20#lt и т.п.), но, скажем, вместо topic.cgi обращается к какому-нибудь cl_topic.cgi, а этот скрипт выдаёт ему всё как обычно, только без преобразования кода на выдаче в html...
В запросе придётся добавить ещё один параметр — номер последнего сообщения темы, которое есть в локальной базе — чтоб скрипт, выдающий сообщения, не выдавал ничего лишнего + придётся ещё смотреть на дату изменения *.thd-файлов, чтоб находить посты, которые были отредактированы — иначе их, по-моему, не выловишь.
Когда клиент запрошенные данные получил, он их анализирует и отправляет в локальную базу, а дальше формирует HTML из полученных данных...

С шаблоном придётся повозиться, на основе которого клиент всё показывать будет...
Автор: ironwit
Дата сообщения: 01.02.2004 09:54

Цитата:
+ придётся ещё смотреть на дату изменения *.thd-файлов, чтоб находить посты, которые были отредактированы — иначе их, по-моему, не выловишь.


а если отдельный скрипт, которому давать запрос на редактируемые посты? Или, при выдаче скриптом новых постов, он выдает и редактированный (свежий) просто его код (номер)указывается таким, чтобы при укладывании в базу этот пост заменил предыдущий...?
Автор: Smog
Дата сообщения: 01.02.2004 11:26
Svarga

Цитата:
Что-то начал химичить:

посмотрю вечерком

я так понимаю, что будут выдаваться все сообщения, начиная с такого-то номера?
можно ли сделать запрос скрипту не с 20, 40, 60, а с например 5 сообщения чтоб выдавал?

Добавлено
$topictitle =$client ? "$inforum\|$topicid\|$topictitle"
$output .=$client ? "$topictitle\|$topicdescription\|$pagestoshow\|$threadposts\|$threadviews\|$startedby\|$lastpostdate\|$lastposter\n"
выдает:
1|3|{Название темы}|{Описание темы}||1|6|Admin|1074702423|123 ,
где:
1 - номер раздела форума
3 - номер топика в разделе
{Название темы} - название топика
{Описание темы} - описание топика
[пусто] - $pagestoshow - это что и зачем?
1 - количество постов в теме
6 - количество просмотров темы
Admin - автор темы
1074702423 - дата последнего поста
123 - имя автора последнего поста

правильно?

вроде с этим разобрались...чем не устраивает?
Теперь бы с самими темами (topic.cgi то есть)

можно уже наброски делать клиента...чтоб формировал хтмл раздела из этого....
только вот я еще дельфи себе 8-ю не достал
и 7-ю тоже...тока 6-я есть

Цитата:
Короче общий вывод от этих расковыриваний: придётся писать отдельные скрипты,

пока может так оставим и начнем внутри тем разбираться?
Автор: Svarga
Дата сообщения: 01.02.2004 21:44
Smog

Цитата:
пока может так оставим и начнем внутри тем разбираться?

да что там разбираться — то же самое, что и с разделами...
сейчас подправлю board.cgi и topic.cgi — пусть в таком виде пока будет, а потом в отдельные

скрипты переделаю (там больше вычищать, чем переписывать придётся).

Smog

Цитата:
6 - количество просмотров темы

на руборде это не используется, но в ib2 есть...

Цитата:
[пусто] - $pagestoshow - это что и зачем?

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

Цитата:
правильно?

вроде правильно...

Значится, подправил пока временно, чтоб было с чем работать :
http://forall.ru-board.com/Svarga/ib/forums_topic.rar

Короче, сейчас с параметром &client=1 выдаётся:
forum.cgi:

Код: название_форума|дата_посещения_форума_залогиненным_юзверем|количество_тем_в _форуме

№_форума|№_темы|название_темы|название_темы|количество_постов|автор_темы|дата_последнего_поста|автор_последнего_поста
№_форума|№_темы.......... и т.д.
Автор: ironwit
Дата сообщения: 02.02.2004 07:31

Цитата:
Не знаю, по-русски ли выражаюсь...


по русски. К сожалению на локалхосте не имею руборда Так что буду ждать когда это все появится в инете... Чтобы начать тестирование...

2Smog - Если что, будем писать и на 6 (то есть ты на 6 а я на 7) Помучаемся конечно, но все выйдет
Автор: Svarga
Дата сообщения: 02.02.2004 12:47
ironwit

Цитата:
К сожалению на локалхосте не имею руборда

это не руборд — пока все операции над IkonBoard 2 производятся
Автор: Smog
Дата сообщения: 02.02.2004 13:23
ironwit

Цитата:
Помучаемся конечно, но все выйдет

запросто
настроен решительно
Svarga
http://forall.ru-board.com/Svarga/ib/forums_topic.rar еще не смотрел, вечерком или ночью гляну, опять поспрашиваю

Страницы: 1234

Предыдущая тема: Как сделать форму для аторизации для форума InvisionBoard


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.