Miranda NG Official Community Forum

Miranda NG русскоязычный форум => Плагины => Topic started by: tima_s on 25 04 2018, 05:48:19

Title: Плагины удаления истории
Post by: tima_s on 25 04 2018, 05:48:19
Здравствуйте.
Установлены плагины historypp и hystory sweeper light.
Хотя, как по мне, логичнее всего в ядро перенести функцию history on/off.

Установлены опции "не сохранять историю для всех контактов" и "удалять историю после закрытия окна сообщений".
Все работает, кроме истории отправленных файлов - они постоянно показываются в окне сообщений.
Можно ли это исправить?
Title: Re: Плагины удаления истории
Post by: dartraiden on 25 04 2018, 20:48:38
Завёл тикет
https://github.com/miranda-ng/miranda-ng/issues/1303
Title: Re: Плагины удаления истории
Post by: tima_s on 06 06 2018, 06:55:47
Уже больше месяца прошло, но разработчики так и не починили.
Title: Re: Плагины удаления истории
Post by: ghazan on 04 09 2018, 17:05:27
а там хз что и где фиксить, на самом деле.

я посмотрел бегло - оба плагина не разбирают, какие события тереть, обычные сообщения или файл трансферы. критерий только один - нечитанные сообщения не трутся, а вот почему конкретное окно лога (h++?) не помечает трансфер файла как прочитанный, это отдельный вопрос. лезть же в кучу паскаля никакого удовольствия не доставляет, тем более, что отладчика для него у меня нет
Title: Re: Плагины удаления истории
Post by: dartraiden on 04 09 2018, 17:26:02
Решение: в настройках TabSRMM выставить вместо History++ журналом либо встроенный журнал TabSRMM, либо установить плагин IEView и выбрать его там же в качестве журнала.
Title: Re: Плагины удаления истории
Post by: tima_s on 04 09 2018, 19:11:46
в настройках TabSRMM выставить вместо History++ журналом либо встроенный журнал TabSRMM, либо установить плагин IEView и выбрать его там же в качестве журнала.
А тогда у меня история вообще автоматически удаляться не будет этими плагинами?
Может все же можно как-то это пофиксить в нормальном режиме, чтобы не залезать в такие дебри?
Title: Re: Плагины удаления истории
Post by: dartraiden on 04 09 2018, 19:17:43
Quote
А тогда у меня история вообще автоматически удаляться не будет этими плагинами?
Будет. История ведь не зависит от наличия от History++. Каждый модуль в Миранде делает своё дело. Встроенный в табсы журнал или IEView, или History++ берут историю из базы и показывают пользователю, реализуя тем самым журнал, и помечают события прочитанными (как видим, H++ не все события помечает прочитанными). А NoHistory и HistorySweeper удаляют события из базы. Им нет дела до того, какой там журнал используется.

Соответственно, если один "кирпичик" в этой схеме глючит, его можно спокойно заменить на аналог.
Title: Re: Плагины удаления истории
Post by: tima_s on 04 09 2018, 19:26:00
А вы не могли бы тыкнуть, где и что настроить?
В Миранде столько настроек, что можно потратить месяц на поиск...
Title: Re: Плагины удаления истории
Post by: dartraiden on 04 09 2018, 19:26:36
Беседы → Журнал. Из выпадающего меню там можно выбрать журнал. Соответственно, нужно выбрать не H++, а встроенный журнал. Если встроенный журнал не нравится, то поставить IEView, который поддерживает шаблоны (https://addons.miranda-ng.org/ru/category/16) (шаблоны = красивое форматирование текста в окне беседы) и выбрать его в том же выпадающем меню.

Миранда тем и хороша, что настроить можно всё, а если что-то не нравится, то поменять на аналог. Не нравится стандартный список контактов - вот аж 3 других. Не нравится окно беседы - вот альтернативы. Не нравится журнал в окне беседы - вот ещё парочка :) Ещё бы переписать H++ с паскаля на плюсы, но это очень долго, нудно и желающих нет...
Title: Re: Плагины удаления истории
Post by: tima_s on 04 09 2018, 20:14:45
А NoHistory и HistorySweeper удаляют события из базы.
Так получается что не удаляют, раз другие плагины ее берут из базы?
Или в базе сообщения не удаляются, а только помечаются как удаленные?
Title: Re: Плагины удаления истории
Post by: dartraiden on 04 09 2018, 20:18:47
Контакт прислал сообщение. Это событие записалось в базу. Вы это сообщение прочитали (то есть, оно пришло, вы сделали вкладку/окно активным = это считается, что прочитали). Оно пометилось прочитанным в базе. Вы обменились файлами. Это событие записалось в базу (и вот тут, если используется H++, то он не пометил именно это событие прочитанным, а другие вышеупомянутые журналы пометили бы, если бы вы их использовали). Пока эти события есть в базе, журналы истории их показывают в окне сообщений. Дальше отрабатывают плагины удаления истории, стирая эти события из базы. Всё, их нет. Эти события больше не будут видны нигде никогда, их тупо нет в базе.

