LINUX.ORG.RU

Сообщения Krivenok_Dmitry

 

Алгоритм кластеризации по Гюстафсону-Кесселю

Форум — Development

Наверное вопрос не по теме, но если кто реализовывал сабж, то
подскажите.

Проблема очень простая: 
В алгоритме есть шаг на котором вычисляются расстояния между элементами
и центрами кластеров.
Так вот при вычислении этих расстояний нужно считать определитель
и  обратную матрицу для ковариационной матрицы (считается на 
предыдущих шагах).
Это расстояние называется взвешенным расстоянием Махаланобиса.

Вопрос вот в чём: 
Ведь не у каждой квадратной матрицы есть обратная!!!
Что делать в этом случае???
Я нигде не смог найти информации об этом, а ведь такую матрицу мы
получим если в наборе входных данных (векторов) один из атрибутов
(координат) будет одинаковым для всех данных!

P.S.
Эта проблема есть только в алгоритме кластеризации по Г-К.
В fuzzy C-means например всё проще - там матрица всегда единичная.

Но fuzzy C-means строит сферы, что слишком огрубляет результаты.
А ГК строит эллипсойды!
Krivenok_Dmitry
()

Написание модуля ядра - с чего начать?

Форум — Development

Я хочу изучить написание собственных модулей для ядра.
Документацию я уже нашёл (lkmpg).

Возник простой вопрос - какой из модулей ядра наиболее хорошо 
отражает сам принцип написания модулей?
На каком примере лучше изучать сами принципы написания?

Т.е. этот модуль должен быть до тривиальности прост и не загромождён 
собственно кодом предметной своей предметной области.

Хочется естественно не hello world, а что-то более полезное.
Если сравнивать с сетевым программированием, то это должен быть
аналог echo или time сервера.
Krivenok_Dmitry
()

После обучения SA через SA-Learn, письма не распознаются как спам

Форум — Admin

Я из mutt'a сохранил 2 спамерских письма в /tmp/spam
Затем запустил sa-learn --spam /tmp/spam
Получил следующее:
Learned tokens from 0 message(s) (1 message(s) examined)

