Author Topic: Неправильное время синхронизированных сообщений в истории ICQ  (Read 12248 times)

0 Members and 5 Guests are viewing this topic.

Offline Boris_M

Подскажите с таким моментом -
При запуске программы (ICQ протокол) приходят офф-лайн сообщения и в журнале (iEView)  и в истории (historypp) они отмечаются локальной датой и временем получения (к примеру запустил сегодня программу, пришли сообщения - 23.04.2020 12:20) в реальности контакт отправил их 22.04.2020 23:30 (и на сервере ICQ в офф клиенте так и есть)
Это где-то настраивается? Реальная (серверная) метка времени офф-лайн сообщений.
« Last Edit: 02 06 2020, 18:36:11 by ghazan »
 

Offline dartraiden

Не настраивается, это баг Миранды. Завёл тикет.
 
The following users thanked this post: Boris_M

Offline dartraiden

Если точнее, это не оффлайн-сообщения, а отсутствующие в базе. Оффлайн-сообщений как таковых в протоколе вообще нет.
При запуске Миранда запрашивает у сервера идентификаторы последних сообщений и сравнивает с идентификаторами в базе. Если отличаются, значит, этих сообщений в базе нет, они вгружаются.
 
The following users thanked this post: Boris_M

Offline Boris_M

При запуске Миранда запрашивает у сервера идентификаторы последних сообщений и сравнивает с идентификаторами в базе. Если отличаются, значит, этих сообщений в базе нет, они вгружаются.
Ну это я так обозвал - типа был в офф-лайн, пришли сообщения - подключился, получил "оффлайн сообщения" :).

И такой вопрос -  "Загрузить историю с сервера".Есть контакты на которых эта функция не срабатывает. На сервере (в офф клиенте) контакт есть, он "живой", сообщения есть 2019-2020 год, в локальной базе пусто, но никакой загрузки истории с сервере не происходит.
(помотрел netlog данного процесса - "Message 6751360659969016463 already exists" :) , то есть я так понял в базе есть история сообщений этих контактов, но в журнале и истории она не отображдается. Как поправить тогда?)

(Да и на web-skype протоколе на некоторых клиентах синхронизации безуспешна..., но это не для этой темы уже.)

ps
а как  посмотреть/редактировать базу отображаемых в журнале/истории сообщений? DbEditorPP.dll не вижу, не поддерживает - только вижу  в MsgExport историю в файлах %nick%.txt
профиль на Dbx_mdbx (а можно конвертнуть для Dbx_sqlite) ?
Вообще в каком формате рекомендовано держать профиль? Dbx_sqlite/Dbx_mdbx ?
« Last Edit: 23 04 2020, 21:47:30 by Boris_M »
 

Offline dartraiden

И такой вопрос -  "Загрузить историю с сервера".Есть контакты на которых эта функция не срабатывает. На сервере (в офф клиенте) контакт есть, он "живой", сообщения есть 2019-2020 год, в локальной базе пусто, но никакой загрузки истории с сервере не происходит.
Эта функция ещё не доделана, она грузит лишь 1000 самых ранних сообщений. Лучше дождаться, пока она научится грузить всё.

а как  посмотреть/редактировать базу отображаемых в журнале/истории сообщений?
Никак. Максимум - удалить сообщение целиком через просмотрщик истории.

Вообще в каком формате рекомендовано держать профиль? Dbx_sqlite/Dbx_mdbx ?
dbx_sqlite экспериментальный и весьма глючный, его нужно переписывать с нуля, по хорошему (но делать этого никто не будет, это был эксперимент одного из разработчиков, который уже очень давно и плотно занят другими делами вне Миранды).

Поэтому, dbx_mdbx и обязательно прочитать предупреждение на странице плагина в вики.
Кроме того, импорт из sqlite в mdbx невозможен из-за кривости dbx_sqlite.
« Last Edit: 24 04 2020, 17:04:42 by dartraiden »
 
The following users thanked this post: Boris_M

Offline dartraiden

При запуске программы (ICQ протокол) приходят офф-лайн сообщения и в журнале (iEView)  и в истории (historypp) они отмечаются локальной датой и временем получения (к примеру запустил сегодня программу, пришли сообщения - 23.04.2020 12:20) в реальности контакт отправил их 22.04.2020 23:30 (и на сервере ICQ в офф клиенте так и есть)
Это должно быть исправлено в девелоперском билде 22863 и новее, проверяйте.
 
The following users thanked this post: Boris_M

Offline Boris_M

