Конференция "Журнал" » Обсуждение расширения протокола для Поиска по архивам и не только
 
  • Наиль © (08.11.09 17:51) [0]
    Чтобы прикрутить поиск DelphiMaster.net к DMClient нужно сделать две вещи.
    Сайт должен выдать список найденных веток, аналогично тому как Delphmaster.ru выдаёт список свежих веток.
    Потом сайт должен предоставить содержимое одной из выбраных веток, по желанию пользователя.
    Учитывая, что содержимое веток в архиве не меняется, то остальные возможности протокола на сайте реализовывать не обязательно.
  • Наиль © (08.11.09 18:18) [1]
    Сценарий приблизительно такой:
    1. В программе открывается форма, аналогичная форме на сайте DelphiMaster.net (только дата будет в стандартной форме)
    2. Далее отправляется запрос в одном из двух видов, примерно так:
    http://www.delphimaster.net/index.php?s=AnyText&pnumber=30&forum=&user=Zavsegdatyy&order=&dir=asc&title=on&m essage=on&date_begin=2000-01-01&date_end=2009-10-20&AsPlainText=1
    или
    http://www.delphimaster.net/cgi-bin/client.pl?s=AnyText&pnumber=30&forum=&user=Zavsegdatyy&order=&dir=asc&title=on&m essage=on&date_begin=2000-01-01&date_end=2009-10-20
    Сервер должен предоставить ответ в формате определёном для "2. Запрос о новых заголовках" в протоколе:
    http://www.ksoftware.ru/wiki/dmclient/dmclient_protocol2
    В первом варианте изменения минимальны на стороне сервера (нужно только добавить обработку параметра AsPlainText=1), во втором на стороне клиента.
    С моей точки зрения нужны оба варианта.
    3. Пользователь кликает на ссылке в клиенте. В результате выполняется запрос-ответ "3. Запрос о полной информации о ветви", с той лишь разницей, что вместо DelphiMaster.ru будет DelphiMaster.net
  • xayam © (08.11.09 19:10) [2]

    > Наиль ©   (08.11.09 18:18) [1]
    > http://www.delphimaster.net/index.php?s=AnyText
    > http://www.delphimaster.net/cgi-bin/client.pl?s=AnyText

    я вообще на перле не пишу, на php будет тогда ссылка http://www.delphimaster.net/client.php

    я вообще так понял должны быть те же параметры, что есть сейчас плюс обработка getforums=1, getnew=X&n=XX и getconf=XXXXXXXXX&n=XX&from=X&to=X и выдача в текстовом формате.
  • Наиль © (08.11.09 22:20) [3]
    > я вообще на перле не пишу, на php будет тогда ссылка http:
    > //www.delphimaster.net/client.php

    К сожалению я не пишу не на php, не на perl. Но мне помнится, что если в первой строке скрипта указан интерпретатор, то расширенее не имеет значение. К сожалению, у меня мало времени, и переделывание DMClient под разные названия скриптов может потребовать некоторое неопределёное время. Но если URL будет содержать cgi-bin/client.pl, то результат не заставит себя ждать.

    > я вообще так понял должны быть те же параметры, что есть сейчас

    Всё верно. К способности выдавать результаты поиска в оформленом (HTML) виде, нужно добавить возможность выдавать эти же результаты в "неоформленом" (без HTML) виде, специально для Клиентов. Нужно только определиться по какому признаку сайт будет определять, что к нему обратилась программа-клиент. Для всех существующих клиентов будет оптимальным использование приставки cgi-bin/client.pl. Или можно просто добавлять к используемым запросам AsPlainText=1. Возможны и другие варианты.

    > плюс обработка getforums=1, getnew=X&n=XX и getconf=XXXXXXXXX&n=XX
    > &from=X&to=X и выдача в текстовом формате.

    getforums

    - желателен, но необязателен, названия всех форумов известны и могут заложены в программу в виде констант. Либо взяты с delphimaster.net. Поэтому на данный момент можно от этого отказаться.
    getnew

    - вещь бесполезная, т.к. данные добавляются раз в неделю и очень много. Для поиска это будет только помехой.
    getconf=XXXXXXXXX&n=XX

    - а вот без этого никак. Весь смысл в том, чтобы найти и посмотреть какое-то интересное обсуждение.
  • uroboros © (09.11.09 13:31) [4]
    внезапно, дерейл!
    протокол отправки поменялся, что ли? никак не могу ничего отправить. а вроде бы ничего не менялось.
  • McSimm © (09.11.09 13:38) [5]
    протокола отправки не существует. нет такого в клиенте.

    предлагаю обсудить проблему почтой. адрес adm @ delphimaster . ru
  • McSimm © (09.11.09 13:48) [6]

    > uroboros ©   (09.11.09 13:31) [4]
    > внезапно, дерейл!

    А вы кто, какой софт тестируете и зачем ?
    Я добавил правило для вас, теперь будет работать какое-то время.

    Вот добавлю каптчу на сайт, будете знать :)
  • McSimm © (09.11.09 13:49) [7]
    и что такое "дерейл" ?
  • uroboros © (09.11.09 14:13) [8]
    Максим, ну на IP хоть посмотри. неужели техноэльфов так сложно узнать? у меня KPMC внезапно перестал отправлять. получает нормально, а отправка (ну, как у всех, через POST же, сто лет так делали %-) не фурычит. тупо возвращает 302 (или 303, забыл %-) да перекидывает на список топиков. а ответ — фигушки. однако же из бровзера ответ есть.

    вот я и интересуюсь: какую хитрую закорюку добавили, что у меня всё очень похоже на рабочее, а не работает?
  • uroboros © (09.11.09 14:13) [9]
    а, ну да. «дерейл» — это увод топика от изначального сабжа. %-)
  • uroboros © (09.11.09 14:14) [10]
    тестируем-с...

    ---
    Somebody set up us the bomb.
  • uroboros © (09.11.09 14:15) [11]
    о. таки работает же. я попал под спамобойку, видимо. ужас. всего каких-то нещасных год-полтора не появишься, и уже спамером считают.

    ---
    Somebody set up us the bomb.
  • McSimm © (09.11.09 14:31) [12]
    Ха, привет :)


    > и уже спамером считают.

    на dev2.delphimaster.ru можешь посмотреть - туда скидываются все сообщения отсюда, включая спамерские. Удовольствия мало.
    Так что борьба ни на жизнь, а на смерть.
  • McSimm © (09.11.09 14:32) [13]

    > ни на жизнь

    опечатка :)
  • uroboros © (09.11.09 14:37) [14]
    >[12] McSimm © (2009-11-09 14:31:00)
    >на dev2.delphimaster.ru можешь посмотреть

    а я подписан по рсс — старая привычка. можешь себе представить, на сколько дач я наделал кирпичей, когда в дохлый рсс внезапно спам посыпался. %-)

    ---
    Somebody set up us the bomb.
  • xayam © (09.11.09 23:23) [15]

    > Наиль ©   (08.11.09 22:20) [3]
    > Но мне помнится, что если в первой
    > строке скрипта указан интерпретатор, то расширенее не имеет значение.

    Это действует, когда скрипт запускается командным интерпретатором, а когда php настроен как модуль апача, что здесь можно писать только тег <?php ... ?> иначе первая строка попадет в вывод.

    > переделывание DMClient под разные названия скриптов может
    > потребовать некоторое неопределёное время. Но если URL будет
    > содержать cgi-bin/client.pl, то результат не заставит себя
    > ждать.

    ну если для тебя расширение и путь так важны, то я могу сделать в корне папку cgi-bin и в нее положить файл client.pl , а апач настроить на обработка файлов .pl php-интерпертатором, это должно просто решаться

    > Нужно только определиться по какому признаку сайт будет
    > определять, что к нему обратилась программа-клиент

    в протоколе же это есть. Или не реализован параметр UserAgent?

    7. Про user agent
    Для ведения логов использования клиентов чтения форумов подставляйте во
    *все* запросы к серверу UserAgent=Название.Версия
    Например:
    http://www.delphimaster.ru/cgi-bin/client.pl?getnew=lastmod&n=0&UserAgent=Название.Версия
    или, можете указывать агента в заголовке запроса, в стандартном поле
    HTTP_USER_AGENT (User-agent: xxx).
    (Ketmar: CDM отрекомендовывается как "CDM_by_Ketmar.X", где X -- версия).



    > можно просто добавлять к используемым запросам AsPlainText=1

    по-моему это не нужно, client.pl в любом случае будет реализован отдельно от DMSearch (index.php) и будет выдавать результат только в текстовом виде под клиенты. Но у меня баз пока оптимизирована под delphimaster, а надо чтобы она была как можно больше совместима с nntp-pop3-sntp-rss...-протоколами. Поэтому пока буду, наверное, долго занят изучением этих протоколов и выявлением общего знаменателя, благо набросок базы уже есть, соответствующий nntp

    > getforums - желателен, но необязателен, названия всех форумов
    > известны и могут заложены в программу в виде констант

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

    Но мы вроде для поиска хотели обсудить расширение протокола. Как его оформить? Лучше чтобы ты написал, как тебе удобнее выводить результат поиска и какие дополнительные параметры нужно реализовать (названия, значения).
  • xayam © (10.11.09 00:41) [16]
    предлагаю на запрос поиска веток вида

    s=%s%&pnumber=%d%&forum=%s%&user=%s%&order=%s%&dir=%s%&title=%s%&message=%s%&date_begin=xxxx-xx-xx&date_end=xxxx-xx-xx


    выдавать примерно такой текст

    ERROR=сообщения об ошибке по-русски | Allcount=xx
    TITLE=Тема ветки\tCNT=xxxxx\tNAME=xxxxx\tN=xxxxx\tDATE=xxxx-xx-xx


    Allcount - количество найденный веток
    TITLE - тема найденной ветки
    CNT - количество ответов в ветке
    NAME - автор ветки
    N - номер конференции (все значения и описания возвращаются скриптом по запросу client.pl?getforums=1)
    DATE - дата ветки в формате ГГГГ-ММ-ДД
    \t - символ табуляции.

    Примерно так, предложения, поправки. Видимо еще нужно предусмотреть вывод заголовков найденных веток "от" указанного значения и "до". Или не нужно?
  • xayam © (10.11.09 00:51) [17]
    Поправка
    предлагаю на запрос поиска веток вида
    s=%s%&pnumber=%d%&forum=%s%&user=%s%&order=%s%&dir=%s%&title=%s%&message=%s%&date_begin=xxxx-xx-xx&date_end=xxxx-xx-xx



    выдавать примерно такой текст


    ERROR=сообщения об ошибке по-русски | Allcount=xx
    TITLE=Тема ветки\tCNT=xxxxx\tNAME=xxxxx\tN=xxxxx\tID=xxxxx\tDATE=xxxx-xx-xx



    Allcount - количество найденный веток
    TITLE - тема найденной ветки
    CNT - количество ответов в ветке
    NAME - автор ветки
    N - номер конференции (все значения и описания возвращаются скриптом по запросу client.pl?getforums=1)
    ID - ID найденной ветки (для этой ветки id=1257691869)
    DATE - дата ветки в формате ГГГГ-ММ-ДД
    \t - символ табуляции.
  • xayam © (10.11.09 00:53) [18]
    Поправка 2
    предлагаю на запрос поиска веток вида

    s=%s%&pnumber=%d%&forum=%s%&user=%s%&order=%s%&dir=%s%&title=%s%&message=%s%&date_begin=xxxx-xx-xx&date_end=xxxx-xx-xx


    выдавать примерно такой текст

    ERROR=сообщения об ошибке по-русски | Allcount=xx
    TITLE=Тема ветки\tCNT=xxxxx\tNAME=xxxxx\tN=xxxxx\tID=xxxxx\tDATE=xxxx-xx-xx
    TITLE=Тема ветки\tCNT=xxxxx\tNAME=xxxxx\tN=xxxxx\tID=xxxxx\tDATE=xxxx-xx-xx
    ...
    TITLE=Тема ветки\tCNT=xxxxx\tNAME=xxxxx\tN=xxxxx\tID=xxxxx\tDATE=xxxx-xx-xx


    Allcount - количество найденный веток
    TITLE - тема найденной ветки
    CNT - количество ответов в ветке
    NAME - автор ветки
    N - номер конференции (все значения и описания возвращаются скриптом по запросу client.pl?getforums=1)
    ID - ID найденной ветки (для этой ветки id=1257691869)
    DATE - дата ветки в формате ГГГГ-ММ-ДД
    \t - символ табуляции.
  • xayam © (10.11.09 01:05) [19]
    вообще есть еще идея реализовать поиск по содержимому тега
    ...

    . Нужно это? Или слишком специализировано и это никому не нужно.
  • xayam © (10.11.09 01:07) [20]

    > по содержимому тега ..

    по содержимому тега CODE, чтобы можно было наравне с поиском по заголовкам и сообщениям, искать только в этом теге
  • Anatoly Podgoretsky © (10.11.09 10:25) [21]
    > xayam  (09.11.2009 23:23:15)  [15]

    > по-моему это не нужно, client.pl в любом случае будет реализован отдельно от DMSearch (index.php) и будет выдавать результат только в текстовом виде под клиенты. Но у меня баз пока оптимизирована под delphimaster, а надо чтобы она была как можно больше совместима с nntp-pop3-sntp-rss...-протоколами. Поэтому пока буду, наверное, долго занят изучением этих протоколов и выявлением общего знаменателя, благо набросок базы уже есть, соответствующий nntp

    Проблемма только с NNTP - поскольку должна быть независимая нумерация по каждому форуму, все остальные без проблем и как бы являются расширением NNTP
    Насколько я понимаю, ты пошел на предложеный мною варинт

    nntp-pop3-sntp-rss --> база

    База <--> delphimaster

    Первая цепочка независима, кроме постинга, от второй
    Постинг по схеме

    nntp-pop3-sntp-rss --> delphimaster --> ответ клиенту
  • Наиль © (10.11.09 12:32) [22]
    > [15] xayam ©   (09.11.09 23:23)


    > по-моему это не нужно, client.pl в любом случае будет реализован
    > отдельно от DMSearch (index.php) и будет выдавать результат
    > только в текстовом виде под клиенты. Но у меня баз пока
    > оптимизирована под delphimaster, а надо чтобы она была как
    > можно больше совместима с nntp-pop3-sntp-rss...-протоколами.
    > Поэтому пока буду, наверное, долго занят изучением этих
    > протоколов и выявлением общего знаменателя, благо набросок
    > базы уже есть, соответствующий nntp

    Что-то,я вас с Анатолием не пойму. Не могу уловить соль идеи.
    DelphiMaster.net - большой архив с удобным поиском.
    Информация на нём обновляется один раз в неделю.
    Если я буду пользоваться nntp или pop, то инструменты поиска мне не доступны.
    nntp/pop-клиент вынуждены закачивать полный список содержимого базы, пополняя локальную копию.
    Я понимаю, для чего nntp Анатолию. У него обновление происходит с высокой периодичностью, поэтому данные на nntp актуальные. Но использовать nntp для того, чтобы раз в неделю узнать, что на DelphiMaster.net появилось ещё 5000 новых веток. Это мне не понятно. Или же собираетесь дублировать поддержку клиентов как в DelphiMaster.ru, только через промежуточный протокол(ы)?
    Далее. Есть сайт DelphiMaster.net, он выполняет поисковый запрос пользователя или клиента, запрос передаётся базе данных. Между сайтом и базой нет ни каких nntp. Результат ПОИСКОВОГО запроса передаётся клиенту/пользователю через http. Опять для nntp нет места.
    nntp для DelphiMaster.ru отличное решение, т.к. позволяет следить за обсуждениями.
    Для DelphiMaster.net, nntp - страное решение: следить не за чем, а поиск в протоколе не придусмотрен.
    Что я упустил?
  • Наиль © (10.11.09 12:36) [23]
    > по содержимому тега CODE, чтобы можно было наравне с поиском
    > по заголовкам и сообщениям, искать только в этом теге

    Лишнее, т.к. слово "TListBox" встречается, как правило в тегах CODE, а слова "Привед, Медвед" за пределами тега.
    Другими словами, будет ли поиск по содержимому тэгов или нет, результат будет почти один и тот же.
  • Наиль © (10.11.09 12:40) [24]
    > в протоколе же это есть. Или не реализован параметр UserAgent?

    Клиенты рождаются и умирают достаточно часто, под всех не подстроишься.
    Иногда появляются новые браузеры, иногда UserAgent в Браузерах подменяется.
    Очередному пользователю будет обидно увидеть вместо DelphiMaster.net его "клиентский" вариант.
    Поэтому должно быть явное указание от клиента, что ему нужен текстовый вариант.
  • Наиль © (10.11.09 12:51) [25]
    > [16] xayam ©   (10.11.09 00:41)
    > Примерно так, предложения, поправки. Видимо еще нужно предусмотреть
    > вывод заголовков найденных веток "от" указанного значения
    > и "до". Или не нужно?

    Обязательно нужно, а то можно будет по какому-нибудь запросу получить пол базы. Поэтому нужно ограничить длину списка выдаваемого по умолчанию, либо давать опредёленые диапазон результатов, например найденые ветки от 12го до 24го.
    Пример большого запроса: "Игорь"
    А вот pnumber в запросе лишний, т.к. клиент сам разбивает на сраницы в соответствии настройками.
  • Anatoly Podgoretsky © (10.11.09 13:43) [26]
    > Наиль  (10.11.2009 12:32:22)  [22]

    А мне тоже бизнес идея не ясна, как мне кажется оно хочет сделать шлюз к delphimaster по нескольким протоколам.
    NNTP не требует казачки полного списка и всех сообщений - клиенты для него достаточно развитые, кроме того можно всегда перезакачать, но это очень дорогая работа, у меня база примерно 1.5 гб - устанешь скачивать, даже список скачать накладно, например для talks список порядка 400 000 записей.
    У меня действительно обычный шлюз к ДМ, но с расширеными функциями, для очень быстрого чтения и ответов. Я даже локальный кеш не использую и если мне потребуется поиск, то я просто сделаю поиского клиента к БАЗЕ. В общем ясность внести может только xayam
  • xayam © (10.11.09 22:57) [27]

    > Наиль ©   (10.11.09 12:32) [22]
    > DelphiMaster.net - большой архив с удобным поиском.
    > Информация на нём обновляется один раз в неделю.

    ну это ты польстил, уже давно не обновлялся, поскольку все переделываю

    > Я понимаю, для чего nntp Анатолию. У него обновление происходит
    > с высокой периодичностью, поэтому данные на nntp актуальные.
    >  Но использовать nntp для того, чтобы раз в неделю узнать,
    >  что на DelphiMaster.net появилось ещё 5000 новых веток.
    >  Это мне не понятно.

    хотелось бы просто увеличить количество клиентов, через которые можно получить доступ к информации из базы и возможности отправлять сообщения. Реализация NNTP - один из вариантов достижения этого, тем более у нас будут свои дополнительные форумы. Другим вариантов является реализация связки IMAP(поиск ветки и получение)/SMTP (отправка новых сообщений). Поэтому POP3, как я понял мне не нужен, IMAP его заменяет полностью, имея при этом достаточно много преимуществ:

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



    > > в протоколе же это есть. Или не реализован параметр UserAgent?
    > Иногда появляются новые браузеры, иногда UserAgent в Браузерах
    > подменяется.
    > Очередному пользователю будет обидно увидеть вместо DelphiMaster.
    > net его "клиентский" вариант.
    > Поэтому должно быть явное указание от клиента, что ему нужен
    > текстовый вариант.

    че то я тебя не пойму. Я хочу, по совету Анатолия, разделить интерфейсные части друг от друга, т.е. веб-доступ к файлу index.php - это одно (результат оформляется по моему усмотрению), client.pl - это второе (результат отсылается в текстовом виде и вывод оформляется клиентом DMClient или любым другим) и UserAgent передается скрипту в виде обязательного одноименного параметра; NNTP-клиент - это третье; IMAP/SMTP - четвертое. И что мы имеем? Одну базу и целую кучу представлений для каждого клиента, выбор клиента - дело каждого в отдельности. Поддержка и реализация каждого сервера - независима друг от друга. Но сначала, конечно, нужна универсальная база.
  • xayam © (10.11.09 23:35) [28]

    > Наиль ©   (10.11.09 12:51) [25]

    Поправка 3
    ЗАПРОС

    s=%s%&forum=%d%&user=%s%&order=%s%&dir=%s%&title=%s%&message=%s%&date_begin=xxxx-xx-xx&date_end=xxxx-xx-xx&from=%d%&to=%d%


    s - строка запроса
    forum - номер форума (все значения и описания возвращаются скриптом по запросу client.pl?getforums=1)
    user - автор ветки, которую нужно найти
    order - сортировка по умолчанию, вопросу, кол-ву ответов в ветке, нику, форуму или дате
    dir - направление сортировки: по убыванию или по возрастанию (asc или desc)
    title - флаг (on - включено, другое значение - выключено), означающий поиск по заголовкам веток.
    message - флаг (on - включено, другое значение - выключено), означающий поиск по сообщениям в ветке.
    date_begin - дата, с которой следует искать ветки, формат ГГГГ[-ММ[-ДД]], квадратные скобки означают, что вложенное в них - не обязательно указывать;
    date_end - дата, до которой следует искать ветки, формат ГГГГ[-ММ[-ДД]], квадратные скобки означают, что вложенное в них - не обязательно указывать;
    from - номер выборки, с которой следует давать ветки.
    to - номер выборки, по которую следует давать ветки.
    %s% - строка.
    %d% - число.
    ОТВЕТ

    ERROR=сообщения об ошибке по-русски | All=xx\tAllcount=xx
    TITLE=Тема ветки\tCNT=xxxxx\tNAME=xxxxx\tN=xxxxx\tID=xxxxx\tDATE=xxxx-xx-xx
    TITLE=Тема ветки\tCNT=xxxxx\tNAME=xxxxx\tN=xxxxx\tID=xxxxx\tDATE=xxxx-xx-xx
    ...
    TITLE=Тема ветки\tCNT=xxxxx\tNAME=xxxxx\tN=xxxxx\tID=xxxxx\tDATE=xxxx-xx-xx


    All - общее количество найденных веток
    Allcount - количество отправленных (ниже) из общего кол-ва найденный веток
    TITLE - тема найденной ветки
    CNT - количество ответов в ветке
    NAME - автор ветки
    N - номер конференции (все значения и описания возвращаются скриптом по запросу client.pl?getforums=1)
    ID - ID найденной ветки (для этой ветки id=1257691869)
    DATE - дата ветки в формате ГГГГ-ММ-ДД
    \t - символ табуляции.
  • Наиль © (11.11.09 15:08) [29]
    > Обязательно нужно, а то можно будет по какому-нибудь запросу
    > получить пол базы. Поэтому нужно ограничить длину списка
    > выдаваемого по умолчанию, либо давать опредёленые диапазон
    > результатов, например найденые ветки от 12го до 24го.

    В спешке не точно сформулировал.
    Лучше так: "30 найденных веток начиная с 31-го"
    Тогда запрос будет такой:
    s=%s%&forum=%d%&user=%s%&order=%s%&dir=%s%&title=%s%&message=%s%&date_begin=xxxx-xx-xx&date_end=xxxx-xx-xx&from=%d%&count=%d%



    > Другим вариантов является реализация связки IMAP(поиск ветки
    > и получение)/SMTP (отправка новых сообщений).

    С этим я ещё могу согласиться.
    Хотя мне всё равно не понять, зачем мне видеть в своём IMAP-клиенте десятки тысяч названий веток. На DM.net мне нужны и старые и очень старые ветки. А на DM.ru только свежие, а очень старых на нём и не бывает. Поэтому для DM.ru IMAP выдавал бы необходимый минимум информации, но DM.net - поисковый сайт и необходимый минимум определяется поисковым запросом.
    Допустим что будет использоваться IMAP. Тогда цепочка будет приблизительно такой
    IMAP -> Client.pl -> Программа-клиент
    Т.к. программе-клиенту всё равно, откуда Client.pl берёт данные, то не проще ли сделать пока цепочку такой:
    База Данных -> Client.pl -> Программа-клиент
    Тогда в процессе эксплуатации можно будет выявить все необходимые нюансы необходимые для более сложной схемы (основа экстремального программирования).

    > [27] xayam ©   (10.11.09 22:57)
    > UserAgent передается скрипту в виде обязательного одноименного
    > параметра

    Не согласен. UserAgent нужен для статистики и не для чего более.
    Client.pl - вход для клиентов по протоколу ДелфиМастера
    Для стандартных протоколов точками входа являются порты. Кстати есть возможность открывать порты кроме 80го?
    Привязываться к UserAgent бесполезно:
    Что делать, если появится новый Браузер со своим UserAgent?
    Что делать, если в Браузер подменят (есть и такие Браузеры) UserAgent?
    Что делать, если появятся новые программы-клиенты, у каждого свой UserAgent или вообще отсутствует? Допустим для зачёта кому-то будут даны задания по написанию клиентов в том числе и для DelphiMaster.net(ru). То-то помучаются студенты, пока не укажут правильно UserAgent.
  • Наиль © (11.11.09 15:39) [30]

    > > getforums - желателен, но необязателен, названия всех
    > форумов
    > > известны и могут заложены в программу в виде констант
    >
    > это скорей всего обязательно нужно, поскольку KilkennyCat
    > говорил, что у нас будут еще дополнительные форумы, которых
    > нет на dm. Но хотелось бы чтобы к этим форумам тоже был
    > доступ по всем выше перечисленным протоколам

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

    Отправлять - это для форумов. А я всё время говорю про внешнюю (по отношению к клиенту) систему поиска. Если сосредоточится только на этом, то потребуется не более 2х недель, даже при отсутствии свободного времени.
  • Anatoly Podgoretsky © (11.11.09 16:45) [31]
    > Наиль  (11.11.2009 15:39:30)  [30]

    Разработка клиента не требует полной реализации всех протоколов, если протоколы реализованы независимо друг от друга и работающие только с общей базой, то их можно добавлять по мере надобности.
  • Наиль © (11.11.09 17:02) [32]
    > [31] Anatoly Podgoretsky ©   (11.11.09 16:45)
    > > Наиль  (11.11.2009 15:39:30)  [30]
    >
    > Разработка клиента не требует полной реализации всех протоколов,
    > если протоколы реализованы независимо друг от друга и работающие
    > только с общей базой, то их можно добавлять по мере надобности.

    Точно клиента, а не клиентского транспорта?
    Клиенты всё таки обращаются к транспортам на основе протоколов, а не к базе.
    А вот транспорты точно обращаются к базе.
  • xayam © (11.11.09 19:37) [33]

    > Наиль ©   (11.11.09 15:08) [29]
    > UserAgent

    ты наверное не понял, что я имел ввиду, когда написал, что UserAgent - это параметр, передающийся методом GET в запросе. Или я неправ? Т.е. будет так.
    Поправка 3
    ЗАПРОС

    s=%s%&forum=%d%&user=%s%&order=%s%&dir=%s%&title=%s%&message=%s%&date_begin=xxxx-xx-xx&date_end=xxxx-xx-xx&from=%d%&pnumber=%d%&UserAgent=%s.s%


    s - строка запроса
    forum - номер форума (все значения и описания возвращаются скриптом по запросу client.pl?getforums=1)
    user - автор ветки, которую нужно найти
    order - сортировка по умолчанию, вопросу, кол-ву ответов в ветке, нику, форуму или дате
    dir - направление сортировки: по убыванию или по возрастанию (asc или desc)
    title - флаг (on - включено, другое значение - выключено), означающий поиск по заголовкам веток.
    message - флаг (on - включено, другое значение - выключено), означающий поиск по сообщениям в ветке.
    date_begin - дата, с которой следует искать ветки, формат ГГГГ[-ММ[-ДД]], квадратные скобки означают, что вложенное в них - не обязательно указывать;
    date_end - дата, до которой следует искать ветки, формат ГГГГ[-ММ[-ДД]], квадратные скобки означают, что вложенное в них - не обязательно указывать;
    from - номер выборки, с которой следует давать ветки.
    pnumber - кол-во веток, по которые следует пересылать клиенту.
    %s% - строка.
    %d% - число.
    UserAgent - клиент определяет в этом поле название и версию клиента в виде НАЗВАНИЕ.ВЕРСИЯ
    ОТВЕТ

    ERROR=сообщения об ошибке по-русски | All=xx\tAllcount=xx
    TITLE=Тема ветки\tCNT=xxxxx\tNAME=xxxxx\tN=xxxxx\tID=xxxxx\tDATE=xxxx-xx-xx
    TITLE=Тема ветки\tCNT=xxxxx\tNAME=xxxxx\tN=xxxxx\tID=xxxxx\tDATE=xxxx-xx-xx
    ...
    TITLE=Тема ветки\tCNT=xxxxx\tNAME=xxxxx\tN=xxxxx\tID=xxxxx\tDATE=xxxx-xx-xx


    All - общее количество найденных веток
    Allcount - количество отправленных (ниже) из общего кол-ва найденный веток
    TITLE - тема найденной ветки
    CNT - количество ответов в ветке
    NAME - автор ветки
    N - номер конференции (все значения и описания возвращаются скриптом по запросу client.pl?getforums=1)
    ID - ID найденной ветки (для этой ветки id=1257691869)
    DATE - дата ветки в формате ГГГГ-ММ-ДД
    \t - символ табуляции.

    > Хотя мне всё равно не понять, зачем мне видеть в своём IMAP-
    > клиенте десятки тысяч названий веток.

    это зависит от сервера, а сервер писать мне все равно и порт я могу открыть любой, поскольку выделенный IP

    > Допустим для зачёта кому-то будут даны задания по написанию
    > клиентов в том числе и для DelphiMaster.net(ru). То-то помучаются
    > студенты, пока не укажут правильно UserAgent.

    вообще проблемы не вижу, для этого есть ERROR, где можно написать что угодно, в том числе, что UserAgent обязателен.
  • Anatoly Podgoretsky © (11.11.09 21:21) [34]
    > Наиль  (11.11.2009 17:02:32)  [32]

    Я не знаю как назвать продукт, речь идет о системе, которую делает xayam, я назвал его условно КЛИЕНТ, его даже шлюзом назвать нельзя. Это просто сервер delphimaster.net с кучей сервисов, который кроме поиска и своих форумов имеет еще и шлюз к delphimaster.ru
    Доступ к серверу осуществляется на основе некоторого количества открытых протоколов и расширяема. Термин транспорт мне не нравится, но я понимаю о чем речь.
  • xayam © (11.11.09 21:49) [35]

    > Anatoly Podgoretsky ©   (11.11.09 21:21) [34]

    Что скажите про это
    http://pda.delphimaster.net/?id=1257940976&n=3
  • Anatoly Podgoretsky © (11.11.09 23:02) [36]
    > xayam  (11.11.2009 21:49:35)  [35]

    Дело не в деньгах, у меня просто нет желания за что ни будь браться, устал я очень. В моей коллекции русских переводов это тоже отсутствует
  • xayam © (11.11.09 23:35) [37]

    > Anatoly Podgoretsky ©   (11.11.09 23:02) [36]
    > Дело не в деньгах, у меня просто нет желания за что ни будь
    > браться, устал я очень. В моей коллекции русских переводов
    > это тоже отсутствует

    может переведете, если я сильно попрошу, пожалуйста!

    Вроде набросок NNTP-сервера сделал на основе patServer'а. Только не пойму какой символ перевода строки используется в telnet , \n не помогает. Реализовал две команды - help и quit :)
  • Anatoly Podgoretsky © (12.11.09 00:32) [38]
    > xayam  (11.11.2009 23:35:37)  [37]

    Стандартный CRLF
  • Наиль © (12.11.09 11:57) [39]
    > может переведете, если я сильно попрошу, пожалуйста!

    http://notabenoid.com/translate/books/?sort=t&olang=0&tlang=0&topic=4
    Социальные сети рулят.
  • Anatoly Podgoretsky © (12.11.09 13:09) [40]
    > Наиль  (12.11.2009 11:57:39)  [39]

    Уговорили, сделаю перевод как минимум 977 документа.
  • xayam © (12.11.09 13:43) [41]

    > Anatoly Podgoretsky ©   (12.11.09 13:09) [40]
    > Уговорили, сделаю перевод как минимум 977 документа.

    отлично, о цене договоримся, стучите в аську
  • Anatoly Podgoretsky © (12.11.09 14:33) [42]
    > xayam  (12.11.2009 13:43:41)  [41]

    Какие еще деньги, когда это для развлечения.
  • Anatoly Podgoretsky © (12.11.09 14:35) [43]
    > Anatoly Podgoretsky  (12.11.2009 14:33:42)  [42]

    Вот необольшая аннотация.

    От переводчика: это вольный перевод RFC-977, сделан на основе доброй воли и как умею, не лучше. Статус: любительский, свободно распространяемый. Никакие претензии по качеству перевода не принимаются, но я старался. J

    Переводчик – Анатолий Подгорецкий, © 2009

    Три страницы за час перевел.
  • xayam © (12.11.09 15:17) [44]

    > Anatoly Podgoretsky ©   (12.11.09 14:33) [42]
    > Какие еще деньги, когда это для развлечения.

    это по желанию, мое дело предложить. Но хотелось бы чтобы было понятно о чем речь. Особенно в части команд, запросов и ответов. Очень хорошо, что у Вас уже есть опыт программирования nntp :)

    > Anatoly Podgoretsky ©   (12.11.09 00:32) [38]
    > Стандартный CRLF

    че то не работает перенос строки \r\n , хотя мне кажется это не telnet'а проблема, а patServer'а, такое чувство, что он вырезает где-то эти символы перед отправкой, но не могу найти место где.
  • xayam © (12.11.09 15:57) [45]

    > xayam ©   (12.11.09 15:17) [44]
    > че то не работает перенос строки \r\n , хотя мне кажется
    > это не telnet'а проблема, а patServer'а, такое чувство,
    > что он вырезает где-то эти символы перед отправкой, но не
    > могу найти место где.

    это глюк какой-то php, пишу так

    function onConnect($clientID) {
     
     $this->sendData ( $clientID, "200 You connect to NNTP Server.\r\n", true );

    }


    работает
    пишу так

    var $readEndCharacter  = "\r\n";

    function onConnect($clientID) {
     
     $this->sendData ( $clientID, "200 You connect to NNTP Server." . $readEndCharacter, true );

    }


    не работает
  • xayam © (12.11.09 15:59) [46]
    А это я торможу, вот так надо
    var $readEndCharacter  = "\r\n";

    function onConnect($clientID) {

    $this->sendData ( $clientID, "200 You connect to NNTP Server." . $this->readEndCharacter, true );

    }

  • Anatoly Podgoretsky © (12.11.09 18:30) [47]
    > xayam  (12.11.2009 15:17:44)  [44]

    Мне тоже помогают в форумах бесплатно.
  • Anatoly Podgoretsky © (12.11.09 18:31) [48]
    > xayam  (12.11.2009 15:59:46)  [46]

    Я не могу помочь с PHP я его просто не знаю
  • xayam © (12.11.09 18:39) [49]

    > Anatoly Podgoretsky ©   (12.11.09 18:31) [48]
    > Я не могу помочь с PHP я его просто не знаю

    очень удобная штука этот patServer - считай это просто класс-заготовка для любого текстового протокола, в комплекте идут примеры реализации http, чата и т.д. И все работает в многопользовательском режиме в отличии от phpinn, который вообще какой-то недоделанный, только база есть.
  • Anatoly Podgoretsky © (13.11.09 15:16) [50]
    > Anatoly Podgoretsky  (12.11.2009 14:35:43)  [43]

    Перевод готов, вечером опубликую на сервере. Качеством доволен.
  • Anatoly Podgoretsky © (13.11.09 19:07) [51]
  • Anatoly Podgoretsky © (13.11.09 19:16) [52]
    > xayam  (11.11.2009 21:49:35)  [35]

    Перекрывает ли rfc-3997 следующий rfc-2980?
  • Наиль © (14.11.09 14:05) [53]
    > [40] Anatoly Podgoretsky ©   (12.11.09 13:09)
    > > Наиль  (12.11.2009 11:57:39)  [39]
    >
    > Уговорили, сделаю перевод как минимум 977 документа.

    Рад, что помог уговорить сделать доброе дело, но смущен.
    Ведь я не вас уговаривал, а показывал xayam'у сайт на котором и уговаривать не нужно.
    Правда, потом я посмотрел сколько времени тратит notabenoid на перевод подобных текстов.
    В общем - очень долго.
  • xayam © (14.11.09 21:56) [54]

    > Наиль ©   (14.11.09 14:05) [53]

    ну как утверждаешь протокол в [33] или еще будут поправки?
  • Наиль © (15.11.09 10:19) [55]
    > [54] xayam ©   (14.11.09 21:56)
    > > Наиль ©   (14.11.09 14:05) [53]
    > ну как утверждаешь протокол в [33] или еще будут поправки?

    Прочитал http://ru.wikipedia.org/wiki/Useragent
    Ещё раз скажу, что UserAgent нужен только для статистики и обязательным не является.
    Если в запросе указано date_begin=2009-01&date_end=2009-02, то показаны должны быть все сообщения и за январь, и за февраль. Думаю, это очевидно, но в описании протокола это д.б. упомянуто.
    Все параметры, кроме параметра S, необязательны (DMClient все равно будет передавать все).
    pnumber должен называться count, или хотя бы pcount.
    В остальном, вроде согласен.
  • xayam © (15.11.09 14:12) [56]
    -------------------------------------------------------------------------------
    Поправка 5

    ЗАПРОС

    s=%s%&forum=%d%&user=%s%&order=%s%&dir=%s%&title=%s%&message=%s%&date_begin=xxxx-xx-xx&date_end=xxxx-xx-xx&from=%d%&pcount=%d%&UserAgent=%s.s%



    s - строка запроса
    forum - номер форума (все значения и описания возвращаются скриптом по запросу client.pl?getforums=1)
    user - автор ветки, которую нужно найти
    order - сортировка по умолчанию, вопросу, кол-ву ответов в ветке, нику, форуму или дате
    dir - направление сортировки: по убыванию или по возрастанию (asc или desc)
    title - флаг (on - включено, другое значение - выключено), означающий поиск по заголовкам веток.
    message - флаг (on - включено, другое значение - выключено), означающий поиск по сообщениям в ветке.
    date_begin - дата, с которой следует искать ветки, формат ГГГГ[-ММ[-ДД]], квадратные скобки означают, что вложенное в них - не обязательно указывать;
    date_end - дата, по которой следует искать ветки, формат ГГГГ[-ММ[-ДД]], квадратные скобки означают, что вложенное в них - не обязательно указывать;
    from - номер выборки, с которой следует давать ветки.
    pcount - сколько веток следует пересылать клиенту.
    %s% - строка.
    %d% - число.
    UserAgent - клиент определяет в этом поле название и версию клиента в формате НАЗВАНИЕ.ВЕРСИЯ
    Обязательно нужно указать параметр s, forum или user, остальные параметры не обязательно, но рекомендуется указывать параметры pcount и from, для того чтобы вывод не оказался слишком большим. Параметр UserAgent также рекомендуется к использованию для статистики.

    ОТВЕТ

    ERROR=сообщения об ошибке по-русски | All=xx\tAllcount=xx
    TITLE=Тема ветки\tCNT=xxxxx\tNAME=xxxxx\tN=xxxxx\tID=xxxxx\tDATE=xxxx-xx-xx
    TITLE=Тема ветки\tCNT=xxxxx\tNAME=xxxxx\tN=xxxxx\tID=xxxxx\tDATE=xxxx-xx-xx
    ...
    TITLE=Тема ветки\tCNT=xxxxx\tNAME=xxxxx\tN=xxxxx\tID=xxxxx\tDATE=xxxx-xx-xx



    All - общее количество найденных веток
    Allcount - количество отправленных (ниже) из общего кол-ва найденный веток
    TITLE - тема найденной ветки
    CNT - количество ответов в ветке
    NAME - автор ветки
    N - номер конференции (все значения и описания возвращаются скриптом по запросу client.pl?getforums=1)
    ID - ID найденной ветки (для этой ветки id=1257691869)
    DATE - дата ветки в формате ГГГГ-ММ-ДД
    \t - символ табуляции.

    Рекомендуется к использованию 5-й пункт протокола:

    Есть опасения, что с введением данного клиента резко упадет посещаемость самого сайта,
    а значит и наша позиция в рейтингах, что только отрицательно отразится на популярности.
    Поэтому прошу в клиенте при запросе новых вопросов в конференции вызывать и счетчик,
    лишние 200 байт погоды не сделают, а польза будет большая.
    URL счетчика можно узнать так:
    http://www.delphimaster.net/cgi-bin/client.pl?counter=1
    меняться он будет редко, так что перепрочитывать его стоит не чаще чем раз в неделю.

    пример ответа:
    Allcount=1
    url=http://top.list.ru/counter?id=xxxxx;js=13;r=;j=true;s=800*600;d=16;rand=%rand%  referrer=http://www.delphimaster.net

    Здесь вместо %rand% стоит подставить случайное число < 1, например:
    0.18421077203239022
    И просто запросить этот URL, только обязательно !!! укажите referrer.
    Ответ нигде показывать не надо.


    -------------------------------------------------------------------------------

    Так нормально?
  • Наиль © (15.11.09 16:29) [57]
    pcount по умолчание = 500, если не указан.
    А что означает приставка p в слове pcount?
    В отношениие UserAgent пользуемся правилом 7 из протокола.
    Всё.
  • xayam © (15.11.09 18:14) [58]

    > Наиль ©   (15.11.09 16:29) [57]
    > А что означает приставка p в слове pcount?

    page. Короче число веток на одну страницу.
  • Наиль © (15.11.09 19:28) [59]
    pagecount - количество страниц
    Но если тебе нравится, то можно оставить pcount, потом для p можно придумать другую расшифровку.
  • xayam © (15.11.09 19:37) [60]

    > Наиль ©   (15.11.09 19:28) [59]
    > Но если тебе нравится, то можно оставить pcount, потом для
    > p можно придумать другую расшифровку.

    как называть в принципе не особо важно, главное задокументировать, но если есть другие варианты, то говори сразу. pcount должно быть равно Allcount в ответе, это понятно нужно скорей всего проверить на клиенте.
  • xayam © (15.11.09 19:39) [61]

    > xayam ©   (15.11.09 19:37) [60]
    >   pcount должно
    > быть равно Allcount в ответе, это понятно нужно скорей всего
    > проверить на клиенте.

    точнее pcount >= Allcount, поскольку на последней странице может быть меньше веток, чем на предыдущих
  • Наиль © (16.11.09 11:38) [62]
    > точнее pcount >= Allcount, поскольку на последней странице
    > может быть меньше веток, чем на предыдущих

    Но AllCount не больше 500. По крайней мере, так даёт DM.ru и мне это кажется правильным.

    > как называть в принципе не особо важно, главное задокументировать,
    > но если есть другие варианты, то говори сразу

    Поэтому я согласился на pcount. Хотя мне больше нравится count, о чём я уже писал в [29] и [55]
  • xayam © (06.12.10 20:32) [63]
    так, протокол реализован http://www.delphimaster.net/cgi/client.pl
    Клиентов не видно :)
 
Конференция "Журнал" » Обсуждение расширения протокола для Поиска по архивам и не только
Есть новые Нет новых   [118683   +11][b:0.001][p:0.005]