Я пользуюсь почтой через IMAP и использую SpamAssasin на
локальной машине в связке с isbg.py (http://www.rogerbinns.com/isbg/)

Этот самый isbg.py работает у меня по cron'у и как говорил, что
спама нет, так и говорит. 
Почему SA не обучился на этих примерах?

P.S.
Также каждый час у меня делается sa-update.
Сейчас фильтруется 95% всего спама, но вот эти письма заставить его 
понимать как спам у меня не получилось :((
Krivenok_Dmitry
()

Безопасна ли передача пароля в скрипт через переменную окружения

Форум — Development

Есть скрипт, который должен вносить изменения в БД Oracle от 
пользователя БД sys.

Этому скрипту хочется передавать пароль пользователя sys через
переменную окружения.
export SYS_PWD=<pwd>
./script.pl
unset SYS_PWD

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

Если это небезопасный метод, то как тогда можно реализовать
мою задачу?
Принципиально то, что интерактивный режим НЕ ДОПУСКАЕТСЯ!!!

Передача в качестве параметра тоже не лучший вариант, т.к. 
ps auxw --width 1000 покажет как запускался скирипт и все его
параметры.
Можно конечно и извратиться, заменив пароль на ****** как это
сделано в smb.mount например, но я не знаю пока как сделать 
это на perl'e!
Krivenok_Dmitry
()

Передача пароля в скрипт через переменную окружения

Форум — Security

Есть скрипт, который должен вносить изменения в БД Oracle от 
пользователя БД sys.

Этому скрипту хочется передавать пароль пользователя sys через
переменную окружения.
export SYS_PWD=<pwd>
./script.pl
unset SYS_PWD

Я плохо разбираюсь в безопасности и поэтому хочу узнать - 
есть ли методы выяснить пароль при такой схеме?

Если это небезопасный метод, то как тогда можно реализовать
мою задачу?
Принципиально то, что интерактивный режим НЕ ДОПУСКАЕТСЯ!!!

Передача в качестве параметра тоже не лучший вариант, т.к. 
ps auxw --width 1000 покажет как запускался скирипт и все его
параметры.
Можно конечно и извратиться, заменив пароль на ****** как это
сделано в smb.mount например, но я не знаю пока как сделать 
это на perl'e!
Krivenok_Dmitry
()

Что находится под стеклом у бухгалтера....

Форум — Talks

....под стеклом у бухгалтера находится бумажка, а на ней написано:

Нечётные дни : 1,3,5,7,9,11,....
Чётные дни : 2,4,6,8,10,....

P.S.
No comments.
Krivenok_Dmitry
()

Запуск программы через xinetd от root'a, а на самом деле от daemon'a

Форум — Development

Есть linux'овый application server, работающий через xinetd
как шлюз между СУБД Oracle и виндовыми клиентами (на которых
нет Oracle Client).

Так вот запускается эта программка от рута (через xinetd).
А в виндовых приложениях есть возможность просмотра сессий
и в них указано, что программа запускается от пользователя daemon
(данная инфа доступна через Oracle OCI)!

Вывод же ps auxw на сервере показывает, что программа запущена
от root'а!

На каком уровне проблема, куда копать???
Krivenok_Dmitry
()

Тестирование скорости выполнения sysread в зависимости от разовой порции данных

Форум — Development

Я создал большой бинарный файл (134Мб) и решил найти закономерность - 
скорость чтения в зависимости от размера разовой порции.

Читающий скрипт
#!/usr/local/LAST/bin/perl
use strict;
use Time::Stopwatch;
 
my $size = @ARGV[0];
open FD,"<","1.bin" or die "Couldn't open file";
my $buf="";
my $buff="";
tie my $timer, 'Time::Stopwatch';
while (sysread(FD,$buff,$size))
{
  $buf .=$buff;
  $buff = "";
}
print "Len = " . length($buf) . " time = $timer \n";

Тестирующая обёртка
#!/usr/local/LAST/bin/perl
for (my $i=1000;$i<10000;$i+=1000)
{
   `echo "*********** $i ****************" >> log`;
   `./BinRead.pl $i >> log`;
   `./BinRead.pl $i >> log`;
   `./BinRead.pl $i >> log`;
}


А вот и результаты

*********** 1000 ****************
Len = 134184960 time = 1.44458103179932
Len = 134184960 time = 5.34793496131897
Len = 134184960 time = 12.9632449150085
*********** 2000 ****************
Len = 134184960 time = 12.9896860122681
Len = 134184960 time = 8.19250202178955
Len = 134184960 time = 2.76202511787415
*********** 3000 ****************
Len = 134184960 time = 6.86614799499512
Len = 134184960 time = 5.87107181549072
Len = 134184960 time = 24.3561189174652
*********** 4000 ****************
Len = 134184960 time = 10.9215641021729
Len = 134184960 time = 2.31534290313721
Len = 134184960 time = 7.81663918495178
*********** 5000 ****************
Len = 134184960 time = 2.64392805099487
Len = 134184960 time = 3.43289399147034
Len = 134184960 time = 6.88873481750488
*********** 6000 ****************
Len = 134184960 time = 4.62800908088684
Len = 134184960 time = 11.0599589347839
Len = 134184960 time = 6.89057993888855
*********** 7000 ****************
Len = 134184960 time = 7.4300639629364
Len = 134184960 time = 10.491378068924
Len = 134184960 time = 9.54563808441162
*********** 8000 ****************
Len = 134184960 time = 7.39949584007263
Len = 134184960 time = 7.56769704818726
Len = 134184960 time = 6.46512794494629
*********** 9000 ****************
Len = 134184960 time = 8.31921887397766
Len = 134184960 time = 10.0672011375427
Len = 134184960 time = 8.81646490097046


По ним то и вопросы
1) Почему в рамках одной порции настолько разные результаты
2) Какова в теории зависимость скорости от размера порции

P.S.
Может я провёл эксперимент неправильно?
Krivenok_Dmitry
()

Эффективная реализация экранирования в Perl

Форум — Development

Есть строка $str в которой могут быть символы с кодами от 0 до 127.
Требуется - для символов с кодами от 00h до 1Fh сделать замену
<символ с кодом NNh> --> \NN
Естественно слэш нужно тоже экранировать - \\

Т.к. реализовать нужно на Perl'e и эффективно - встаёт задача,
какими средствами пользоваться?

Возможно регулярные выражения? Но насколько они эффективны?
Не берусь судить не зная их внутренней реализации!
Krivenok_Dmitry
()

Трабла с xinetd

Форум — Development

Всем привет!

Я написал простенькую программу на perl'e, которая работает по
текстовому протоколу запрос-ответ.
Чтобы ещё сильнее упростить программу я решил исключить работу с 
сетью и вместо этого воспользоваться услугами суперсервера xinetd.
Прописал всё что нужно в /etc/services и /etc/xinetd.d/my_prog.

Программе можно посылать запросы (SQL) и получать ответы (в качестве
СУБД используется Oracle 10g).

Но я столкнулся с проблемой!!!
Программа my_prog запускается из скриптика my_prog.cmd (нужно только
для выставления переменных окружения).
Когда я просто запускаю скрипт
./my_prog.cmd
всё работает отлично.
Запускаю я именно от того пользователя, что указан в файле
/etc/xinetd.d/my_prog

Но стоит мне сделать следующую команду
telnet localhost <port of my_prog>
и возникает проблема коннекта к БД Oracle.

Выдаёт следующую ошибку
DBI connect('MYSID','user1',...) failed: ERROR OCIEnvNlsCreate (check ORACLE_HOME and NLS settings etc.) at ./my_prog line 16

Самое интересное то, что я вывожу хэш ENV в обоих случаях и 
значения переменных совпадают.
Запуск программы как я уже говорил происходит от одного пользователя
в обоих случаях.

Вопрос!
Почему при запуске через xinet.d программа работает некорретно?
Где портится среда, на каком уровне?
Krivenok_Dmitry
()

Как в cyradm поменять пароль IMAP пользователя не зная старый пароль, но обладая правами root на сервере

Форум — Admin

Как в cyradm поменять пароль IMAP пользователя не зная старый пароль, 
но обладая правами root на сервере?

Krivenok_Dmitry
()

Perl - значение по умолчанию для параметра подпрограммы

Форум — Development

Возможно ли задать значение по умолчанию для параметра sub'a?
Есть функция, типичный вызов которой выглядит так
foo("string",undef);
и только в исключительный случаях 
foo("error",1);

Хотелось бы иметь возможность вызывать так
foo("string");
foo("error",1);

Имеется ввиду, что включены все strict моды, жёстко заданы прототипы
и т.п.
Мне нужно как в C++.

Это возможно в Perl?
Krivenok_Dmitry
()

VIM : аналог Shift-k, только вместо man - perldoc

Форум — Development

Как прописать в VIM вызов по F5 программы perldoc -q <keyword>
Где <keyword> - текщее слово под курсором?

Я попарился, почитал доку и написал вот что
:map <F5> <Esc>bye !perldoc p
Думал, что работать будет так:
1) <Esc> - на всякий случай, если Insert mode - выходим из неё
2) b - в начало текущего слова
3) ye - копируем до конца слова, т.е. всё слово 
4) Далее вызываем внешнюю команду perldoc с опцией -q
5) p - я хотел, чтобы здесь он вставил слово из буфера
Но это естественно не работает
Как передать внешней программе слово из буфера???

