Среда, 28 сентября

Хабрахабр: Метки / perl: Персона: создатель Perl Ларри Уолл — «великодушный пожизненный диктатор»



Сегодня на «Хабре» уже был пост, посвященный дню рождения создателя языка Perl. Здесь хотелось бы подробнее поговорить о биографии и взглядах Ларри Уолла, о его мотивации к созданию языка программирования, а также привести несколько фрагментов из недавнего интервью.

Ларри Уолл – американский программист, лингвист и создатель языка программирования Perl, один из лидеров движения за бесплатный доступ к программному обеспечению. Читать дальше →

Вторник, 27 сентября

Shoor/нал: Косые чёрточки

Перловый программист, пользующийся заодно седом и вимом, видит логотип «Дождя»:

до///дь

— Регэксп, — думает программист.

Надо больше отдыхать.

http://shoorick.ru/2016/09/27/slashes/

Хабрахабр: Метки / perl: Лень, нетерпение и самомнение — три главных добродетели программиста. С днем рождения, Ларри Уолл

«Мне кажется, я иногда вижу сны на Perl`e»
— Ларри Уолл

  1. Ларри всегда по определению прав по поводу того, как Perl должен себя вести. Это значит, что у него финальное право вето на основные функциональные возможности.
  2. Ларри позволительно менять свое мнение по любому вопросу спустя какое-то время, независимо от того, использовал ли он Правило 1.
Уяснили? Ларри всегда прав, даже когда ошибается.



Компактная биография Ларри выглядит вот так (Geek-код): GC/CS/E/H/IT/L/M/MU/PA/P/S/SS/TW/O d(+++)>+ s: a+>++>+++$ C++++$ UBAHS*++++$ P+++++(--)$ L !E? W+>++ N+++@ K+++>++++++@ w$ !O M->+ V--() PS+(-) PE(++) Y+ PGP->+ t+() 5 X? R>* tv@ b++>+++ DI+++ D? G(-) e++>+++@ h----() r+++ y++++ (расшифровка)

Ларри, как потомственный пастор, в детстве мечтал стать служителем церкви. Но пришлось идти в ИТ. Студетнтом он 3 годаработал в компьютерном центре университета. После универа, вместе с женой работали переводчиками Библии, изучали лингвистику, в надежде на то, что где-нибудь в Африке обнаружется племя со своим языком, но без письменности, и они разработают под этот язык письменность и одарят туземцев. В роли туземцев, спустя годы, оказались программисты.

Из-за денег, Ларри успел поработать в Unisys, NASA (JPL) и O'Reilly.

Из-за лени, нетерпения и самомнения Ларри написал rn (популярный клиент для Usenet) и утилиту patch (под UNIX). Чтобы стать пожизненным великодушным диктаторм, он написал язык Perl.

Ларри верит в типологию Майерс-Бриггс (INFP), а еще он двукратный мировой чемпион по запутанному коду на С.
Читать дальше →

Среда, 21 сентября

Чтобы не искать: Опции для perltidy

Всё время забываю, как делаю в разных проектах, надо записать для единообразия:

-pbp  -nola -l=0 -conv

Где:

-pbp — Форматировать по PBP
-nola — Не делать "выступ" для МЕТОК:
-l=0 — Не ломать строки по длине (длина строки 0 = бесконечность)
-conv — делать сразу финальный результат (повторный запуск ничего не изменит)

Подробности в документации.

Пятница, 9 сентября

Shoor/нал: Тестирование для комода

В перловых приложениях, написанных с импользованием фреймворка Mojolicious, лежащие в каталоге t тесты запустить достаточно просто — одна из доступных «из коробки» команд приложения — как раз test, которая без дополнительных параметров запускает все имеющиеся тесты:

$ ./app-name.pl test
[Fri Sep  9 13:21:06 2016] [debug] Some message
Running tests from "/path/to/t".
/path/to/t/1868-prev-next.t .. ok     
/path/to/t/1869-design.t ..... ok     
...
All tests successful.
Files=8, Tests=171,  5 wallclock secs ( 0.08 usr  0.01 sys +  3.76 cusr  0.28 csys =  4.13 CPU)
Result: PASS

Для упрощения процесса я обычно создаю Makefile, в котором пишу
SCRIPT=info.pl
APP=perl $(SCRIPT)

test: $(SCRIPT) $(APP) test


и всё, в общем-то, прекрасно работает — тесты запускаются привычной командой make test.

Недавно поставил себе свежую ActiveState Komodo IDE и, пока испытательный срок не кончился, пробую всякие её возможности, среди которых есть и тестирование. Выяснилось, что Komodo пытается найти Makefile и запустить тесты через него, но понять результаты оно не может и выводит перед каждой строкой сообщение **** Unrecognized input

Тестирование в Komodo IDE не может распознать вывод

Можно запускать тесты по-другому — командой prove — она выдаёт похожий результат:
$ prove -l
t/1868-prev-next.t .. ok     
t/1869-design.t ..... ok     
...
All tests successful.
Files=8, Tests=171,  5 wallclock secs ( 0.07 usr  0.00 sys +  3.86 cusr  0.23 csys =  4.16 CPU)
Result: PASS

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

Успешное тестирование в Komodo IDE

http://shoorick.ru/2016/09/09/testing-with-komodo-ide/

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

XPoint.ru | Программирование::Perl::Основы: Сортировка данных по двум параметрам

Всем доброго времени суток. Занимаюсь программой для подсчета времени. Встретился с задачей сортировки данных в программе, сортировка никак не запускается:
Имеется файл входных данных:

1000001 77.847
1000004 79.914
1234568 89.656
1000001 212.843
1234568 225.265
1000004 234.535

на выходе хотелось бы увидеть:

  1. 1000001 134.996
  2. 1234568 135.609
  3. 1000004 155.621

значения в списке сортируются по меньшему времени и по наименьшему количеству кругов. Сортировка никак не хочет запускаться.
[code]
#!perl
 
use strict;
use warnings;
 
open(my $in, "<:encoding(UTF-16)", "INPUT.TXT") || die("Error open INPUT.TXT\n");

# хеш фамилий спортсменов
#my %sportsmans = (
# '1000001' => 'Иванов',
# '1000004' => 'Петров',
# '1234568' => 'Зингельшухер');

my %sportsmans ; # объ¤вл¤ю хеш массив
open(my $Nam, "<:encoding(cp1252)", "NAMES.txt") || die("Error open NAMES.TXT\n"); #открываю файл с именами
while (my $line = <$Nam>) { #запускаю чтение по строкам файла
$line =~ /(\d+).(.+?) \s* $/x; #вытаскиваю с помощью рег.выраж. первое и второе слово из файла и пишу его в $id и $name
my $id = $1;
my $name = $2;
$sportsmans{$id} = $name; # организую запись в ассоциативный массив
}
close ($Nam);

        
# хеш результатов
my %rezults;
 
while(my $instr = <$in>) {
    if ($instr =~ /\@/) {
        my $str = $instr;
        chop $str; chop $str;
        $str =~ m/@\s+(\S.*\S\t?)$/;
        my $temp_str = $1;
        
for (0..1) {
            $str = <$in>;
            chop $str; chop $str;
            $str =~ m/\] (.*)$/;
            $temp_str .= $1;
            }
        
$temp_str =~ m/(\d+)\t(\d+\.\d+)/;
        unless (exists($rezults{$1})) {
            $rezults{$1} = []; # если ранее этот спортсмен не встречалс¤ - создаЄм ссылку на пустой массив при значении кеша спорстменов с ключЄм $1
            }
        push @{$rezults{$1}}, $2; # добавл¤ем результат в конец массива
        }
    }
 
open(my $out, ">", "OUTPUT1.TXT") || die("Error open OUTPUT1.TXT\n");
# ¬ыводим результаты
foreach my $nomer_fio (sort(keys(%sportsmans))){
    showResult(\%sportsmans, \%rezults, $nomer_fio);
    }
close($out);
close($in);
 
# функци¤ вывода результатов конкретного спортсмена
sub showResult {
    my ($names, $rez, $name) = @_;
    my $previousTime = 0; # врем¤ предыдущего круга
    my $ring = 1; # номер круга
    print $out "–езультаты спортсмена $names->{$name}\n\n";
    print $out " руг\tќбщее врем¤\t¬рем¤ круга\n";
            
#my $counter = 0;
    foreach my $currTime (@{$rez->{$name}}) {
   #my @list = @{$rez->{$name}};
   my $delta = sprintf "%.3f", $currTime - $previousTime;
   #print $out $list[-1] - $list[-2];
   print $out "$ring\t$currTime\t$delta\n\n";
        $ring++;
        $previousTime = $currTime;
   }
    print $out "\n\n\n";
    }
[/code]

Вторник, 30 августа

Хабрахабр: Метки / perl: Лекции Техносферы. Программирование на Perl (осень 2015)



Сегодня мы предлагаем вам ознакомиться с одним из курсов Техносферы, который посвящён программированию на Perl. Этот курс открытый — на него может записаться любой студент или аспирант МГУ имени М.В. Ломоносова. Также в Техносфере есть еще несколько открытых курсов, 1 сентября на них открывается запись. В этом семестре вас ждет приятное дополнение: они будут подкреплены методическим материалом, который будет содержать достаточно информации, чтобы по нему можно было вспомнить материал любой лекции и при необходимости более глубоко её изучить.

Цель курса «Программирование на Perl» — узнать возможности языка (его сильные и слабые стороны), научиться писать программные продукты на этом языке, научится быстро ориентироваться в чужом коде. Под катом находятся все лекции в формате видео и краткое описание к ним.
Читать дальше →

Хабрахабр: Метки / perl: Гейзенбаг, или как Луна портит код

Луна убывает, такое бывает… ©Земфира

Гейзенбагом называют ту разновидность программных глюков, которая возникает не пойми откуда, не поддается отладке и обнаружению. Словом, ведет себя как тот самый Неуловимый Джо или кроковский кот из недавнего поста. Мне по работе приходилось сталкиваться с такими и про себя я называл это эффектом квантовой механики до тех пор, пока не узнал, что близкое по смыслу название уже давно придумали. Бывает, посылаешь заказчику отладочный бинарник, который всего лишь записывает в журнал больше событий вокруг предполагаемого источника проблемы и после этого проблема исчезает!

heisenbug /hi:'zen-buhg/ n.
A bug that disappears or alters its behavior when one attempts to probe or isolate it.



Предлагаю вашему вниманию свою небольшую познавательную коллекцию квантовых эффектов в программировании.


Эпизод I, OpenOffice не печатает во вторник


Историю этого замечательного багрепорта можно почитать на Ubuntu Launchpad, а я вкратце изложу суть для тех, кому не сподручно читать по ссылке. В системной утилите file был баг из-за которого, файлы содержащие в 4-м байте Tue определялись как Erlang JAM. Дефект присутствовал в версиях file 4.21 и 4.24 и был вызван ошибкой в magic файле.

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

Среда, 24 августа

Блог программиста — Perl, Ruby, C#: Catalyst, Sphinx и realtime индекс

Как создать realtime индекс Sphinx. Использование realtime индексов в Catalyst-приложении. Эксперименты проводились на Sphinx версий 2.2.10 и 2.0.4. Продолжаем развивать код из первой заметки про Sphinx. Возьмем его за основу и добавим в Catalyst использование realtime индекса. Конфигурация Sphinx и Catalyst-приложения для создания realtime индекса В данном случае, для коннекта мы будем использовать не Sphinx::Search,… Read More »

Понедельник, 22 августа

Блог программиста — Perl, Ruby, C#: Sphinx и Catalyst

Как реализовать поиск помощью Sphinx в Catalyst-приложении. Как создать приложение Catalyst, конфиги для Sphinx. Приложение создавалось на Ubuntu 14.04, perl 5.18, Sphinx версии 2.2.10, модуль Sphinx::Search 0.29. Sphinx от версии к версии меняет функциональность и принципы работы, иногда очень значительно. Модуль Sphinx::Search тоже. Поэтому, не факт, что приведенный ниже код будет работать и у вас… Read More »

Пятница, 29 июля

Хабрахабр: Метки / perl: Запуск сценариев автоматизации sparrow на удаленных серверах с помощью инструменатрия SparrowDO/SparrowUP

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


До недавнего времени запуск подобных сценариев был ограничен консольным клиентом ( sparrow или sparrowdo ), сегодня я бы хотел презентовать пилотный проект по автоматической установке и запуску sparrow сценариев на удаленных серверах посредством централизованного web сервиса — SparrowUP.


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

Суббота, 23 июля

Мини-портал Perl на Opennet: Выпуск Rakudo Star 2016.07, дистрибутива Perl 6

Представлен релиз пакета Rakudo Star 2016.07, включающего компилятор Rakudo, виртуальную машину MoarVM, документацию, модули и инструменты, необходимые для разработки на языке Perl 6. Компилятор соответствует спецификации Perl v6.c, за исключением поддержки расширенных макросов, неблокирующего ввода/вывода и ряда мелких особенностей, которые планируется довести до рабочего состояния в будущих выпусках. В качестве виртуальной машины для исполнения байткода предлагается MoarVM, которая проходит все необходимые тесты (альтернативный бэкенд на базе JVM пока не обладает всей необходимой функциональностью).

Понедельник, 11 июля

Хабрахабр: Метки / perl: История языков программирования: Perl — необычный язык, созданный лингвистом для программистов



Язык программирования Perl создал Ларри Уолл (Larry Wall) в 1987 году, когда он работал системным программистом в американской компании Unisys. Цели, которые преследовал Ларри при разработке нового языка программирования, отражены в его названии — PERL, которое позднее стало расшифровываться как Practical Extraction and Report Language, то есть «практический язык извлечения „данных“ и „создания“ отчетов».

Одна из легенд о происхождении Perl гласит, что в то время уже существовал язык с таким названием, поэтому Ларри сократил название на одну букву, не изменив произношения. По иронии судьбы, сегодня тот язык не помнит никто, кроме историков, а Perl известен всему миру.

Хотя, по другой версии, Ларри назвал созданный им язык по имени своей невесты.


Ларри Уолл

На становление Perl повлияли языки Ada, Basic, Fortran, Lisp, Pascal и, конечно, язык C. Perl впитал в себя разные течения компьютерной науки: процедурное, модульное, функциональное и объектно-ориентированное программирование, макрообработку текста, а кроме этого — культуру ОС Unix, с ее богатым набором команд и утилит, стройной продуманной архитектурой и унифицированным подходом к представлению данных. Читать дальше →

Четверг, 7 июля

Хабрахабр: Метки / perl: Sparrowdo — простой инструмент управления конфигурациями

Здравствуйте! В данной статье хотел бы рассказать о простом инструменте управления конфигурациями — Sparrowdo. Скажу сразу, что система Sparrowdo базируется на использовании так называемых Sparrow плагинов, o которых мною был уже написан ряд статей на habrahabr.ru


image image


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

Пятница, 24 июня

Shoor/нал: Затягивает

Вроде, недавно только поменял процесс подпиливания ильменского сайта — там теперь TDD — а уже каким-то образом 220 тестов написал. Хотя файлов, конечно, сильно меньше :-)

All tests successful.
Files=11, Tests=220, 14 wallclock secs ( 0.12 usr  0.02 sys +  9.66 cusr  0.64 csys = 10.44 CPU)
Result: PASS

Хотя тесты сразу надо было начинать писать, с момента начала переписывания тринадцать месяцев назад.

http://shoorick.ru/2016/06/24/involve/

Четверг, 23 июня

Хабрахабр: Метки / perl: Приглашаем на YAPC::Russia 2016



В субботу 25 июня в московском офисе Mail.Ru Group пройдёт ежегодная конференция YAPC::Russia, посвящённая языку программирования Perl и его сообществу. В разные годы она проходила в Москве, Киеве и Санкт-Петербурге. На конференцию съезжаются Perl-профессионалы из разных городов и стран, чтобы обменяться опытом, завести новые знакомства в своей сфере и пообщаться с единомышленниками в неформальной и приятной обстановке. Программа встречи ждет вас под катом.
Читать дальше →

Среда, 22 июня

Мини-портал Perl на Opennet: 25 июня состоится конференция по языку Perl - YAPC::Russia 2016

В эту субботу (25 июня) пройдет всероссийская конференция по языку Perl - YAPC::Russia 2016.

Понедельник, 20 июня

Хабрахабр: Метки / perl: Вышла версия 2.1 Perl плагина для IntelliJ IDEA



Очередная версия плагина для IntelliJ IDEA поддерживает Template Toolkit 2, лучше работает с константами и методами объектов а так же содержит несколько небольших фиксов.
Читать дальше →

Пятница, 10 июня

Хабрахабр: Метки / perl: Synology DSM, Perl и Mojolicious

Раз вспомнили про Synology DSM в Одновременное монтирование зашифрованных папок в Synology DSM, то решил показать как при помощи Perl и веб фреймворка Mojolicious сделать простое приложение под свои нужды. Мне пришлось написать на коленке утилиту SynDevInfo, для вывода необходимой информации по устройству в браузере, т.к. уважаемый support не знает GNU/Linux, а пользователи не могут зайти по ssh.


Под катом будет описана структура пакета, скрипт запуска приложения и сам скрипт на Mojolicious::Lite

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

Вторник, 7 июня

Pilat66 blog: Блокировка выполнения скрипта

Существуют разные подходы. Обычно используется файл, в котором пишется PID процесса, но это «внутренняя» блокировка, программа сама себя блокирует, зная свой PID. Но существуют и другие подходы для внешней блокировки вызываемой программы, если программа сама не умеет блокироваться.

lockfile

Типовое использование:

#!/bin/bash lockfile -r 0 /tmp/the.lock || exit 1 # Что-то тут делаем, что [...]

Четверг, 26 мая

Мини-портал Perl на Opennet: Вторая версия плагина с поддержкой языка Perl для IntelliJ IDEA

Доступна для загрузки вторая версия плагина с поддержкой разработки на языке Perl для IDE от JetBrains. В новой версии появилась последняя из крупных запланированных возможностей - отладчик. Основные особенности отладчика.

Понедельник, 23 мая

PerlNews.Ru: Конференция YAPC::Russia 2016 пройдёт 25 июня в Москве

Анонсирована очередная ежегодная конференция YAPC::Russia. В этом году мероприятие пройдёт 25 июня в Москве в офисе Mail.Ru Group. Участие в конференции бесплатное, но необходимо зарегистрироваться.

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

Также, как и в прошлом году, организаторы обещают прямую видеотрансляцию докладов.

Темы: YAPC

Суббота, 21 мая

XPoint.ru | Программирование::Perl::Модули: Как использовать Inline::CPP ?

Разве достаточно ли в одну папку со скриптом Sproba3.pl поместить папку Inline-CPP-master?? Вижу что нет.
Я не вполне пойму суть всего и конкретные методы. Может кто-то рассказать и.или показать?

Sproba3.pl

use Modern::Perl;
use Inline 'CPP' => "./calc.cpp";

say calc($ARGV[0]);

Четверг, 12 мая

PerlNews.Ru: Perl 5.24 стал быстрее

Одним из улучшений в Perl 5.24 стало ускорение арифметических операций. Начиная с Perl 5.8.0, когда появилась поддержка 64-битных целых, скорость арифметических операций снизилась из-за необходимости проверки различных граничных условий. Теперь же проверяется общий случай, что снимает необходимость проверки всех частных случаев, что в целом оптимизирует производительность.

Синан Унур в своей статье продемонстрировал, что эта оптимизация даёт выигрыш в 30% по сравнению с Perl 5.20.2 в бенчмарке nbody, который использует большое число арифметических операций. Благодаря этому Perl 5.24 обогнал Python 3 в данном тесте.

Темы: Perl benchmark

Вторник, 10 мая

Мини-портал Perl на Opennet: Релиз языка программирования Perl 5.24.0

После года разработки состоялся релиз новой стабильной ветки языка программирования Perl - 5.24. При подготовке нового выпуска было изменено около 360 тыс. строк кода, изменения затронули 1800 файлов, в разработке приняли участие 77 разработчиков.

Понедельник, 9 мая

PerlNews.Ru: Выпущен Perl 5.24.0

9 мая 2016 года была выпущена новая стабильная версия языка программирования Perl 5.24.0. Разработка велась примерно 11 месяцев, начиная с Perl 5.22.0, и содержит примерно 360 000 изменённых строк среди 1800 файлов от 77 авторов.

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

Темы: Perl

Пятница, 6 мая

PerlNews.Ru: Coro в Perl 5.24

В тот момент, когда перед выпуском Perl 5.24 остались считанные дни, в рассылке perl5-porters внезапно вспомнили, что в новом Perl по-прежнему остаётся сломанным модуль Coro Марка Леманна. Одна из проблем была связана с тем, что в Perl 5.22 структура MGVTBL (магическая виртуальная таблица), формирующаяся во время компиляции perl, стала константной. Coro делал переопределение в таблице, поэтому и не мог работать с новым Perl 5.22. Было предложено откатить это изменение до выхода Perl 5.24.

Вносить подобные изменения в последние дни перед выпуском слишком рискованно, поэтому произошёл спонтанный мозговой штурм проблемы, в результате которого удалось выяснить очень много интересных деталей. Оказалось, что переопределение MGVTBL требовалось Coro только для того, чтобы переопределить работу с хендлерами сигналов __DIE__ и __WARN__ для магического хеша %SIG, что в свою очередь было сделано из-за бага Perl, когда присутствует рассинхронизация в PL_warnhook и $SIG{__WARN__}. Теоретически оба должны ссылаться на хендлер обработки предупреждений, но некоторые кривые XS-программы, в том числе входящие в базовый Perl (например, find в PerlIO::Layer), могут изменить только PL_warnhook, забыв про $SIG{__WARN__}. То есть это был банальный костыль в Coro для обхода реальной проблемы в Perl. Эта проблема была зафиксирована в баге #125349,

Более того, оказалось, что Coro можно было приспособить для работы с константной MGVTBL, Dave Mitchell и Father Chrysostomos продемонстрировали патч, который позволяет Coro работать без проблем на Perl 5.22.

Очевидно, что если бы этот мозговой штурм прошёл год назад, проблема была бы решена раньше и не возникло бы таких явлений как stableperl. Вероятно штурм бы и не потребовался, если бы Марк сообщил о проблеме в Perl, когда столкнулся с ней впервые.

Темы: perl bug Coro

Четверг, 5 мая

Сообщество ru_perl в LiveJournal: Моджо сдох

Внезапно с утра обнаружил что помер проект на моджо, рестарт приложения и рестарт nginx не помогло. Снёс nginx, установил заново, воткнул простейшие настройки для моджо проекта:

upstream myapp {
server 91.136.234.5:3002;
}
server {
server_name domen.ru www.domen.ru;
listen 80;
charset UTF8;
index index.html;
root /var/www/domen/public;

location ~* ^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar|swf)$ {
root /var/www/domen/public;
expires 14d;
}
location / {
proxy_pass http://myapp;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto "http";
}
}


обновил моджо:

# mojo version
CORE
Perl (v5.18.2, linux)
Mojolicious (6.61, Clinking Beer Mugs)

OPTIONAL
EV 4.0+ (4.22)
IO::Socket::Socks 0.64+ (0.68)
IO::Socket::SSL 1.94+ (1.965)
Net::DNS::Native 0.15+ (0.15)

This version is up to date, have fun!

перезалил проект, назначил права доступа, запустил проект:

su user, cd /var/www/domen, hypnotoad script/myapp,

получаю: 504 Gateway Time-out.

Проект висит в процессах и слушает порт, смотрю так: netstat -tupnl.

tcp 0 0 91.136.234.5:3002 0.0.0.0:* LISTEN 1459/myapp

Прописалл в iptables:

iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 3000:3050 -j ACCEPT

это помимо того что уже есть правило для 3002 порта,


Что это может быть? Может что-то уже поменялось в фреймворке, пока я картоху сажал? )))

Среда, 27 апреля

Мини-портал Perl на Opennet: Выпуск Rakudo Star 2016.04, дистрибутива Perl 6

Состоялся релиз пакета Rakudo Star 2016.04, включающего компилятор Rakudo, виртуальную машину MoarVM, документацию, модули и инструменты, необходимые для разработки на языке Perl 6. Это второй выпуск после объявления релиза языка программирования Perl 6. Компилятор соответствует спецификации Perl v6.c, за исключением поддержки расширенных макросов, неблокирующего ввода/вывода и ряда мелких особенностей, которые планируется довести до рабочего состояния в будущих выпусках. В качестве виртуальной машины для исполнения байткода предлагается MoarVM, которая проходит все необходимые тесты.

Воскресенье, 24 апреля

PerlNews.Ru: Sawyer X новый pumpking Perl

Рикардо Сигнес сообщил, что новым добровольцем, вызвавшимся быть ответственным за релизы Perl, стал Sawyer X, известный в сообществе израильский Perl-программист.

Рикардо заметил, что предыдущий pumpking Джес Винсент сопровождал Perl два года, сам Рикардо — четыре (два в квадрате), следовательно Сойеру предстоит по меньшей мере 4² = 16 лет увлекательной работы.

В рассылке perl5 porters началось обсуждение новости. Уже предрекают появление Dancer в базовом Perl, вместо ушедшего оттуда модуля CGI.

Темы: community

PerlNews.Ru: Рикардо Сигнес получил серебряного верблюда

silver camel

На проходящем Perl QA Хакатоне в английском городе Рагби Рикардо Сигнес получил довольно уникальную награду: серебряный верблюд. Это первое публичное Perl-мероприятие, которое посетил Рик после анонса, что Perl 5.24.0 станет его последним релизом. Награда стала данью признания выдающихся заслуг Рикардо Сигнеса в его работе над выпусками Perl на протяжении последних пяти лет.

Награда «серебряный верблюд» появилась в 2014 году, когда ею впервые был удостоен Марк Китинг за его вклад в развитие Perl-сообщества в Соединённом Королевстве. Дело в том, что Марк являлся членом маркетингового комитета фонда перл и никогда бы не смог получить награду «Белый верблюд», поскольку именно фонд перла выбирает лауреатов награды и по этой причине не может выбирать никого из жюри. «Серебряный верблюд» позволил изящно обойти это ограничение.

Темы: community

Четверг, 14 апреля

PerlNews.Ru: Последний релиз Рикардо Сигнеса

Рикардо Сигнес, текущий релизер стабильных релизов Perl (pumpking), сообщил о том, что релиз v5.24.0 и одновременно выходящий релиз v5.25.0 для разработчиков, станут его последними релизами Perl.

Рикардо на протяжении последних почти 5 лет выпускал стабильные релизы Perl, начиная c 5.16.0. Он обещает по-прежнему активно участвовать в сообществе, но уже не в роли pumpking. Тема письма в perl5-porters «...and slide on the ice» является окончанием цитаты из эпизода MASH:

Ladies and gentlemen, take my advice. Pull down your pants, and slide on the ice

Maj. Sidney Freedman

что можно трактовать как, жизнь коротка, не следует всегда оставаться слишком серьёзным.

Темы: community

PerlNews.Ru: Выпущен Perl 5.24.0-RC1

Не откладывая в долгий ящик, Рикардо Сигнес выпустил первый «настоящий» релиз-кандидат новой мажорной версии Perl 5.24.0-RC1. Список изменений по сравнению с Perl 5.22.0 доступен в perldelta. Среди основных изменений можно отметить:

  • Постфиксное разыменование больше не экспериментальное, соответственно удалена поддержка авторазыменования.

  • Поддержка стандарта Юникод 8.0.

  • Удалена поддержка лексической переменной my $_.

  • Оптимизирована процедура входа и выхода в/из область видимости, что ускоряет вызов функций, циклов и блоков кода.

  • Прирост в скорости в регулярных выражениях с фиксированной строкой поиска за счёт использования соответствующей аппаратной поддержки.

  • Множество исправлений ошибок.

Темы: Perl

Понедельник, 11 апреля

PerlNews.Ru: Релиз-кандидаты Perl 5.22.2-RC1 и 5.24.0-RC0

10 апреля вышел первый релиз-кандидат Perl 5.22.2-RC1. Новый минорный релиз текущей стабильной ветки Perl 5.22 содержит только исправления ошибок безопасности: CVE-2015-8607, CVE-2015-8608, CVE-2016-2381 (подробно о них уже рассказывалось в новости о релизе Strawberry Perl), а также ошибка #RT127322, когда при создании временных файлов перед вызовом mkstemp, в Perl предварительно устанавливались биты umask 0600 (вместо 0177), что на современных Linux системах приводило к результирующему значению бит прав 0000, что не является проблемой безопасности, но на древних системах с glibc ≤ 2.06 давало результирующее значение 0066, что уже является проблемой.

Также было объявлено о создании релиз-кандидата будущей стабильной версии Perl 5.24.0-RC0. Это не совсем «настоящий» релиз, так как тарбол не был отправлен на CPAN, и собрать новый релиз можно только из исходного кода в git-репозитории. Но Рикардо Сигнес обещает выпустить настоящий RC1 уже через пару недель. Таким образом, в этом году ожидается необычно ранний релиз Perl по сравнению с предыдущими (например, 5.22.0 вышел 1 июня).

Темы: Perl

Четверг, 7 апреля

Чтобы не искать: Логотипы Metacpan и Hansa

Есть такая компания Hansa. Компания производит бытовую технику - стиральные машины, холодильники, и.т.д. На сайте они делают вид, что компания немецкая, но в Википедии написано, что компания российская.

И есть такой сайт MetaCPAN. На сайте хранятся модули для языка программирования Perl. Сайт международный, поддерживается сообществом.

А вот их логотипы:


Четыре красные точки подозрительно похожи друг на друга.

Почему у Hansa четыре красные точки? Видимо - я не знаю точно - они символизируют четыре конфорки кухонной плиты. Но они производят не только плиты, поэтому непонятно, почему в логотипе должны быть именно плита.

Почему у MetaCPAN четыре красные точки? Потому что модули в Perl именуются таким способом, через двойное двоеточие. Например - Image::JPG, Document::Text, Table::Excel.

Среда, 6 апреля

Pilat66 blog: mojolicious — переходим на версию 6

Запомнившиеся изменения в версии 6. Некоторые стали очень неожиданным сюрпризом.

6.55 2016-03-08

Fixed a bug where Morbo would restart more than once if multiple files changed at the same time. (leejo, nugged)

Теперь не будет миллиона рестартов morbo при запуске rsync

6.54 2016-03-06

Added support for named variables to Mojo::Template. Added vars attribute to [...]

Пятница, 25 марта

PerlNews.Ru: Враждебные форки

В документации Mojolicious появилось предостережение от создания форков отдельных частей проекта Mojolicious, которые не были одобрены разработчиками Mojolicious. Форки не только ведут к истощению ресурсов проекта, бренда, но также лишают его возможных баг-репортов и патчей. В качестве примеров можно привести DOM::Tiny , который является форком Mojo::DOM, или JSON::Tiny, который является форком Mojo::JSON. Например, улучшение для JSON::Tiny никто не удосужился предложить портировать обратно в Mojo::JSON, а улучшения в Mojo::JSON не попадают в форк, таким образом складывается ситуация, когда оба проекта несут потери.

Себастьян Ридель настроен серьёзно и уже поместил негативный отзыв дистрибутиву DOM-Tiny на cpanratings.

Темы: mojo fork

Суббота, 19 марта

Меркантильный гуру: perl 5.14 smart matching

use Dancer ':syntax';
use v5.14;
...

my @options = qw ( func_overload allow_url_fopen ); my $p = params->{'...'};

return redirect '...' unless $p and $p ~~ ['func_overload', 'allow_url_fopen']; # работает return redirect '...' unless $p and $p ~~ qw ( func_overload allow_url_fopen ); # не работает return redirect '...' unless $p and $p ~~ @options; # работает



Прелесть какая!

Меркантильный гуру: try/catch

Родное решение в Dancer не умеет вложенные try/catch. И вообще, чем дальше, тем больше там всё сделано странно.

К счастью, есть Try::Tiny.

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

Четверг, 17 марта

PerlNews.Ru: Код ошибки Winsock теперь попадает в $^E

Давняя история борьбы Perl с кодами ошибок Winsock внезапно получила продолжение. Как известно, традиционно в Perl на Windows коды ошибок Winsock сохранялись в errno и транслировались в переменную $! так, чтобы соответствовать POSIX-кодам ошибок. Возникающие проблемы при таком подходе уже подробно освещались в статье «AnyEvent сломан на Strawberry Perl 5.20»

И вот, в конце февраля было внесено новое предложение по работе с ошибками Winsock. Чтобы немного смягчить имеющееся рассогласование, начиная с грядущего выпуска Perl 5.24 значение кода ошибки Winsock будет попадать в переменную $^E, которая как раз и служит для хранения платформо-специфичных ошибок. Отказ от модификации $! пока не предусматривается, но если он будет выполнен для Winsock, то пройдёт через стандартную схему устаревания и, как минимум, через один стабильный релиз.

11 марта это изменение было отправлено в основную ветку.

Темы: windows perl

Пятница, 11 марта

Сообщество ru_perl в LiveJournal: Вакансия Perl разработчик Санкт-Петербург

Обязанности:
• разработка проекта компании;
• различные интеграционные решения;
• тесная работа с фронт-енд программистом

Требования:
• уверенное знание Perl;
• умение работать с любым из популярных шаблонизаторов (HTML::Template, TT, CTPP и т.д);
• умение работать с PostgreSQL или Mysql;
• умение работать с большим объемом данных, опыт в hbase будет большим плюсом;
• знание JavaScript, HTML, CSS будет существенным плюсом;
• ответственность, инициативность, исполнительность.

Условия:
• офис ст. метро Горьковская в пешей доступности;
• гибкий график работы, возможность работать удаленно;
• работа в крупной российской компании (успешный прибыльный проект);
• зарплата от 100 000 рублей, по результатам собеседования.

Тип занятости:
• Полная занятость, полный день.

Резюме высылайте на почту: comdef@gmail.com

PerlNews.Ru: Выпущен Strawberry Perl 5.22.1.3 и 5.20.3.3

Выпущены два релиза дистрибутива Perl 5.22.1.3 и 5.20.3.3 для Windows Strawberry Perl. Оба релиза содержат исправление уязвимостей:

  • CVE-2015-8607 — функция canonpath модуля File::Spec не сохраняет taint-атрибут возвращаемого значения.

  • CVE-2015-8608 — обращение к памяти за пределами границ при обработке путей. Баг специфичен для Win32 платформы, возникает в случае если в пути в качестве буквы диска указан любой символ, отличный от а..z или A..Z.

  • CVE-2016-2381 — если в массиве переменных окружения оказывались дублирующиеся ключи, то в %ENV сохранялось последнее значение, в то время как getenv возвращал первое. В такой ситуации дочерний процесс мог получить неожиданное значение переменной окружения.

Кроме того, в дистрибутивах обновлена библиотека openssl. Загрузить новые релизы можно на сайте проекта strawberryperl.com.

Темы: Perl windows security

Воскресенье, 6 марта

Сообщество ru_perl в LiveJournal: Как добавлять бизнес-логику в DBIx::Class?

Хочу уже не руками модель писать, а как большой. И нигде не могу найти никакой документации -- как расширять модель для DBIx::Class. Ну вот она сгенерирована Schema::Loader'ом. А мне бы туда теперь бизнес-логики. Например, добавить в состояние схемы (туда же, где хендл DBI хранится) текущего пользователя и добавить ВО ВСЕ все селекты проверку владельца объекта, что бы чужого из базы никто запросить не смог, даже если я уровнем выше вдруг ошибусь. Или вот при создании объекта проверить лимиты того же пользователя, можно ли ему создавать. Такое вот разное. Или это предполагатеся делать уровнем выше, т.е. поверх DBIx::Class-модели писать ЕЩЁ ОДИН СЛОЙ и заворачивать каждый объект в DBIx::Class в ещё одну обёртку? Но тогда получается, что DBIx::Class фактически бесполезен!

Среда, 2 марта

Сообщество ru_perl в LiveJournal: Библиотека (очень специализированный шаблонизатор?) для web-фронтенда?

Сто лет не писал на perl'е ничего для веба. А тут понадобилось. Когда писал последний раз — писал «рутер» и контроллер руками, шаблоны делал на Template::Toolkit тоже руками. Это было так давно, что Mojo или Dancer'а ещё и в проекте не было, был CGI.pm и Mason. Которые были так ужасны, что руками было проще. AJAX'а тоже не было, модных форнтенд-библиотек не было и всех устраивали формочки сделанные на голом HTML «профессиональным программистом» (в табличках, разумеется), на которые какой-никакой дизайн натягивался через CSS1. В общем, лет 10 назад это было.

А тут потребовалось. Ну ладно, server-side я понимаю — Mojo или Dancer2, сейчас разберёмся.

А вот что делать с фронтом? Нету ли какого-нибудь очень специального шаблонизатора для CRUD-подобных приложений, что бы дизайна и HTML'я и всякого jQuery не делать вообще, а описать СТРУКТУРУ формочек на экранах как-то декларативно (YAML-хуямл, да хоть XML, не важно) и получить непротивно выглядящий фронтенд, с проверкой данных на клиенте, AJAX'ом, и прочими ништяками?

Update: Поясню. Я спрашиваю не про клиентский JavaScript-фреймворк типа React'а или там Angular'а, а про именно что умный генератор фронтенда на бэкенде по декларативному описанию интерфейса. А уж этот генератор может прицеплять в сгенерированный фронтенд хоть Реакт хоть Ангулар хоть чёрта лысого, как ему удобно и что любит автор генератора.

Сообщество ru_perl в LiveJournal: locale ubuntu mojo

Всем привет, то-ли лыжи не едут то-ли я не так делаю.

#locale
LANG=ru_RU.UTF-8
LANGUAGE=ru_RU:en
LC_CTYPE="ru_RU.UTF-8"
LC_NUMERIC=ru_RU.UTF-8
LC_TIME=ru_RU.UTF-8
LC_COLLATE="ru_RU.UTF-8"
LC_MONETARY=ru_RU.UTF-8
LC_MESSAGES="ru_RU.UTF-8"
LC_PAPER=ru_RU.UTF-8
LC_NAME=ru_RU.UTF-8
LC_ADDRESS=ru_RU.UTF-8
LC_TELEPHONE=ru_RU.UTF-8
LC_MEASUREMENT=ru_RU.UTF-8
LC_IDENTIFICATION=ru_RU.UTF-8
LC_ALL=



use DateTime::Format::SQLite;
use locale;
use POSIX qw( locale_h strftime );
setlocale(LC_ALL,"ru_RU.UTF8");

my @stash;

while (my $archive = $rs->next) {

my $dt = DateTime::Format::SQLite->parse_datetime( $archive->postime );

$dt->set_time_zone('Europe/Moscow');

push @stash, $dt->strftime('%B %Y');

}

В результате названия месяцев на английском, а хочется на русском. Куда ещё покопать, что прочесть? Спасибо.

Вторник, 1 марта

Сообщество ru_perl в LiveJournal: Mojolicious Роуты

Возникла нужда иметь такие роуты:
$r->get('/blog')->to('blog#index');
$r->get('/blog/:category')->to('blog#show_category');
$r->get('/blog/:category/:id')->to('blog#show');
$r->get('/blog/:year/:month')->to('blog#show_archive');
Разумеется они конфликтуют. Кто и как решает такие проблемы?
Ну и что-бы два раза тему не создавать, видел роуты с регэкспом:

qr|/user/show/(\d+)| -> $self->render(text => $users{$1});

и вот ещё:

$r->route('/uid/:id/',id => qr/\d+/)->to( controller => 'Uid',action => 'index');

Роуты с регэкспами работают? И как? Спасибо.

Суббота, 20 февраля

Shoor/нал: Без @ARGV

Обнаружил в попавшемся на глаза чужом скрипте чтение переданных через командную строку параметров без упоминания массива @ARGV. Проверил — работает:

#!/usr/bin/perl

my $shifted = shift or die 'Not shifted';

print "Shifted value is $shifted\n";


Выдаёт
$ ./shift.pl
Not shifted at ./shift.pl line 3.
$ ./shift.pl ARGV?!
Shifted value is ARGV?!

Век живи — век учись.

http://shoorick.ru/2016/02/20/without-argv/

Четверг, 18 февраля

PerlNews.Ru: Выложены видеозаписи Perl-докладов на FOSDEM 2016

На сайте конференции FOSDEM 2016 выложены видеозаписи докладов, проходившие в зале Perl.

P.S. По всей видимости, видеофайлы выложены частично битые. Первая минута не проигрывается, но дальше воспроизводится нормально. Требуется полная загрузка видеофайла для начала воспроизведения.

P.P.S. Все видеофайлы, кроме «Perl 6», перегенерированы и доступны для просмотра.

Темы: FOSDEM

Суббота, 13 февраля

Сообщество ru_perl в LiveJournal: Eclipse Perl::Epic PerlTidy

Фигня какая-то с редактором творится. Не получается скопировать уже готовый проект. Делаю так, создаю проект, потом импортирую в него файлы. Вроде всё хорошо, но файлы физические на диске не сохраняются, не изменяются, а в редакторе всё норм.

Как это так?

Ещё не понятно как работает perltidy, приходится ручками делать так:

perltidy -b Dashboard.pm

Нагуглил какие-то опции для perltidy в eclipse:

-l=180 --force-read-binary -i=2 --tabs -et=2 -ci=2 -olc -ibc -hsc -nsfs --delete-old-whitespace -nbbc -bbs --blanks-before-blocks --long-block-line-count=1 -nsob -bar -dnl -anl -pscf=-c -cti=0 -nolq -w -dws -bext=’/’ -csc -csci=15 -cscb -dcsc -iob

Это вообще что за хрень? И работает ли?

Где нибудь есть информация по скрещиванию eclipse и perl?

Четверг, 11 февраля

СетевойГибитобой: Массовое добавление и удаление друзей в LiveJournal через XML-RPC

Так как пользоваться консолью ЖЖ для добавления или удаления друзей стало невозможно (эти команды отключили) — сделал небольшой скрипт lj-edit-friends, который позволяет редактировать список друзей для указанного аккаунта через XML-RPC интерфейс ЖЖ. Пользоваться несложно — получить список друзей для добавления/удаления с помощью LJ Add/Remove Friends, сохранить его в файл и обработать через lj-edit-friends. Подробности — […]

Мета

Поиск

Участники

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

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

По-другому

Приборы