вспомнить все два
15:17 | 11-04-2006 | HOWTO, Internet, Software | No Comments
продолжая про историю и поиск, надо добавить вот что: один из плюсов server-based IM заключается как раз в хранении history на этом самом сервере и оттого в продолжении разговора без заглядывания куда-либо или глупого “напомни, о чем это я тебе говорил?”. заменяя же содержимое на пустоту, мы как раз историю и удаляем, а это плохо, конечно — и если в irssi последствия еще не так очевидны (поскольку лог и буфер между собой не связаны), то в centericq аналогичное движение как раз к удалению всей переписки и приведет.
поэтому возможны следующие варианты:
- либо не удалять содержимое history вообще (и, следовательно, каждый раз полностью дублировать отсылаемую информацию);
- либо написать простой фильтр, удаляющий письма в почтовой папке по количеству (не больше N) или по дате (не старше M);
- либо оставлять некоторую часть переписки (10, например, последних фраз) и дублировать при пересылке только их;
- либо не дублировать ничего и сохранять историю полностью;
- либо не дублировать ничего и сохранять только часть переписки.
к слову сказать, интересен только предпоследний вариант, а я — противный зануда. и вот почему: поскольку засорять мировой интернет и собственный mailbox дублями мне не позволяют религиозные убеждения, а Gmail не предоставляет возможности писать фильтры для лейблов (и другие клиенты меня на данном этапе не особенно волнуют), то остается середина, которая, впрочем, совершенно не золотая:
# оставляем последние 10 сообщений. они дублируются при пересылке ('малая кровь') # одно сообщение занимает 6 строк find ~/.centericq -iname "history" -exec bash -c "tail -60 {} > tmp && mv -f tmp {}" \\;
можно, кстати, и с помощью sed и “sliding window” technique, но tail будет быстрее, да и всяко проще. хотя и не так интересно.
но — дальше: FiL совершено правильно говорит, что это фу, плохой тон и вообще ошибочно в корне. и он прав, лучше так:
# на удаленной машине хранится вся история, # однако пересылаются только дополнения ('доступная кровь') # одно сообщение занимает 6 строк find ~/.centericq -iname "history" -exec bash -c "if [ -f history.old ]; then mail -s {} конечный@адрес.com < tail -n +$(($(grep -c . history.old)+1)); else mail -s {} конечный@адрес.com < cat history; fi; cp history history.old" \\;
или так:
# на удаленной машине хранится история за 1+1 пересылку, # пересылаются только дополнения ('сложная кровь') # одно сообщение занимает 6 строк find ~/.centericq -iname "history" -exec bash -c "if [ -f history.old ]; then tail -n +$(($(grep -c . history.old)+1)) > history.diff; else cat history > history.diff; fi; mail -s {} конечный@адрес.com < history.diff; cp history.diff history.old; mv -f history.diff history" \\;
или еще как-нибудь -- но завтра.