Выставите, например, в HistorySweeperLight очищение истории при закрытии окна сообщений. При каждом закрытии окна он сразу начнёт стирать сообщение из базы. Переоткрыв окно, в журнале вы уже ничего не увидите, потому что журнал при открытии окна беседы полез в базу, чтобы подгрузить историю, а там пусто.

Плагины удаления истории стирают все прочитанные сообщения по правилам, которые вы укажете в их настройках. Укажете при выходе - сотрут при выходе. Укажете при закрытии окна сообщений - сотрут при закрытии окна. Просто поменяйте себе H++ на любой другой журнал.
Title: Re: Плагины удаления истории
Post by: tima_s on 05 09 2018, 08:45:28
Беседы → Журнал. Из выпадающего меню там можно выбрать журнал. Соответственно, нужно выбрать не H++, а встроенный журнал.
А у меня там и выставлен сейчас "internal message log", а не History++.
И в HistorySweeperLight очищение истории при закрытии окна сообщений. Все чистится, кроме передаваемого файла.
Title: Re: Плагины удаления истории
Post by: dartraiden on 05 09 2018, 10:42:10
Настройки HistorySweeper покажите, пожалуйста.
И передача файлов исходящая или входящая?
Title: Re: Плагины удаления истории
Post by: tima_s on 05 09 2018, 11:27:56
https://prnt.sc/kquqix - скриншот настроек.
Передача файлов в основном исходящая, входящие давно не получал, но могу проверить, если надо.
Title: Re: Плагины удаления истории
Post by: dartraiden on 05 09 2018, 11:29:12
Попробую воспроизвести, правда, придётся ждать несколько дней, судя по настройке "удалять старше одного дня".

Я тестировал на исходящих с настройкой "удалять сразу" - всё удаляется.
Title: Re: Плагины удаления истории
Post by: tima_s on 05 09 2018, 11:37:29
А у меня сразу удаляется после закрытия окна, но после открытия с этим же абонентом в окне висит имя отправленного файла. Со временем оно уходит, но я не проверял точно, через сколько дней.
Title: Re: Плагины удаления истории
Post by: tima_s on 20 06 2020, 10:40:04
2 года прошло, до сих пор нет изменений (пробовал отправлять файл tox-протоколом).
Title: Re: Плагины удаления истории
Post by: dartraiden on 21 06 2020, 15:24:54
Мы движемся к уничтожению History++, который и вызывает проблему, как выяснили на предыдущих страницах.

Он написан на Delphi, в команде уже несколько лет нет паскалистов/дельфистов, а сишники в Delphi-код никто не полезут даже под угрозой расстрела.

На замену ему идет NewStory, который уже можно пощупать в ночнике.
Title: Re: Плагины удаления истории
Post by: tima_s on 21 06 2020, 15:34:06
Только пожалуйста не удаляйте NoHistory!
Много пользователей не хочет сохранять свою болтовню на компьютере...

И еще бы хорошо сделать в новом просмотрщике функцию удаления истории для всех контактов сразу,
а не как в HistoryPP, наводя на каждый контакт по отдельности.
Title: Re: Плагины удаления истории
Post by: dartraiden on 21 06 2020, 16:30:21
Э
И еще бы хорошо сделать в новом просмотрщике функцию удаления истории для всех контактов сразу,
а не как в HistoryPP, наводя на каждый контакт по отдельности.
Чистить всю историю у всех это задача NoHistory и HistorySweeperLight и они с ней справляются.