Это должно быть исправлено в девелоперском билде 22863
:DRINK: Сейчас все верно помечается! Спасибо!
Эта функция ещё не доделана, она грузит лишь 1000 самых ранних сообщений.
Тут что-то другое - сделал новый профиль под sql (для теста) внес учетку эту же и на этом же контакте "Загрузить историю с сервера" - все ок, все 308 сообщений загрузились.В текущем же профиле mdbx и очищал журнал и удалял этот контакт из списка, вносил заново - "Загрузить историю с сервера"- ничего. Но как и писал по netlog  в это время видим "Message 6751360659969016463 (и т.д 308 строк - как раз сколько сообщений на сервере ) already exists" то есть как будто есть эти сообщения в базе локальной уже, а в истории и в журнале их не видать. :(
Отсюда и возник вопрос о редактировании базы сообщений и о формате sql (его то я могу править)
 

Offline dartraiden

Quote
профиль под sql
А, ну там вообще внутри полный хаос, как я сказал, нужно всё с нуля переписывать. Не надо трогать sqlite. В его отношении никто не гарантирует, что там что-то будет корректно работать. Его не даром нет и не будет в стабильной версии - он банально не готов.
« Last Edit: 24 04 2020, 18:19:57 by dartraiden »
 

Offline Boris_M

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

А вот под моим рабочим профилем mdbx- проблемы.В общем открыл базу mdbx и hex`ом перебил несколько записей из лога "Message 6751360659969016463 (и т.д 308 строк - как раз сколько сообщений на сервере ) already exists" на рандом (так и есть все эти 308 записей содержаться в базе, но ни в журнале ни в истории не показываются). После на данном контакте вызвал "Загрузить историю с сервера" и ожидаемо появились в журнале и в истории ровно те сообщения id кторых я покалечил hex ом в базе :) Остальные по логу - "already exists".Соотвественно вопрос - как исправить? Как удалить эти призрачные id в базе?
« Last Edit: 24 04 2020, 18:30:35 by Boris_M »
 

Offline dartraiden

Попробуйте сжать базу (предварительно сделав резервную копию): главное меню → База → Сжать. Зачастую это исправляет всякие глюки.

Ещё можно экспортировать историю с помощью плагина Msg_Export в JSON, полностью очистить историю у контакта и втянуть JSON обратно (ПКМ по контакту → Импорт).
« Last Edit: 24 04 2020, 18:38:04 by dartraiden »
 

Offline Boris_M

Ещё можно экспортировать историю
Я так и сделал - экспортировал историю из sql профиля из HistoryPP а к себе под mdbx импортировал туже историю (сжатие базы не помогало, пробовал).Спасибо за ответы и участие в проблеме!(если решится ещё недоделка с ссылками  по файлам  в журнале хотя бы будет уже более менее удобно :) )
 

Offline Boris_M

При запуске программы (ICQ протокол) приходят "офф-лайн " сообщения и в журнале (iEView)  и в истории (historypp) они отмечаются локальной датой и временем получения (к примеру запустил сегодня программу, пришли сообщения - 23.04.2020 12:20) в реальности контакт отправил их 22.04.2020 23:30 (и на сервере ICQ в офф клиенте так и есть)
Это должно быть исправлено в девелоперском билде 22863 и новее, проверяйте.
всё было хорошо, а в build #23017 снова неверное время полученых сообщений,  :(

Но такой момент:  если это сообщение удалить из истории, а затем выполнить "Загрузить историю с сервера" то оно уже прийдет и с меткой "правильного" времени - как и на сервере.
Другими словами сообщения полученные с сервера при старте Miranda  получают неверную метку времени. При выполнении функции  "Загрузить историю с сервера" - верную.
« Last Edit: 16 05 2020, 09:08:06 by Boris_M »
 

Offline dartraiden

Да, получение последних сообщения с серверной датой вызвало ещё более серьезные проблемы, поэтому откатили как было.
 

Offline Boris_M

получение последних сообщения с серверной датой вызвало ещё более серьезные проблемы
Если не сложно, какие ньюансы возникают, если сообщение отмечается с серверным временем, а не временем локального получения? Может есть какая переменная типа "время создания/время получения на сервере" которую можно вывести в журале?
« Last Edit: 17 05 2020, 14:43:39 by dartraiden »
 

Offline ghazan

Если не сложно, какие ньюансы возникают, если сообщение отмечается с серверным временем, а не временем локального получения?
При работе с серверным временем есть такое понятие, как "машина времени". Если на локальной машине время каким-то образом сбито, хотя бы на 10 минут, то совершенно рабочим сценарием является следующий:
- вы пишете кому-то, он отвечает (при этом всегда используется локальное время компьютера);
- вас вышибает из сети секунд на 30, тот продолжает писать;
- вы заходите в сеть и получаете пачку сообщений, которые встают в лог перед последними на расстоянии 10 минут (или потом они будут мешаться внизу лога те же 10 минут)
 
The following users thanked this post: Boris_M