-
Написал первые две главы Руковдства пользователя. Осталось еще две. Финал все ближе.
-
Анатолий, выложите актуальную базу и версию, я таки решил поставить.
-
Удалено модератором
-
Все актульное выложено
Но обнаружилась одна ошибка, ночь у провайдера сеть падало и сегодня все задержаные сообщения ушли, но текст неверный, пока даже не представлю где искать.
-
> guard_gg (11.11.2006 10:05:02) [2]
> guard_gg (11.11.2006 6:28:00) [0]
> не любят люди чатов Еще как любят, за уши не оттянешь, пойдут на любые нарушения.
-
> Anatoly Podgoretsky (11.11.2006 13:12:04) [4]
Не помогло, надо еще искать.
-
> Anatoly Podgoretsky (11.11.2006 13:14:05) [5]
Проверка опять. "Anatoly Podgoretsky" <=?Utf-8?B?QW5hdG9seSBQb2Rnb3JldHNreQ==?=> сообщил/сообщила в новостях следующее: news:1163197855.5@delphimaster.ru... Anatoly Podgoretsky © (11.11.2006 13:14) [5] > Anatoly Podgoretsky (11.11.2006 13:12:04) [4] Не помогло, надо еще искать.
-
Итак, скачал снова документацию и бинарник, (на базу трафик тратить не хочу, надеюсь старая валидна). Очистил реестр от старых значений. Запускаю. Окна нет.
-
> GuAV (11.11.2006 14:21:06) [6]
Проблему со сбоями у провайдере еще не решил, но решу При работе с сервером NNTP надо учитывать ряд моментов, например особенности клиента и особенности форума, который не является NNTP сервером. Он работает с понятием сообщение (одно) и номерами ответа, ответы не являются самостоятельными сообщениями. Клиент знает какие последнии MsgID он уже спрашивал. Новые могут не появиться в клиенте, если у них ИД меньше. При текущей ситуации, когда меняешь клиентское обеспечение, могу предложить простой трюк, в ОЕ можно сбросить список сообщений и заголовков, тогда они будут поновому загружены с сервера, а так как это персональный сервер, то это будет очень быстро и ничего с Интернета браться не будет. Я при изменениях так и поступаю. В стабильной работе это не потребуется, но будут иногда всплывать старые удаленые из базы или из клиента сообщения, это из-за принципов работы delphimaster.ru Если бы форум работал иначе, например если бы все сообщения имели уникальные возрастающие номера и клиентский скрипт их бы выдавал в порядке возразстания, то работа была бы иная. Сейчас скрипт выдает записи в любом порядке, со старым номером, а где то внутри есть признак измененых сообщений и выдает он только 500 тем. Клиент может обрабатывать только последовательно и учитывать даты ответов. И если форум не выдаст в списке сообщение то его никак не получить, или наоборот выдаст старое сообщение, то его придется получать. Но ничего дважды не будет закачано через Интернет, только действительно новые темы и новые ответы, по крайней мере пока они не будут удалены из базы. По наблюдением некоторые сообщения форум выдает только спустя несколько часов
-
> guav (11.11.2006 15:05:07) [7]
Я проверил валидность, все с ней в порядке, но навсякий случай я заменил на текущую. После того как просмотришь документацию то посмотри реестр, можно просто удалить всю ветку, она воссоздастся в значение по умолчанию. К сожалению за это время все изменялось и исправлялись обшибки и дважды менялся формат базы, добавлялись новые поля, естественно страрые бинарники с новым форматом работать не будут. И если есть записи в реестре, то они тоже будут сохранены. Например если были запрещены и главное окно и иконка, то скачивание новой версии ситуацию не изменит, надо или изменить вручную запись в реестре или удалить весь ключ. Меня сейчас волнует обнаруженая проблема, связаная с падением провайдера, пока причину неверной посылки на форум еще не нашел, но буду эмулировать разрыв канала и трассировать. Эта часть по крайней мере не в потоке, так что оттрасировать будет не тяжело, в отличии от потоков, когда управление в функцию идет попеременно из разных. Насчет беты - нет это не бета, это релиз, просто обнаружился глюк. И после исправления обращаться к коду уже не буду. Все остальное работает стабильно, кроме этой ситуации, которая ранее не встречалась, а этой ночью стала остро.
-
> Anatoly Podgoretsky (11.11.2006 15:08:08) [8]
Использование ручной установки требует ручного задания настроек. Но вся процедура хорошо расписана в документации, главное получить икону или главное окно. Остальное в диалогах.
-
слишком молчаливо он работает, не нашел базу, так молча перезапустился и всё.
> Использование ручной установки требует ручного задания настроек. > Но вся процедура хорошо расписана в документации, главное > получить
Неужели написать default занчение true при чтении из реестра сложнее чем написать лишние буквы в документации ? :-)
-
> Anatoly Podgoretsky (11.11.2006 15:17:10) [10]
> У меня подозрения, что при резком пополнении базы сервер не выдаёт всё что у него в базе есть при требовании заголовков, а только самые старые. Это большая загадка, в каком порядке он выдает, но все что он выдаст, я в обратном порядке добавляю в базу, чтобы хотя бы приблизительно номера шли по возрастанию, но выдает он не по порядку идентификаторов, а как то связано с датой последнего обновления. По этому при резком обновление номера идут не по порядку, а так как выдается только 500 то еще и не все. Так построен клиентский скрипт. Максим сейчас думает над его изменением, а вот систему нумерации изменить нельзя, поскольку это кардинальная вещь. Тоже относится и к анкетам, но тут Максим обещал уйти от дат в идентификаторах. NNTP требует, чтобы каждоее сообщение имело свой номер, и чтобы эти номера шли по возрастанию, не обязательно подряд, но каждый новый номер должен быть больше другого. Клиент запрашивает с помощью команды GROUP список номеров, первый, последний и общее количество сообщений. Далее на основание внутренней информации, какой он последний номер получал с сервера делает уже запрос командой ARTICLE по одному сообщению за раз, при этом он не знает какие номера есть, поэтому он перебирает все номера подряд, от последнего заполненого до последнего на сервере. В режиме опроса заголовков клиент посылает команду XOVER (которая почти не документировано в RFC) запрашивает диапазон заголовков x-y Все заголовки принимаются и помещаются в базу клиенте, затем можно получить сами сообщения. Клиент может запросить только те номера сообщений, о которых сообщил сервер, и если сервер не сообщил, то их получить нельзя. Теперь если вернуться к форуму, если сервер не сообщит, то их точно также получить нельзя или если даже они получены, но номер меньше заполненого в новостном клиенте, то клиент их тоже не спросит. Ну со вторым бороться легко, просто сбросить в клиенте список сообщений и он заново, за несколько секунд перечитает все заголовки, далее можно отсортировать по дате и отметить ненужные как прочитаные, можно и удалить, но они с высокой вероятностью снова всплывут, по неизвестым правилам, поэтому я предпочитаю скрывать, вместо удаления. Это из-за того, что сообщения не имеют своих номеров, согласно требованиям NNTP, номер имеет только тема. Зато мой клиент может резко снизить Интернет трафик, особенно если базой будет пользоваться несколько человек у локальной сети, прямо пропорционально их количеству, но и без этого снижение трафика очень заметное, у меня от 4 до 10 раз, учитывая, что я получаю все форумы, а если ограничиться только тематически, минус Начинающие то трафик мизерный. Меня правда трафик никак не волнует, меня волнует очень быстрая навигация по сообщениям, и она резко возросла, что мне как модератору очень важно, я могу очень быстро реагировать, ранее было так, прочитал сообщение, ответил, ждешь когда оно опубликуется, затем снова открываешь тему и крутишь до последнего прочитанного сообщения - это очень медленно. У меня есть одна задумка по прямому модерированию сразу из новостного клиента, если получится то будет очень удобно и быстро. Но пока этим не еще не занимался. Сейчас насущная проблема разобраться с глюком при падении провайдера.
-
> Anatoly Podgoretsky (11.11.2006 15:41:12) [12]
В общем, дружба NNTP и форума нелегко ладистя... Насчёт трафика - больше экономят клиенты где сообщения грузятся только при открытии тем, а темы - только при открыии конференций. PS: Клиент вообще выводит какие-нибудь сообщения об ошибках или это впринципе невозможно ? "Anatoly Podgoretsky" <=?Utf-8?B?QW5hdG9seSBQb2Rnb3JldHNreQ==?=> сообщил/сообщила в новостях следующее: news:1163197855.12@delphimaster.ru... Anatoly Podgoretsky © (11.11.2006 15:41) [12] > Anatoly Podgoretsky (11.11.2006 15:17:10) [10] > У меня подозрения, что при резком пополнении базы сервер не выдаёт всё что у него в базе есть при требовании заголовков, а только самые старые. Это большая загадка, в каком порядке он выдает, но все что он выдаст, я в обратном порядке добавляю в базу, чтобы хотя бы приблизительно номера шли по возрастанию, но выдает он не по порядку идентификаторов, а как то связано с датой последнего обновления. По этому при резком обновление номера идут не по порядку, а так как выдается только 500 то еще и не все. Так построен клиентский скрипт. Максим сейчас думает над его изменением, а вот систему нумерации изменить нельзя, поскольку это кардинальная вещь. Тоже относится и к анкетам, но тут Максим обещал уйти от дат в идентификаторах. NNTP требует, чтобы каждоее сообщение имело свой номер, и чтобы эти номера шли по возрастанию, не обязательно подряд, но каждый новый номер должен быть больше другого. Клиент запрашивает с помощью команды GROUP список номеров, первый, последний и общее количество сообщений. Далее на основание внутренней информации, какой он последний номер получал с сервера делает уже запрос командой ARTICLE по одному сообщению за раз, при этом он не знает какие номера есть, поэтому он перебирает все номера подряд, от последнего заполненого до последнего на сервере. В режиме опроса заголовков клиент посылает команду XOVER (которая почти не документировано в RFC) запрашивает диапазон заголовков x-y Все заголовки принимаются и помещаются в базу клиенте, затем можно получить сами сообщения. Клиент может запросить только те номера сообщений, о которых сообщил сервер, и если сервер не сообщил, то их получить нельзя. Теперь если вернуться к форуму, если сервер не сообщит, то их точно также получить нельзя или если даже они получены, но номер меньше заполненого в новостном клиенте, то клиент их тоже не спросит. Ну со вторым бороться легко, просто сбросить в клиенте список сообщений и он заново, за несколько секунд перечитает все заголовки, далее можно отсортировать по дате и отметить ненужные как прочитаные, можно и удалить, но они с высокой вероятностью снова всплывут, по неизвестым правилам, поэтому я предпочитаю скрывать, вместо удаления. Это из-за того, что сообщения не имеют своих номеров, согласно требованиям NNTP, номер имеет только тема. Зато мой клиент может резко снизить Интернет трафик, особенно если базой будет пользоваться несколько человек у локальной сети, прямо пропорционально их количеству, но и без этого снижение трафика очень заметное, у меня от 4 до 10 раз, учитывая, что я получаю все форумы, а если ограничиться только тематически, минус Начинающие то трафик мизерный. Меня правда трафик никак не волнует, меня волнует очень быстрая навигация по сообщениям, и она резко возросла, что мне как модератору очень важно, я могу очень быстро реагировать, ранее было так, прочитал сообщение, ответил, ждешь когда оно опубликуется, затем снова открываешь тему и крутишь до последнего прочитанного сообщения - это очень медленно. У меня есть одна задумка по прямому модерированию сразу из новостного клиента, если получится то будет очень удобно и быстро. Но пока этим не еще не занимался. Сейчас насущная проблема разобраться с глюком при падении провайдера.
-
> guav (11.11.2006 15:38:11) [11]Я иногда твои вопросы не могу понять, ну не попадает в контест. Ну это моя личная проблема. Насчет default так и сделано, просто в одно из ранних версий default был неверный Было ShowMainForm := false вместо True, когда я понял из твоих сообщения я исправил и сообщил тебе видимо ты упустил этот ответ. Вот выписка из программы.
if ValueExists('ShowTrayIcon') then
ShowTrayIcon := ReadBool('ShowTrayIcon')
else begin
ShowTrayIcon := True;
end;
if ValueExists('ShowMainForm') then
ShowMainForm := ReadBool('ShowMainForm')
else begin
ShowMainForm := True;
end;
-
>Я иногда твои вопросы не могу понять, ну не >попадает в контест. Ну это моя >личная проблема.
Может быть, я неправильно их формулирую.
Насчет default так и сделано, просто в одно из ранних версий default был неверный Было ShowMainForm := false вместо True, когда я понял из твоих сообщения я исправил и сообщил тебе видимо ты упустил этот ответ. Вот выписка из программы.
if ValueExists('ShowTrayIcon') then ShowTrayIcon := ReadBool('ShowTrayIcon') else begin ShowTrayIcon := True; end; if ValueExists('ShowMainForm') then ShowMainForm := ReadBool('ShowMainForm') else begin ShowMainForm := True; end;
У Вас в программе ошибка. Это таки работает, если нет раздела, но если вообще ключа нет, это не работает. Это вообще не так делается, а так:
// до чтения настроек ShowTrayIcon := True;
// чтение настроек if ValueExists('ShowTrayIcon') then ShowTrayIcon := ReadBool('ShowTrayIcon')
Вот ещё - перестало опять пускать без прокси (не грузится ничего), опять никаких сообщений об ошибке. Партизан, блин.
-
> GuAV (11.11.2006 15:52:13) [13]
Клиенты они разные, для разных целей, иначе бы их столько не было. Мне например надо получать все сообщения, а у кого то, только телефон или кпк Ну если прикинуть, то по темам при правильном алгоритме результаты одинаковые, список тем для всех одинаков, могут различаться алгоритмы, но будем считать, что они у всех одинаковые. К сожалению клиентский скрипт не позволяет это сделать нормально и оптимально, на что опираться то? По темам у всех одинаковые, разница начинается сколько тем и какие ответы считывать, сколько раз это делать, сколько человек могут пользоваться базой. Вот базовые критерии. > PS: Клиент вообще выводит какие-нибудь сообщения об ошибках или это впринципе невозможно ? сервер выдает и я их обрабатываю в полном размере, но выдает он их в виде большой HTML страницы, которую надо разбирать. Клиенту сообщения выдаются при запросе сообщений, а там возможно только 1. сообщение удалено или перемещено При опросе сообщений с форума выдаются только глобальные ошибки, например нет связи. Если сообщение удалено, то сообщение удаляется и из базы, если сообщение перемещено, то оно перемещается из одной таблицы в другую без обращение на форум и если потом в списке сообщений нового форума появится это сообщение, то оно не будет закачиваться с форума, если же сообщение появится раньше, наприме в форуме основное, то его придется закачать два раза, ну не совсем так, только одно сообщение из темы, но придется поскольку при закачке в форум скажем Начинающие еще не известно, что оно перемещено из форума базы. Мы сейчас пытаемся уговорить Максима сделать модераторский скрипт, который можно опросить до закачки сообщений и тогда уже не качать повторно сообщение. Более того при закачке даже в пределах одного форума сначала могут попасться сообщение и только позже запись о перемещение, но это минимизируется в определенных пределах. Тоже и на веб, что бы узнать что сообщение перемещено надо его предварительно открыть, потом прочитать что увы его уже нет. Точно также я читаю тему, а потом бах, а она уже перенесена, а трафик то потрачен, когда я войду в сообщение в новом форуме я опять загружу его повторно. Так вот NNTP минимизирует эти потери, второй раз, кроме особых случаев, сообщение качаться не будет. <=?Utf-8?B?QW5hdG9seSBQb2Rnb3JldHNreQ==?=> Вот это не лечится, это новостной клиет посылает в таком виде, но если сделать по инструкции, чтобы подпись начиналась с двух символов тире в отдельной строке, то удалять это не надо, программа сама удалит по линии отрыва. Уж тяжело отвечать на кучу сразу в одном сообщении и тебе будет тяжело читать, лучше короткими сообщения. но я ка понял, ты просто перенес сюда для обсуждения. Я здесь прервусь, что бы не смешивать в одном месте разные вещи и продолжу в другом ответе. Поскольку это подразумевает дисскуссии и будет тяжело обсуждать Последнее, сейчас в ответе вся длинная цитата и она будет отрезана автоматом при постинге, это то чего нет в других новостных клиентах и на большинстве серверов, удалять приходится ручками
-
> guav (11.11.2006 16:12:15) [15]Ошибки нет, это масло маслянное, ты делаешь значение по умолчанию несколькими строками выше, а я в момент получения. Результат абслютно одинаковый. Настройки считываются в самом начале программы, в датамодуле, еще до показа и до выполнения других вещей, поэтому результат одинаков, кроме количества машинных операций, у меня меньше, значение присваивается только один раз, а не дважды, но это так между делом, тут нет предмета для их экономии. Насчет ключа надо проверить код, что у меня там стоит true или false. Что бы правильно работаль надо True Вот что там стоит
with TRegistry.Create do
try
OpenKey(RegBase, True);
if ValueExists('DBName') then
-
> [17] Anatoly Podgoretsky © (11.11.06 16:30)
я не знаю что там стоит, но при отсутствии ключа AP\APC там прописывается False. ошибка в программе.
-
> [18] guav © (11.11.06 16:31)
При наличии ключа, но отсутствии значения там прописывается True, как и надо.
|