Пока хорошо хотя бы довести NewStory до более-менее паритета с History++



Title: Re: Плагины удаления истории
Post by: tima_s on 21 06 2020, 16:32:51
Чистить всю историю у всех это задача NoHistory и HistorySweeperLight и они с ней справляются.
Хотелось бы кнопку "удалить историю для всех контактов", как например в Скайпе или других мессенджерах, чтобы периодически можно было все очищать.
Неважно в каком плагине, наверное логически это было бы вернее в NoHistory, но теоретически и просмотрщик может почистить всю базу.
Title: Re: Плагины удаления истории
Post by: tima_s on 21 06 2020, 16:40:51
Чистить всю историю у всех это задача NoHistory и HistorySweeperLight и они с ней справляются.
Не справляются они. Там нет кнопки "полная очистка".
Сначала заводишь пользователя, для каждого нового выставляешь опцию - хранить для него историю или нет.
Это все очень полезно, но когда контактов не один десяток, и ты забыл выставить каждому опцию "не сохранять историю" - надо потом на каждом чистить через HistoryPP.
Можно же просто добавить кнопку "удалить всю историю для всех контактов"?
По-моему это сейчас есть в каждом более-менее крупном мессенджере.
Title: Re: Плагины удаления истории
Post by: dartraiden on 21 06 2020, 17:19:20
ля каждого нового выставляешь опцию - хранить для него историю или нет
Зачем? Там есть пункт "All contacts" (NoHistory) / "Default Action" (HistorySweeper), который означает "для всех существующих и тех, что добавятся в будущем".
Title: Re: Плагины удаления истории
Post by: tima_s on 21 06 2020, 18:28:31
Там есть пункт "All contacts" (NoHistory) / "Default Action" (HistorySweeper), который означает "для всех существующих и тех, что добавятся в будущем".

В NoHistory у меня это никогда не срабатывало - добавляешь нового, на него почему-то по умолчанию выставляется "хранить историю". Или кто-то не из контакт-листа пишет - та же картина.

В HistorySweeper на всех стоит действие "очищать историю старше 1 дня", но он далеко не всегда очищает.

У меня в паре стояли NoHistory и HistorySweeper, я отключил HistorySweeper, потому что подозреваю их несовместимость.

Может если NoHistory выключить а оставить только HistorySweeper - будет работать нормально.
Но я предпочел бы не очистку, а просто не сохранение в базу, этим они и отличаются.
Оба плагины на мой взгляд сыроваты. Давно пользуюсь ими, но куски истории все обнаруживаются в разных местах.
Title: Re: Плагины удаления истории
Post by: dartraiden on 21 06 2020, 23:01:41
не сохранение в базу
Это технически невозможно из-за архитектуры программы (где каждый плагин делает своё дело, благодаря чему сохраняется модульная структура и возможность иметь взаимозаменяемые плагины)

За запись в базу отвечает драйвер базы (и это круто, хочешь - имей базу в mdbx, хочешь - в sqlite, только драйвер базы другой воткни, а для остальной части Миранды это всё прозрачно, потому что непосредственное общение с базой берет на себя плагин), поэтому если хочется не писать в базу, нужно создать драйвер базы, который в ответ на прилетевшее от ядра распоряжение писнуть в базу, ответит, что операция завершена успешно, но на самом деле писать не станет.

Таким образом, есть только два пути:
- написать и поддерживать такой драйвер базы (мы с радостью принимаем авторов новых плагинов)
- тупо стирать историю из базы (что и делают обсуждаемые в этом топике два плагина)


Я завел тикет про удаление всей истории, это максимум, что я могу сделать.
Title: Re: Плагины удаления истории
Post by: tima_s on 22 06 2020, 06:36:51
Я завел тикет про удаление всей истории, это максимум, что я могу сделать.
Спасибо, а можно ли завести тикет для NoHistory, чтобы он вновь прибывших по умолчанию мог помечать либо красными (не сохранять), либо зелеными (сохранять),
в зависимости от переключателя, типа "как поступать с новыми контактами" ?

