Пятница, 19 декабря

Сообщество ru_perl в LiveJournal: XML

XML::XPath, XML::Bare, XML::Fast, XML::Smart, XML::LibXML, etc, безусловно, хороши. Но - в идеальных условиях (гусары, про зависимости - молчать!). В реальных они падают мордой в лужу, и даже не пытаются вставать, натыкаясь на что-то, хоть сколько-нибудь некорректное.
Пока самый выжваемый, получается, XML::TreePP?

P.S. Кто сказал Mojo?

Четверг, 18 декабря

Блог программиста — Perl, Ruby, C#: Что такое процесс

Что такое процесс. Что такое сигнал. Примеры perl-кода: создание процесса, передача процессу сигналов. Что такое сигналы. Функции fork, exec, wait, waitpid. Таблица процессов. Команды free, top, ps и другие. Данная заметка — это просто компиляция материалов из нескольких источников, с целью сбора некоторой справочной информации, которую в дальнейшем можно использовать как шпаргалку. Использованные источники указаны […]

Хабрахабр: Метки / perl: День рождения Perl и лучшие решения Golf от Moscow.pm


Сегодня исполняется 27 лет со «дня рождения» одного из самых популярных на сегодня языков программирования — Perl. На нём создано несметное множество приложений и интернет-ресурсов, в том числе и имеющие многомиллионные аудитории, и соответствующие финансовые обороты. За примерами далеко ходить не придётся: Amazon, Yahoo!, Slashdot. Последние 20 лет он входит в десятку наиболее используемых языков, несмотря на слухи о своей кончине. Однако многомиллионная армия Perl-программистов, ежегодно выдающая на-гора множество продуктов, убедительно опровергает инсинуации верблюдоненавистников. Как говорится, собака лает — караван идёт. С момента своего появления в 1987 году, Perl взрастил уже два поколения программистов, и нет никаких причин отказываться от Жемчужного Корабля Пустыни ещё лет 30 как минимум. Так что мы с удовольствием поздравляем всех Perl-программистов с днём рождения их «родного» языка, Ларри Уоллу желаем долголетия календарного и творческого, чтобы ему хватило задора на создание ещё пары версий Perl.

Также ко дню рождения этого замечательного языка мы приурочили публикацию решений победителей в небольшом конкурсе программистов Golf, объявленном 3 октября в рамках митапа Moscow.pm.
Читать дальше →

XPoint.ru | Программирование::Perl::Основы: Подсчет количества символов в строке

Добрый день! Возникла проблема с подсчетом кол-ва символов в строке. Если $message содержит в себе латинские или циферные символы, все считается корректно, если же в переменной строка на кириллице, то символов в 2 раза больше, чем есть на самом деле. Объясните пожалуйста, что я делаю не так. Спасибо.

$message;
$l = length $message;
$l2=0;
while($message=~/./g){$l2++}

Хабрахабр: Метки / perl: Perl. 27 лет спустя


                              Обычный программист знает о Perl только то, что язык мертв, 
                              а код на нем нечитаем. Но программист на Perl часто не знает даже этого.

В каждой начинающей рок-группе должен быть Perl-программист, который бы демонстрацией своего кривого нечитаемого кода со сцены взывал к низменным инстинктам толпы, разогревая ее.

Дань стереотипам.


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

    Несметное множество статей на просторах интернета описывают Perl тех времен, когда небо было зеленым, трава голубой, а Ельцин в пьяном угаре радовал страну зажигательными танцами перед телекамерами, задавая ритм рейверам, что танцевали на той голубой траве и под тем зеленым небом. И код из тех статей все еще компилируется. В результате у большинства программистов представление об этом языке представлено информацией 10-15… и даже 20 летней давности. Не следуют упускать из виду инерционность мышления тех, кто писал те статьи.

    Поэтому сегодня я попытаюсь пролить свет на то, что же происходит с языком на его начинающемся 28 году жизни. Ведь сегодня у Perl день рождения — ему 27 лет. 20 лет из которых существует его пятая версия. Заходите, будет весело. Читать дальше →

Среда, 17 декабря