Может я выбрал неверный путь?
Как правильно выполнить мою задачу?
Krivenok_Dmitry
()

Samba + mount + fstab = permission trouble

Форум — Admin

Всем привет!

У меня проблема - монтирую шару так:
//develop/TMP  /TMP smbfs   gid=all,uid=all,username=fake, password=fake 0 0

Поcле чего права на /TMP следующие:
drwxr-xr-x    1 all      all          4096 Oct 13 18:12 TMP

Мне же нужно, чтобы для группы all были права на запись!!!
Посмотрел man mount и выставлял различные опции : umask, dmask ....
Но ничего не получается - всегда монтируется с такими правами!
Я и для юзера all прописал в .bash_profile нужный umask - 
локальные папки создаются с правильными правами, а шары - нет.

Что делать?


Krivenok_Dmitry
()

Perl script + tgz = bin

Форум — Development

Всем привет!
Хочу реализовать следующую схему установки
1) Создаём архив бинарников и конфигов distr.tgz
2) Создаём perl-скрипт install.pl
3) Создаём bin файл
cat install.pl > install.bin
cat distr.tgz >> install.bin

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

Все компоненты уже есть. Остался один вопрос - как из perl-скрипта
распаковать архив, хранящийся в его конце?

Как реализовать задачу на Perl'e?
Есть ли поддержка идиомы here document.

