Monday, July 18, 2011

Мысли о конфигурационных файлах.

К сожалению, простого и универсального решения в плане конфигурации некоторой достаточно сложной программы не существует. И каждый, кто пишет систему для конфигурации, либо изобретает что-то новое, либо берет одно из готовых (универсальных) решений, либо пытается комбинировать.

Friday, July 15, 2011

Отчет о поездке в Киров на машине

Так уж сложилось, что я недавно съездил в Киров на машине в третий раз. Поэтому решил написать небольшой отчет, который может помочь тем, кто едет в том направлении (Москва - Нижний Новгород - Киров) в первый раз.

Цвета подсказок eclipse в ubuntu.

При запуске eclipse под ubuntu подсказки отображаются черными на черном. Решения этой проблемы подробно рассмотрены тут:
https://bugs.launchpad.net/ubuntu/+source/light-themes/+bug/540332

Для себя я  выбрал способ добавления в ini файл опций раскраски:



При этом, если какой-то плагин продолжает показывать корявые цвета, то его настройки можно найти в той же директории и таким же образом похачить. Например, так я починил плагин ShellEd (net.sourceforge.shelled.ui.prefs).

Thursday, July 14, 2011

BSD diff

Исправляя проблему в rspamd с неверным рассчетом "похожести" частей в мультипарте, решил заменить вычисление расстояния Левенштейна на поиск максимальной общей подстроки - алгоритм, используемый в diff. В итоге нашел алгоритм под MIT лицензией (практически аналогичной BSD), который мне и подошел: http://www.ioplex.com/~miallen/libmba/dl/src/diff.c
После небольших изменений под glib (например, использование GArray) я написал тест для сравнения с вычислением расстояния Левенштейна. Для коротких текстов разница в скорости практически незначительна, но уже на 20кб тексте расстояние Левенштейна считалось 8 секунд, а diff алгоритм выполнился за 8 миллисекунд, что вполне приемлимо для работы.
Теперь пытаюсь найти алгоритм для вычисления нечеткой сигнатуры для письма. Используемый сейчас алгоритм - производная от ssdeep - очень плохо устойчив к сдвигам внутри текста. Любой сдвиг гарантированно разбивает несколько участков сигнатуры. Кроме этого, есть задача сокращения размерности сигнатуры (сейчас это 64 символа) для того, чтобы искать сигнатуру по KD-дереву, которое опять же плохо работает для больших размерностей (неэффективно как в плане памяти, так и в плане нахождения похожих элементов).

Wednesday, July 13, 2011

Новый переезд

В связи с ублюдской политикой РосНИИРОСа относительно доменов третьего уровня, я принял решение перенести свой технический блог сюда. Благо, импортировать данные из wordpress не составляет никаких трудностей.

Tuesday, May 25, 2010

Обсчет данных ip accounting по заданному ip

Возникла задача разбирать логи ip accounting'а с целью определить, какой пользователь куда тратит свой трафик. Для этой цели написал простой перловый скрипт, который разбирает строчки данных ip accounting'а, ищет строчки, относящиеся к заданному ip и выводит 2 списка: общий список адресов исходящего и входящего трафика, и список 5-ти самых активных адресов. Возможно, кому-то пригодится. Лежит тут: http://cebka.pp.ru/stuff/ipacct_counter.pl. Пример использования:

# cat /data/log/ipacct/2010-05-25/2010-05-25-00 | perl ipacct_by_dest.pl <ip>

Bitbucket.org

В связи с многочисленными проблемами работы с sourceforge, связанных, например, с невозможностью управления trac'ом, я решил, что лучше будет перенести публичный репозиторий на http://bitbucket.org. Это платформа для публикации кода, где все элементы помещаются в mercurial репозитории (например, wiki). Это делает очень удобным резервное копирование информации. Так что http://rspamd.sourceforge.net сейчас редиректит на bitbucket. Также я практически дописал основную документацию к rspamd, и теперь она доступна в том числе в wiki butbucket'а. Для конвертации из texinfo, который я использую для написания документации, в wiki формат (creole - http://www.wikicreole.org/) я написал небольшой скрипт на перле, который конвертирует основные элементы документации (лежит тут: http://cebka.pp.ru/stuff/info2wiki.pl). Разумеется, он конвертирует неполный набор тегов docbook и зачастую работает не совсем верно, но, насколько я знаю, это единственный способ конвертации, т.к. варианты texinfo->docbook->wiki также не реализованы нормально. Кроме этого, я, наконец, затегал 0.3.0. В планах к 0.3.1 написание smtp прокси для обработки спама на ранних стадиях, а также допиливание документации к lua API rspamd.