Сообщество ru_perl в LiveJournal: Как определить смещение во временной зоне для Windows

Возникла проблема в получении временной зоны в Windows. Дело в том, что использовании функции strftime и для формата %z, и для %Z выдает название зоны словами. На *nix первый как и положено выдает смещение в часах/минутах, например
+0300
Проверял на доступных разных ОС и сборках Перла - получал везде текст для %z.

Пытался найти какую-то альтернативу, не нашел. Поэтому вопрос к участникам сообщества: можете подсказать альтернативный способ получения такого смещения времени?

Воскресенье, 14 декабря

Блог программиста — Perl, Ruby, C#: Создание новостных лент (RSS, Atom) в Catalyst. Создание простого RSS-агрегатора

Как реализовать собственную новостную ленту в RSS и Atom форматах, на основе Catalyst. Как создать собственный RSS-агрегатор. Простые примеры кода, без комментариев. Работа с модулями XML::Feed и XML::Feed::Aggregator.   Реализация собственной RSS-ленты RSS и Atom — семейство XML-форматов, предназначенных для описания лент новостей, анонсов статей, изменений в блогах и т.п. У каждого формата есть свои […]

Четверг, 11 декабря

Сообщество ru_perl в LiveJournal: Как сделать журнал Pragmatic Perl лучше (опрос)?

Восемь вопросов и 30 секунд вашего времени.

https://ru.surveymonkey.com/s/D362Q89

Спасибо!

Хабрахабр: Метки / perl: 6-й санкт-петербургский Perl-воркшоп и хакатон Saint Perl 2014



В декабре Perl празднует свой 27-й день рождения. А мы традиционно проводим приуроченный к этой славной дате очередной, шестой уже по счёту, Saint Perl. В этом году он состоится 20-21 декабря.
Читать дальше →

Пятница, 5 декабря

Хабрахабр: Метки / perl: Как организовать отправку push-уведомлений на айфон


Мы в Surfingbird используем пуш-уведомления, чтобы сообщать нашим пользователям срочные новости и просто информировать их об интересных материалах за день. Уже в первые недели тестов пуши показали свою огромную эффективность в плане увлечения ретеншена. Этому есть логичное объяснение – телефон у пользователя всегда с собой, в метро, в туалете, на совещаниях и т. д. Когда юзеру приходит пуш, все его внимание концентрируется на этом уведомлении.
Мы реализовали отправку пуш-уведомлений с бекенда на языке программирования Perl. Однако, когда мы только начали внедрять пуши, то столкнулись с некоторыми трудностями. О трудностях и их преодолении мы и хотим рассказать в этом посте.

image

Читать дальше →

Сообщество ru_perl в LiveJournal: win32::daemon

Hi,
коллеги, а кто-нибудь пытался сделать на перле виндовый сервис?
что-то у меня лыжи не едут: взял ActiveState как самый виндовый перл, взял самый простой пример, из Daemon.pm скопировал. и вместо SERVICE_RUNNING, который 4, мне присылают event 4160, который я не понимаю... и в то же время Win32::Daemon::State() возвращает вообще 0.

Четверг, 4 декабря

XPoint.ru | Программирование::Perl::Основы: Изменение кодировок utf8 --> cp1251

Доброго времени суток!
Имеем: через веб-браузер вводим сообщение на русском языке, после чего программа должна отправить это сообщение через подключение по telnet. Проблема в том, что в получаемом сообщении дублируются буква "я". Изначальная кодировка сообщения - UTF8, делаю

Encode::from_to($message, 'utf-8', 'cp1251');

В чем может быть проблема, не подскажите?

Меркантильный гуру: Выживают лишь 3%

"Дольше 3,5 лет у нас живёт менее 3% начинающих предпринимателей" - http://echoperm.ru/themes/8/300/135638/

Таки дела.

На прошлой неделе, кстати, год, как я периодически делаю серверную часть этого сайта. Perl, Dancer, CTPP, Mysql. Подписан теперь на их рсс, потому что первый раз сам рсс делал и интересно смотреть, как работает. Ну и, из публичных проектов такого размера, да еще сделанный до какого-то конца и запущенный - это у меня первый.