Krivenok_Dmitry
()

Регулярное выражение и X в степени N

Форум — Development

Как составить регулярное выражение, отвечающее следующему:
1) Сначала произвольное кол-во единиц (хотя бы одна)
2) Затем последовательность нулей длиной 2^n, где n>0
т.е. 00,0000,00000000 итд
3) И опять произвольное кол-во единиц (хотя бы одна)

Krivenok_Dmitry
()

Программа преобразования НКА -> ДКА

Форум — Development

Существуют ли программы преобразования:
1) Автоматная грамматика -> НКА
2) НКА -> ДКА

Сам я ничего не нашёл.
Алгоритмы преобразования тривиальные, но достаточно объёмные 
чтобы делать вручную.
 
Krivenok_Dmitry
()

Есть ли утилита bmp2jpg

Форум — General

Нужна консольная (чтобы с find -exec стыковалась) утилита
для конвертирования bmp в jpg!
Знает кто-нибудь подобную???
Krivenok_Dmitry
()

Адекватная замена элипсисам (...) в C++

Форум — Development

Есть ли какая-нибудь адекватная замена элипсисам в C++?
Элипсисы конечно очень удобны, однако они небезопасны и к тому же 
применение средств C в программах на C++ должно быть по возможности
минимальным (моё мнение).

Мне нужно для следующей задачи:
Написал класс LoggerChain - цепочка логгеров (syslog, файл, stderr 
и т.п.).
Класс содержит в себе следующий объект:
std::vector<boost::shared_ptr<BaseLoggerDevice> >

У класса BaseLoggerDevice естественно есть виртуальная функция 
для вывода в лог.
В векторе хранятся интелектуальные указатели на потомков базового
класса.

Метод WriteToLog класса LoggerChain просто перебирает вектор и 
для каждого устройства вызывает функцию вывода.

Сам класс LoggerChain у меня будет синглтоном (что логично)
и чтобы не замарачиваться на постоянные обращения к Instance()
я хочу описать макрос-враппер logg.

Прототип logg естественно следующий:
logg(const char* fmt,...)

Короче проблема понятна.
Есть у кого-нибудь идеи?
Krivenok_Dmitry
()

BNF/EBNF Editor

Форум — Development

Набирать BNF/EBNF вручную достаточно утомительно.
Есть ли редакторы, позволяющие немного автоматизировать эту задачу?
Хотелось бы, чтобы была развитая система экспорта в различные 
форматы.
Krivenok_Dmitry
()

RSS подписка на новые темы