воскресенье, января 20, 2008

LWP через SOCKS

Для того чтобы использовать LWP через SOCKS можно воспользоваться замечательным модулем LWP::Protocol::http::SocksChain. В принципе там пример есть, но вкратце вам просто надо указать LWP чтобы он работал через этот класс и задать параметры для сокетов, вот например что нужно добавить для работы через SOCKS4 1.1.1.1:80 :
LWP::Protocol::implementor(http => 'LWP::Protocol::http::SocksChain' );
@LWP::Protocol::http::SocksChain::EXTRA_SOCK_OPTS = (
Chain_Len => 1,
Debug => 0,
Random_Chain => 1,
Chain_File_Data => ['1.1.1.1:80:::4'],
Auto_Save => 0,
Restore_Type => 1
);



На больших объёмах я его не гонял(не использую LWP на них), но в принципе работоспособный вариант...

P.S. Как видно из названия модуля он позволяет работать через цепочки SOCKS.

пятница, января 18, 2008

Как посчитать кол-во строк соответствующих регекспу в файле

Исходные данные - в файле pr_2 есть строки содержащие в себе подстроки вида Data result: X где X неотрицательное целое число меньше 100(не суть). Надо найти сколько строк для каждого такого X.

Решение одной строкой:
cat pr_2|grep -o -E "Data result: [0123456789]+"|sort -|uniq -c
ну или так(синонимично):
cat pr_2|grep -o -E "Data result: [[:digit:]]+"|sort -|uniq -c

На выходе примерно такое:
8585 Data result: 0
16 Data result: 18
1772 Data result: 28
9 Data result: 47

Первое число в строке - это кол-во строк соответствующих регекспу из этой строки в файле pr_2.

среда, января 16, 2008

Работа в linux. Заметки на полях.

Решил вобщем записать то что регулярно использую (это будет возможно полезно остальным), и то что регулярно забываю(это будет полезно мне :) ) при работе(различного рода) в linux... Так что наверное этот пост не для всех. Советы эти малосвязны друг с другом можно сказать это заметки на полях.

Для работы на удалённом хосте используйте screen. Даже если сессия оборвётся вы всегда сможете быстро законектиться и оказаться в точно том же состоянии которое было до разрыва, более того вы можете загрузить любую из сессий screen которые были созданы. Краткий перечень команд:
  • создание сессии screen -S SessionName
  • создание нового "окна" shell Ctrl-a c
  • переход между shell'ами Ctrl-a shell# где shell# это номер shell'а от 0 и выше
  • посмотреть список сессий скрина screen -ls
  • убить активный shell exit
  • выйти из текущего скрина Ctrl-a d
  • загрузить ранее созданную сессию screen -d -R SessionName
Вобщем наверное сходу не всем понятно зачем это надо и как работает, но попробуйте и не пожалеете.

-----

Если вам надо скопировать например первые 100 строк одного файла в другой(бывает часто нужно с тестовыми данными) то вы можете сделать это так:
sed -n '1,100p' file1 > file2

-----

Для поиска утечек памяти и например багов в многопоточных приложениях используйте valgrind. Ключи запуска перечислять не буду - смотри сайт и valgrind --help.

-----

Для отладки программы когда нужно посмотреть системные вызовы, сигналы и т.п. я советую использовать strace. Для подробностей читайте мануал, лучше чем там не написать. :)