И еще хотелка - можно ли в базовой Миранде завести опцию "удалять всю историю при выходе из программы"?
Title: Re: Плагины удаления истории
Post by: dartraiden on 22 06 2020, 07:11:35
Quote
И еще хотелка - можно ли в базовой Миранде завести опцию "удалять всю историю при выходе из программы"?
Это работа для плагина удаления истории. Если он её не делает, то его нужно починить, а не дублировать функциональность, упихивая ее в ядро.
Title: Re: Плагины удаления истории
Post by: dartraiden on 22 06 2020, 07:12:49
Спасибо, а можно ли завести тикет для NoHistory, чтобы он вновь прибывших по умолчанию мог помечать либо красными (не сохранять), либо зелеными (сохранять),
в зависимости от переключателя, типа "как поступать с новыми контактами" ?
Я проверю, если он этого не делает, это явно баг.
Title: Re: Плагины удаления истории
Post by: tima_s on 22 06 2020, 07:19:12
Это работа для плагина удаления истории. Если он её не делает, то его нужно починить, а не дублировать функциональность, упихивая ее в ядро.
Вообще это базовый функционал у многих мессенджеров.
Здесь же придется просить эту опцию сразу у двух плагинов - NoHistory и HistorySweeper
Title: Re: Плагины удаления истории
Post by: tima_s on 22 06 2020, 07:26:39
Я проверю, если он этого не делает, это явно баг.
Не делает. Он у меня периодически сам ставит пометку на **Все контакты** зеленой, хотя перед тем я несколько раз ставил ее красной, затем он какие-то контакты хаотически помечает зеленым.
Скрины:
http://prntscr.com/t44gds
http://prntscr.com/t44iv9
Title: Re: Плагины удаления истории
Post by: tima_s on 22 06 2020, 21:35:06
За запись в базу отвечает драйвер базы (и это круто, хочешь - имей базу в mdbx, хочешь - в sqlite, только драйвер базы другой воткни, а для остальной части Миранды это всё прозрачно, потому что непосредственное общение с базой берет на себя плагин), поэтому если хочется не писать в базу, нужно создать драйвер базы, который в ответ на прилетевшее от ядра распоряжение писнуть в базу, ответит, что операция завершена успешно, но на самом деле писать не станет.

Таким образом, есть только два пути:
- написать и поддерживать такой драйвер базы (мы с радостью принимаем авторов новых плагинов)
- тупо стирать историю из базы (что и делают обсуждаемые в этом топике два плагина)
Тогда видимо на странице плагина NoHistory в wiki написано неверно?
https://wiki.miranda-ng.org/index.php?title=Plugin:NoHistory/ru
Выдержка оттуда - "В отличие от HistorySweeperLight, при использовании плагина NoHistory история не пишется в базу в принципе."
Title: Re: Плагины удаления истории
Post by: dartraiden on 22 06 2020, 23:04:15
Надо будет уточнить. Этот текст взят из документации к плагину, а плагин (как и документация) писался очень давно. Возможно, это было корректно по отношению к формату MMAP.

В принципе, можно проверить и эмпирически: достаточно с установленным плагином накидать в Миранду "Войну и Мир" и посмотреть на изменение размера базы.
Title: Re: Плагины удаления истории
Post by: tima_s on 06 07 2020, 07:07:16
На замену ему идет NewStory, который уже можно пощупать в ночнике.
Поставил, он не удаляет системную историю, как и History++
Title: Re: Плагины удаления истории
Post by: dartraiden on 22 08 2020, 00:01:23
Не делает. Он у меня периодически сам ставит пометку на **Все контакты** зеленой, хотя перед тем я несколько раз ставил ее красной, затем он какие-то контакты хаотически помечает зеленым.
Скрины:
http://prntscr.com/t44gds
http://prntscr.com/t44iv9
Не вышло повторить. Подобавлял контакты, они исправно наследуют политику от "Все контакты".  Может, от протокола зависит?

Нашёл мелкую багулю в HSL (https://github.com/miranda-ng/miranda-ng/issues/2553), но это фигня
Title: Re: Плагины удаления истории
Post by: tima_s on 22 08 2020, 08:53:26
Не вышло повторить. Подобавлял контакты, они исправно наследуют политику от "Все контакты".
Дело в том, что Ghazan недавно исправил этот баг.