Среда, 3 декабря

Блог программиста — Perl, Ruby, C#: Создание системы сессий, авторизации и аутентификации в Catalyst. Часть 3. Роли пользователей

Использование ролей в Catalyst. Плагин Catalyst::Plugin::Authorization::Roles. Создание таблиц с ролями в БД, установка ограничений доступа в контроллере. Создание системы сессий, авторизации и аутентификации в Catalyst. Часть 1. Сессии в Catalyst Создание системы сессий, авторизации и аутентификации в Catalyst. Часть 2. Аутентификация и авторизация Роли в Catalyst используются для создания пользователей с различными правами доступа. Например, […]

Блог программиста — Perl, Ruby, C#: Создание системы сессий, авторизации и аутентификации в Catalyst. Часть 2. Аутентификация и авторизация

Аутентификация и авторизация пользователей в Catalyst-приложении. Аутентификация на основе DBI. Работа с Catalyst::Authentication::Store::DBI::ButMaintained и Catalyst::Authentication::Credential::Password. Создание таблицы users в БД. Создание системы сессий, авторизации и аутентификации в Catalyst. Часть 1. Сессии в Catalyst Создание системы сессий, авторизации и аутентификации в Catalyst. Часть 3. Роли пользователей Ранее, в Catalyst-приложение была добавлена работа с сессиями. Однако, приведенные […]

Блог программиста — Perl, Ruby, C#: Создание системы сессий, авторизации и аутентификации в Catalyst. Часть 1. Сессии в Catalyst

Создание модели DBI в Catalyst. Использование DBI-модели. Реализация системы сессий в Catalyst, с помощью плагинов Catalyst::Plugin::Session::PerUser, Catalyst::Plugin::Session::Store::DBI, Catalyst::Plugin::Session::State::Cookie. Примеры кода, скриншоты. Ввиду того, что VPS от REG.RU с некоторых пор убивает все процессы cpan на установку новых модулей, а новый хороший сервер для тестирования пока не найден, система авторизации разрабатывалась под Windows-окружением. Создание системы сессий, […]

Shoor/нал: Инициализация переменных

Объявлял как-то переменные и присваивал им пустую строку:

my (
    $search_for_name, $search_for_content,
    $action_clean, $action_delete,
    $action_print, $action_print_key,
    $need_help, $need_manual, $verbose
) = ( '' ) x 9;

Надоело при добавлении очередной переменной вручную менять их количество — переписал:
map { $_ = '' } my (
    $search_for_name, $search_for_content,
    $action_clean, $action_delete,
    $action_print, $action_print_key,
    $need_help, $need_manual, $verbose
);

Так тоже работает :-)
http://shoorick.ru/2014/12/03/variable-initialization-via-map/

Вторник, 2 декабря

Сообщество ru_perl в LiveJournal: Что-то меня сомнения стали одолевать

Когда-то я прочёл, что если в коде используется больше трёх блоков вложенности, то это плохой код.
А если используется много уровней иерархии объектов, это плохой код - или не очень?
Предметно: если я пишу $self->session->user->role->match(...), то мне уже пора в биореактор?

Pilat66 blog: perl — switch,case, , given, when

Аналоги Switch в Perl программах на удивление мало распространены. Хотя есть аж два его варианта, доступные уже лет ддесять — switch и given. B обе всё ещё экспериментальные.

Начиная с perl 5.10.1, появился оператор(?) switch

use feature "switch";

Он не очень прямой, имеет ограничения. Политически грамотно использовать given/when:

