← All posts tagged Perl

freefd

Сегодня открыл для себя прекрасный скрипт http://zwitterion.org/software/aggregate-cidr-addresses/

Ну а уже вот таким нехитрым однострочником посчитал сегодня суммарное количество IP со всех BRAS'ов одного из регионов :)

echo $[$(awk '{print $1}' bb-msk | ./aggregate-cidr-addresses.pl | while read line; do ipcalc $line | awk '/Hosts/{printf "%s+", $2}'; done; echo -n '0')]

где bb-msk - файл с выводом команды 

show route protocol bgp community-name CommunityName aspath-regex ASNUM | no-more | match \*

freefd

Случайно посмотрел на тестовую инсталляцию мониторинга Equipment Manager от Orange System (http://orangesystem.ru/raz.php?id=113&lang=1) внутри со стороны серверной части. И ни разу не ожидал увидеть очень энтерпрайзный продукт с достаточно большим ценником написанным практически полностью на Perl. С одной стороны, cудя по стилю кода, это пишет не один человек, причём они помнят ещё Perl с версий 5.6. С другой стороны, там используются многие новые "технологии", например, событийная машина AnyEvent, SOAP сервисы.

О плохом — в коде очень много хардкода значений, констант, во многих скриптах подключается Data::Dumper, хотя после и не используется. БОльшая часть утилит, что комплекс использует в своей работе, реализована с нуля на Perl, в bash-скриптах discovery используется nmap. В некоторых скриптах виден хардкод HTML прямо в коде. Качество кода удовлетворительное с точки зрения человека, который уже порядка 10 лет пишет на Perl.

О хорошем — Насколько я помню/успел заметить, этот продукт внедрён в Синтерре, Медиа-Альянсе. На сайте комании указаны и другие компании. Много самописных модулей, которые достаточно комментированы, некоторые даже документированы POD. Сторонних модулей тоже не мало, как я понял, они появляются за неимением аналогов в CPAN. Возможность использования карт от Google, Yahoo, OSM, Microsoft, OpenStreetMaps. И, заключительное: Perl'у место в этом мире. Об этом говорит хотя бы тот факт, что этот продукт — достаточно сильный проект, возможно, даже лидер в своей нише.

Мои коллеги пока что ещё только щупают систему, так что собственного мнения в юзабилити я пока ещё не успел составить.

freefd

Проблеме подвержены все языки программирования и фреймворки, в которых не используется дополнительная рандомизация значений в функциях хэширования, например, уязвимы Java (Tomcat, Geronimо, Jetty, Glassfish), JRuby, PHP, Python, Rubinius, Ruby 1.8.7, V8 JavaScript Engine и ASP.NET. Проблема не затрагивает язык Perl и ветку Ruby 1.9.x, так как в этих языках уже используется внесение случайных изменений при формировании хэшей. В Perl проблема была устранена ещё в 2003 году, после публикации отчёта о возможности совершения подобной атаки.

via opennet.ru

freefd

Если Tie::Handle::CSV никак не хочет парсить корректно CSV в хеш, задайте ему руками разделитель

my $csvObj = Tie::Handle::CSV->new('/path/to/file.csv', header => 1, sep_char => ';');

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

freefd

Видимо, я окончательно ухожу от fcgi в пользу nginx perl embedded и потихоньку присматриваюсь к Node, уж очень тёплые чувства у меня к javascript, ведь первым языком, который я изучил досконально, был jscript :)

freefd

Как говорится, "ёбаный стыд", сижу патчу Net::XMPP::Connection от бага 4-летней давности о невозможности резолвить srv записи _xmpp-client._tcp. И это при

fd@workstation:~$ perl -V:version
version='5.12.3';
fd@workstation:~$ perl -MNet::XMPP -e 'print $Net::XMPP::VERSION'; echo
1.02

freefd

Эмпирические пути наглядно показывают нам, скрипты для высоконагруженных инсталляций nagios необходимо писать на perl, включая embedded perl в nagios. Переписал все скрипты сервисов на perl, la машины с 8 ядрами упал до 2.5-3 с 5-6. Остаётся как-то оптимизировать sql, ибо поллеры с других городов слишком активно пишут в sql данные других нагиосов, mysqld за полторы недели съел 225 часов процессора.

freefd

порой загадочное "unhandled callback exception on event (error, AnyEvent::XMPP::Client=HASH(0x93e9ca8), AnyEvent::XMPP::IM::Account=HASH(0x93e9e78) AnyEvent::XMPP::Error::Exception=HASH(0x9d64de8)): send_message: Couldn't get connected account for sending at /usr/local/share/perl/5.10.1/AnyEvent/XMPP/Client.pm line 345." на самом деле говорит лишь о банальной недостаче Net::SSLeay.

strace творит чудеса!

freefd

Net::Google::Calendar, cкромно потупя взгляд, говорит нам
"401 Authorization required at /usr/share/perl5/site_perl/5.10.1/Net/Google/Calendar.pm line 579."
при этом на 5.8.8 всё работает. начинаю копать, через 15 минут догадываюсь в функции login распечатать дамп объекта и вижу

'_response' => bless( {
'_content' => 'LWP will support https URLs if either Crypt::SSLeay or IO::Socket::SSL
is installed. More information at
.
',
'_rc' => 501,

и сразу же всплывает вопрос линук^Wавтору модуля: доколе, доколе разработчики должны заниматься подземным стуком?