Конференция "Журнал" » Обсуждение расширения протокола для Поиска по архивам и не только
 
  • 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
    Социальные сети рулят.
 
Конференция "Журнал" » Обсуждение расширения протокола для Поиска по архивам и не только
Есть новые Нет новых   [118677   +68][b:0][p:0.002]