use v5.10.1; for ($var) { when [...]

Понедельник, 1 декабря

Сообщество ru_perl в LiveJournal: Баг в perl или у меня в голове

Помогите разобраться где косяк.

Ниже пример кода. При запуске в параметрах можно передать любой файл, хоть самого себя. Проблема в следующем: если запустить код в таком виде, то все нормально работает - печатаются две строки со значениями из списка. Если же раскоментировать строку с запуском функции run() то получаем ошибку использования неинициализированной переменной в функции print. Т.е. по факту когда мы читаем из файла внутри функции (чтение в $_) у нас портится переменная $_ внутри внешнего цикла (становится undef когда файл заканчивается). Как так!!!??? Это же локальные переменные для блока! Я полдня убил пока локализовал глюк, но почему!!!???

use strict;
use warnings;

my $f = shift @ARGV;

sub run(@);

my @a = ( [ 1 ], [ 2 ] );

foreach ( @a ) { #run();     print $_->[0], "\n"; }

exit;

sub run(@) {   open FP, "<$f";   my $i = 0;   while (<FP>) {     $i ++;   }   close FP; }

Perl6.ru: Еще один подход к снаряду

Недавно на сайте конференции FOSDEM появился анонс: Ларри Уолл объявит, что Perl 6 появится в продакшне в 2015 году. Верить этому или нет, сложно сказать, но я попробовал скачать новый Rakudo и оказалось, что там все заметно лучше (прям сильно лучше), чем было год-два назад.

Поэтому я решил освежить знания про Perl 6 и написал большую статью для Pragmatic Perl «Perl 6 XXI века» с обзором базовых вещей, доступных в языке. Для следующего номера готовится статья о возможностях Perl 6 для параллельных вычислений.

On Perl — блог о языке программирования Perl и его сообществе: Perl 6 XXI века

Недавно на сайте конференции FOSDEM появился анонс: Ларри Уолл объявит, что Perl 6 появится в продакшне в 2015 году. Верить этому или нет, сложно сказать, но я попробовал скачать новый Rakudo и оказалось, что там все заметно лучше (прям сильно лучше), чем было год-два назад.

Поэтому я решил освежить знания про Perl 6 и написал большую статью для Pragmatic Perl «Perl 6 XXI века» с обзором базовых вещей, доступных в языке. Для следующего номера готовится статья о возможностях Perl 6 для параллельных вычислений.

Сообщество ru_perl в LiveJournal: Двадцать второй выпуск журнала о современном Perl

pp Выпуск 22

В этом номере:

- От редактора, Вячеслав Тихановский
http://pragmaticperl.com/issues/22/pragmaticperl-22-от-редактора.html

- Анонс воркшопа Saint Perl 2014, Сергей Романов
В шестой раз подряд мы с радостью приглашаем всех любителей и профессионалов мира Perl в Санкт-Петербург на ежегодный воркшоп Saint Perl!
http://pragmaticperl.com/issues/22/pragmaticperl-22-анонс-воркшопа-saint-perl-2014.html

- ООП. Основные паттерны проектирования. Реализация в Perl, Наталья Савенкова
Материал статьи для уровня Beginners. Здесь не будет Moose, только чистый Perl. Предполагается, что какое-то ООП в Perl уже знакомо
http://pragmaticperl.com/issues/22/pragmaticperl-22-ооп.-основные-паттерны-проектирования.-реализация-в-perl.html

- Perl 6 XXI века, Андрей Шитов
Автор хочет дать еще один шанс шестому перлу
http://pragmaticperl.com/issues/22/pragmaticperl-22-perl-6-xxi-века.html

- DBIx::Class. Сборник рецептов, Вячеслав Коваль
Сборник рецептов на все случаи жизни
http://pragmaticperl.com/issues/22/pragmaticperl-22-dbixclass.-сборник-рецептов.html

- Обзор CPAN за ноябрь 2014 г., Владимир Леттиев
Рубрика с обзором интересных новинок CPAN за прошедший месяц.
http://pragmaticperl.com/issues/22/pragmaticperl-22-обзор-cpan-за-ноябрь-2014г..html

- Интервью с Олафом Алдерсом (Olaf Alders), Вячеслав Тихановский
Олаф Алдерс (Olaf Alders) — канадский Perl-программист, создатель MetaCPAN
http://pragmaticperl.com/issues/22/pragmaticperl-22-интервью-с-олафом-алдерсом-olaf-alders.html

http://pragmaticperl.com

Мини-портал Perl на Opennet: Двадцать второй выпуск журнала Pragmatic Perl

Представлен 22-й выпуск журнала о современном Perl.

Суббота, 29 ноября

Сообщество ru_perl в LiveJournal: Анонсы выпусков журнала Pragmatic Perl

Друзья, меня не забанят, если я буду тут постить анонсы выпусков? :)

Пятница, 28 ноября

Pilat66 blog: PostgreSQL — SELECT count(*) FROM table

count(*) в PostgreSQL очень медленная операция. Чтобы её ускорить, применяют разные трюки, например, описанный в Reduce cost of select count(*) queries with trigger-based method. При вставке и удалении строк увеличиваем или уменьшаем значение соответствующего столбца в специальной таблице. Подробности в статье, там же оценка разницы в скорости получения count. Я несколько автоматизировал процесс регистрации таблиц.

[...]

Четверг, 27 ноября

Shoor/нал: Как не замусоривать экран при совершении HTTP-запросов средствами модуля Net::Curl::Easy

Чисто перловые HTTP-клиенты, включая широко известный модуль LWP — не самые быстрые, что вполне логично. Гораздо быстрее работают, например, те модули, что используют cURL. В одном из рабочих проектов понадобилось ускорить чтение из сети — это оказалось узким местом. Я проверил — действительно, cURL работает шустрее, чем LWP, при этом к cURL в перле есть несколько интерфейсов. Результаты моего замера вышли такими:

                    Rate     LWP WWW::Curl::Simple   Net::Curl::Easy
LWP                474/s      --              -38%              -88%
WWW::Curl::Simple  760/s     60%                --              -82%
Net::Curl::Easy   4115/s    768%              441%                --

(под LWP здесь понимается LWP::UserAgent).

Шустрый LWP::Curl выбыл из соревнования, потому что я не нашёл, как в нём добавить нужный заголовок к HTTP-запросу. Был проверен ещё и WWW::Curl::Easy — он показал ту же скорость, что и Net::Curl::Easy, вывалив при этом кучу предупреждений — так что он тоже выбыл из забега.

Однако при проведении замера я столкнулся со странным поведением Net::Curl::Easy — при выполнении метода perform на экран (точнее, в STDOUT) иногда выводились полученные данные. Выяснилось, что правильный способ запуска описан в руководстве не на Net::Curl::Easy, а на WWW::Curl — надо не только выполнить запрос, но и указать до выполнения запроса, куда писать полученное содержимое:
# A filehandle, reference to a scalar or reference to a typeglob can be used here.
my $response_body;
$curl->setopt(CURLOPT_WRITEDATA,\$response_body);

В Net::Curl::Easy это тоже сработало.
http://shoorick.ru/2014/11/27/clean-net-curl-easy/

Хабрахабр: Метки / perl: [Из песочницы] Полезное и приятное для разработчика в Mojolicious


Про Mojolicious на Хабре уже несколько раз писали. Фреймворк успешно развивается и, на мой взгляд, становится удобнее для быстрой разработки с каждым днем.

Под катом я собрал несколько приемов работы с фреймворком, которые серьезно упрощают жизнь мне и, быть может, будут полезны для кого-то еще.
Читать дальше →

Вторник, 25 ноября

Сообщество ru_perl в LiveJournal: ищу работу

удаленно. фуллтайм. thecamelsway@gmail.com.

Суббота, 22 ноября

Сообщество ru_perl в LiveJournal: Ищу работу

Удалённо, фуллтайм. Территориально нахожусь поблизости МСК. Обсудить подробности можно по почте lelzak ИНДА mail.ru

Четверг, 20 ноября

Ловушки Perl: Задачи-страшилки про Perl: Такой непростой tsv

Программисту понадобилось быстренько отфильтровать и переформатировать один лог. Исходный файл содержит по одной json-записи в строке, в итоге должен получиться tab separated файл из двух колонок.

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

Получился такой скрипт:

    #!/usr/bin/perl

use strict; use warnings;

use JSON;

while(<>){ my $data = eval{decode_json($_)}; next unless $data; next unless is_interesting_id($data->{id}) && is_valid_int($data->{sum}); print join("\t", $data->{id}, $data->{sum}); print "\n"; }

sub is_interesting_id { return $_[0] =~ /^5665[0-9]{7,13}$/ ? 1 : 0; }

sub is_valid_int { return $_[0] =~ /^[0-9]+$/ ? 1 : 0; }

Все хорошо? Нет! На выходе некоторые строчки пустые, а некоторые содержат только одно значение вместо положенных двух.

Среда, 19 ноября

Shoor/нал: Из-под отладчика

В перловых скриптах (во всяком случае, в тех, что запущены в юниксоподобных системах) определить, запущены ли они из-под отладчика, достаточно просто — надо проверить, существует ли переменная окружения PERLDB_PIDS:

my $DEBUG = exists $ENV{'PERLDB_PIDS'};

Однако в отладчике, встроенном в Komodo IDE 8.5, такой способ не работает — вместо PERLDB_PIDS устанавливается другая переменная PERL5DB со значением, например, BEGIN require '/opt/komodo/lib/support/dbgp/perllib/perl5db.pl' . А в штатном отладчике переменной PERL5DB нет. Значит, надо проверять обе:
my  $DEBUG
    =  exists $ENV{'PERLDB_PIDS'}
    || exists $ENV{'PERL5DB'};

http://shoorick.ru/2014/11/19/how-to-detect-perl-debugger/

upd/20.11.2014: Всё проще — существует переменная $^P

Вторник, 18 ноября

Shoor/нал: Смотрим размер файла в бесконечном цикле

Для подсчёта количества байт, символов, слов и строк в юникосоподобных операционных системах предназначена программа wc. Иногда хочется запускать её, например, раз в секунду, чтоб следить за выполнением какого-нибудь долгого процесса.

Сделал по-быстрому скрипт, который просто вызывает wc и выводит его результат, пока пользователю не надоест и он не нажмёт Ctrl+C

#!/usr/bin/perl

print STDERR "Press ^C to exit\n"; my $cmd_line = 'wc ' . join ' ', @ARGV; my $out; while (1) $out = `$cmd_line`; chomp $out; print "\cM$out"; sleep 1;


Запустить можно, например, так:
wcloop -l some-big-file.txt

http://shoorick.ru/2014/11/18/watch-for-filesize-in-infinite-loop/


upd/15:48: товарищ подсказывает:
watch -n 1 wc -l?
И верно ведь посдказывает!

Pilat66 blog: Perl — Mojolicious — аутентификация/авторизация

PlugAuth — Pluggable authentication and authorization server.

Mojolicious::Plugin::BasicAuth — Basic HTTP Auth Helper

my $b = $r->under( '/' . $self->prefix => sub { my $c = shift; my $remote_addr = $c->remote_addr; return 1 if $remote_addr =~ /^10.(\d{1..3}).(\d{1..3}).(\d{1..3})$/o; return 1 if $remote_addr eq '127.0.0.1'; if ( $c->basic_auth( realm => sub { my ($user, $password) = @_; [...]

Понедельник, 17 ноября

Хабрахабр: Метки / perl: Zabbix + Communigate Pro: low-level discovery и мониторинг аккаунтов


Предисловие


В своей первой публикации я рассказывал, как можно настроить мониторинг очередей почтовых серверов Communigate Pro (CGP) в Zabbix. Сегодня расскажу о своем небольшом опыте использования low-level discover (LLD) Zabbix для мониторинга количества пользователей в доменах. Сразу скажу, что практический смысл именно от мониторинга количества пользователей, на мой взгляд, небольшой. Сделано это было больше для собственной радости и возможности быстро ответить начальству на вопрос «а сколько у нас пользователей?» без необходимости пробегать по всем серверам.
Читать дальше →

Блог программиста — Perl, Ruby, C#: Использование pid-файлов для предотвращения повторного запуска скрипта

Использование модулей File::Pid, Pid::File::Flock и File::Flock::Tiny. Блокировки файлов, работа с pid-файлами. Работа только одной копии скрипта в один момент времени. Защита от повторного запуска одного и того же скрипта, до того, как первый экземпляр завершит свою работу. Допустим, что есть perl-скрипт, который забирает данные с удаленных серверов. Или разносит данные из одного источника в таблицы […]

Суббота, 15 ноября

Сообщество ru_perl в LiveJournal: Mojo и pagination

Привет сообщество. Подскажите как реализовать пагинацию на моджо? Плагины видел, но не понял, через контроллеры можно?

p. s. Образец хотя-бы, а то мыслей нет. Спасибо.

Пятница, 14 ноября

Сообщество ru_perl в LiveJournal: Perl and Google App Engine

https://code.google.com/p/googleappengine/issues/detail?id=34
Google наконец-то определился с поддержкой Perl. 6 лет на подумать.

Каково Ваше ощущение, Perl выпиливают потихоньку из проектов или винду переживет?

Сообщество ru_perl в LiveJournal: Кто как называет хеш с входными параметрами для функций? )

Я в свое время использовал $opt, потом $param, потом $arg... Хочется понять есть ли какой-то стандарт де-факто или до сих пор разброд и шатания? )

Сообщество ru_perl в LiveJournal: Посоветуйте Try-Catch по фэншую

Чего-то многие старые модули оказываются не безопасные, есть новые типа Try::Tiny, но у него нету няшки типа бэктрейса и другой полезной информации.

Кто чем сейчас пользуется?

Вторник, 11 ноября

Хабрахабр: Метки / perl: Установка, настройка и использование сканера уязвимостей сервера rkhunter


На хабре не раз было упомянуто приложение под названием rkhunter. Хотелось бы остановиться на нем по подробней.

Rkhunter — это сканер различных видов локальных (потенциальных) уязвимостей (бэкдоров, эксплоитов и руткитов) со своей регулярно обновляемой базой.
Он написан на bash и perl, поэтому будет работать под любой серверной ОС на базе unix без каких-либо проблем.



Читать дальше →

Понедельник, 10 ноября

Pilat66 blog: perl — autovivification — запрет autovivification

autovivification — Lexically disable autovivification. — metacpan.org.

Отменяет autovivification — автоматическое типизирование неопределённого объекта при обращении к нему в каком-нибудь контексте. Используется как

no autovivification; # !/usr/bin/env perl use strict; use warnings; { my $hashref; warn ref($hashref); my $a = $hashref->{key_a}; # $hashref stays undef warn ref($hashref); if (exists $hashref->{option}) { # Still undef [...]

Мини-портал Perl на Opennet: Двадцать первый выпуск Pragmatic Perl

Представлен двадцать первый выпуск Pragmatic Perl, русскоязычного журнала о современном программировании на Perl.

Воскресенье, 9 ноября

Сообщество ru_perl в LiveJournal: Редактор для Perl

Привет народ, подскажите какой редактор для perl поставить на Ubuntu? Padre не предлагать, снес эту ужасно глючную весчь! Долго терпел, сил уже не осталось. Поставил Gvim, оооо это такое убожество... мне что-бы перебраться со строки на другую строку надо запоминать сочетания клавиш, режим запоминать редактирования или командный?  В топку!

Спасибо заранее...

Понедельник, 3 ноября

Pilat66 blog: Что должен знать начинающий Perl разработчик о перловой инфраструктуре / Хабрахабр

Подборка рекомендаций по программированию на Perl, полезные модули.

Источник: Что должен знать начинающий Perl разработчик о перловой инфраструктуре / Хабрахабр.

Мини-портал Perl на Opennet: 6 ноября в Москве состоится мероприятие для Perl-программистов

6 ноября в Москве пройдёт мероприятие Moscow.pm, на котором состоится встреча группы московских Perl-программистов, участников всемирной ассоциации Perl Mongers. Место проведения: офис Mail.Ru Group, Москва, Ленинградский проспект, 39, стр. 79. Начало: 19:30. Требуется предварительная регистрация. Для тех, кто не сможет придти будет организована online-трансляция.

Пятница, 31 октября

Shoor/нал: Рельеф — в единых цветах

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

Итак, список высот и соответствующих им цветов такой:

-10   167 223 210
0     172 208 165
100   168 198 143
200   189 204 150
300   209 215 171
400   225 228 181
500   239 235 192
750   232 225 182
1000  222 214 163
1500  211 202 157
2000  202 185 130
2500  195 167 107
3000  185 152  90
3500  170 135  83
4000  172 154 124
5000  186 174 154
6000  202 195 184
7000  224 222 216
8000  245 244 242
9000  245 244 242

Пересчитывать руками для того, чтоб использовать в Маперитиве — не наш метод. Наш метод — автоматизировать:
#!/usr/bin/perl

while (<>) chomp; my @data = split; printf '%s:#%02x%02x%02x;', @data;


Ну или можно вообще однострочник написать:
perl -nla -F'\s+' -e 'printf "%s:#%02x%02x%02x;", @F' ramp-colors-above-water.txt

Осталось добавить получившиеся цвета к команде маперитива, рисующей рельеф:
generate-hypsometric ramps=-10:#a7dfd2;0:#acd0a5;100:#a8c68f;200:#bdcc96;300:#d1d7ab;400:#e1e4b5;500:#efebc0;750:#e8e1b6;1000:#ded6a3;1500:#d3ca9d;2000:#cab982;2500:#c3a76b;3000:#b9985a;3500:#aa8753;4000:#ac9a7c;5000:#baae9a;6000:#cac3b8;7000:#e0ded8;8000:#f5f4f2;9000:#f5f4f2

Эти цвета не такие насыщенные как те, что получились сначала. Южный Урал в этой палитре получается таким:

Рельеф Южного Урала
http://shoorick.ru/2014/10/31/relief-united-colors/

Сообщество ru_perl в LiveJournal: Mojo & LWP

Приветствую сообщество))) Из примера http://mojolicio.us/perldoc/LWP#MORE-DOCUMENTATION

# Create a request
my $req = HTTP::Request->new(POST => 'http://search.cpan.org/search');
$req->content_type('application/x-www-form-urlencoded');
$req->content('query=libwww-perl&mode=dist');

# Pass request to the user agent and get a response back my $res = $ua->request($req);

# Check the outcome of the response if ($res->is_success) { print $res->content; } else { print $res->status_line, "\n"; }

Добрался таки до авторизации, начал с контактика, получаю:

{"response":[{"id":185667681,"first_name":"Marlik","last_name":"Transcendent"}]}

Как мне дернуть-то это добро? Что-то типа $res->content->ключ ??? Спасибо заранее.

Воскресенье, 26 октября

Ловушки Perl: Задачи-страшилки про Perl: Генерация конфигурации, с хорошим бекапом

Программист исправил ошибку в генерации конфигов из предыдущей задачи.

Кроме того, он улучшил бекап старых конфигов: теперь предыдущие версии будут попадать последовательно в файлы app.conf.bak.1, app.conf.bak.2 и т.п.

Удобно? Да, но есть одна особенность…

    #!/usr/bin/perl

use strict; use warnings;

use File::Slurp; use IO::Prompt;

my $conf_file = "./app.conf";

my $new_conf = generate_conf();

if (-e $conf_file && prompt(-yn, "backup old conf? [yn]" )){ backup_old_conf(); }

write_file($conf_file, {}, $new_conf);

exit;

sub generate_conf { my $conf = '';

#... return $conf; }

sub backup_old_conf { my $i = 0; # бекапим старые версии в файлах .bak.1, .bak.2 и т.д. # проверяем, какие файлы уже существуют... while(-e $conf_file.".bak.".$i++ ){ } # ... и создаем файл с следующим номером rename($conf_file, $conf_file.".bak.".$i) or die "can't backup old conf"; }

Суббота, 25 октября

Сообщество ru_perl в LiveJournal: Mojolicious нужен совет специалистов.

Суть задачки, есть шаблон по управлению записями, записи дергаются из монги. Как бы мне в этот шаблон 'впендюрить' две формы? Вот как это сейчас выглядит:



Хочется выбрать по чекбоксу запись или удалить ее, или отредактировать. Посоветуйте как сделать на каждую кнопку вызов разных action в контроллере. Спасибо.

Мета

Поиск

Участники

Список участников в формате OPML OPML

Добавить сайт

По-другому

Приборы