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

Сообщество ru_perl в LiveJournal: Удаленная работа для PERL-программиста

Приветствую!

Ищу человека для осуществление различных доработок сервиса.
Используем perl/dancer + mysql.
Желательно умение разбираться с html/css/js, понимать что такое bootstrap.

E-mail: aleksandr.khasanov (at) gmail.com

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

Хабрахабр: Метки / perl: [Из песочницы] Perl5 плагин для IntelliJ IDEA


Сегодня вышла первая версия плагина для IntelliJ IDEA – Camelcade. Плагин добавляет поддержку Perl5 в эту чудесную IDE. Плагин бесплатен и опенсорсен. В настоящее время работает в IntelliJ IDEA и специализированных IDE от JetBrains.

image

Подробнее о плагине смотрите под катом.
Читать дальше →

Хабрахабр: Метки / perl: Проверяем все страницы сайта в валидаторе html



Интро


Цель — создать велосипед скрипт, который пробежится по сайту и проверит каждую страницу сайта на валидность html.
Я слышал, что если нападает перфекционизм, то надо полежать, отдохнуть и это пройдет.
Подумаешь, в валидаторе ошибка…
Но если все же не проходит, то добро пожаловать под кат

PerlNews.Ru: Веб-сервер тестировщиков CPAN вышел из строя

Как сообщает администратор инфраструктуры CPAN Testers, сервер прекратил свою работу из-за сбоя, причина которого пока не ясна. Проблемы начались несколько дней назад, и сегодня в 2:30 UTC сервер окончательно перестал работать.

На данный момент у администратора нет достаточно свободного времени, чтобы разобраться с проблемой самостоятельно и вести дальнейшее сопровождение. Поэтому был объявлен поиск добровольца, который возьмёт на себя дальнейшее сопровождение CPAN Testers.

Судя по обновлению информации в блоге, подходящий кандидат с опытом был найден. Ждём итогов расследования инцидента.

Темы: CPAN cpantesters

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

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

pp Выпуск 30. Август 2015

http://pragmaticperl.com/issues/30

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

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

- Отчет о конференции «Perl Mama» от организатора, Дмитрий Шаматрин
25-26 июля в Одессе мы провели небольшой перловый воркшоп — PerlMama, с единой целью — провести перловое событие в Украине
http://pragmaticperl.com/a/d33bf416

- Работаем с legacy. Паттерн «извлечение функции» и оценка результатов, Наталья Савенкова
Из личного опыта рефакторинга устаревшего кода
http://pragmaticperl.com/a/fcefd736

- SWAT — простое тестирование веб-приложений, Алексей Мележик
Позволяет тестировать веб-приложения используя специально подготовленную иерархию файлов
http://pragmaticperl.com/a/0d5688a9

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

- Интервью с Филиппом Брухатом, Вячеслав Тихановский
Филипп Брухат (Philippe Bruhat) — автор модулей на CPAN, подборки секретных операторов perlsecret, сооснователь конференций YAPC::EU
http://pragmaticperl.com/a/9b5b5c14

Пятница, 28 августа

PerlNews.Ru: 30-й выпуск журнала Pragmatic Perl

Вышел 30-й выпуск журнала о современном Perl на русском Pragmatic Perl.

Pragmatic Perl 30

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

Темы: PragmaticPerl

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

Меркантильный гуру: .

Эпикфейл:

https://github.com/regru/Net-Whois-Raw/issues/3

When caching is enabled - it's done without respecting QRY_LAST/QRY_FIRST flag. For example:

$Net::Whois::Raw::CACHE_DIR    = "/tmp/";
my $domain = 'example.com';
my $aa = whois($domain, undef, 'QRY_FIRST'); 
my $bb = whois($domain, undef, 'QRY_LAST'); 
say "wrong" if $aa eq $bb;

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

Shoor/нал: Больше букв

Функция selectall_arrayref перлового модуля DBI хороша для тех, кому лень писать:

This utility method combines "prepare", "execute" and "fetchall_arrayref" into a single call. It returns a reference to an array containing a reference to an array (or hash, see below) for each row of data fetched.

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

Реальный пример: скрипт, извлекающий тайлы из пакета, созданного Тайлмиллом, пытался читать данные как раз функцией selectall_arrayref. Зная, что применяется запрос
SELECT * FROM tiles

и что представление tiles содержит, помимо прочего, содержимое тайлов, занимающее места больше всего остального, нетрудно догадаться, что попытка выполнения запроса потребует выделения памяти в объёме, сопоставимом с размером файла, в котором сидит база (пакет с тайлами — это база SQLite).

Набор тайлов для территории размером 600×400 км в средних широтах — например, с Челябинском по центру, Ашой на западе, Карталами на юге и Тюменью на северо-востоке — займёт больше гигабайта для набора масштабов не больше шестнадцатого. На практике так и получилось: скрипт отжирал больше гигабайта памяти и всё никак не мог приступить к полезной части, пытаясь отожрать ещё. Если же увеличивать масштаб, затраты вырастут ещё сильнее: добавим семнадцатый зуммасштаб — понадобятся ещё три-четыре гигабайта, Добавим восемнадцатый, которого хватит даже для любопытных исследователей карт — ещё на десять-двадцать объём вырастет. Если будем сохранять тайлы с глубиной цвета 24 бита, а не восемь — ещё больше места израсходуем. Получается, что средних размеров российская область может занять своими тайлами десятки гигабайт. И скрипт бы безуспешно пытался эти десятки получить.

Переписал:
-my $tiles = $dbh->selectall_arrayref(
-    'SELECT * FROM tiles',
-    { Slice => {} },
-);
-
-foreach my $tile ( @$tiles ) {

+my $sth = $dbh->prepare('SELECT * FROM tiles'); + $sth->execute; + +while ( my $tile = $sth->fetchrow_hashref ) {


и всё наладилось: скрипт перестал жрать память (ему хватило десяти мегабайт) и ждать её выделения — сразу работает.

Вывод: не всегда надо экономить рабочее время программиста — иногда надо и о машинном времени задумываться.

http://shoorick.ru/2015/08/26/more-code/

Четверг, 20 августа

Сообщество ru_perl в LiveJournal: Ищется perl разработчик на постоянную удаленную работу повременно в Москве

Всем привет!

Для работы над внутренней системой нужен человек. Работа в связке perl/mojo+postgresql в качестве хранилища, без хранимок и хитрых типов данных, +memcached +
несколько очередей в redis, разгребаемых разгребальными perl демонами :)

На морде бутстрап, может быть в дальнейшем будет что-то другое. Работы с мордой в основном ограничены натягиванием разверстанных кем-то другим шаблонов. Требуется умение при возникновении необходимости разобраться с css/javascript, и, возможно, запрограммировать разработанный интерфейс, но это не является ощутимой частью работы. Т.е. речи о мастере/многостаночнике, от которого помимо программирования бекенда хотят дизайна в фотошопе и верстки, не идет.

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

От человека требуется оперативная доступность для общения в оговоренное время в рабочие дни (условные 11-17 дня по мск) и готовность при необходимости поприсутствовать в офисе. Т.е. режим дня придется более-менее соблюдать. Кроме того, первые пару месяцев придется отработать в офисе на м.Курская (2 мин. пешком) - притереться, присмотреться, себя показать.

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

В крупную клетку как-то так.

Работать придется непосредственно со мной, кто заинтересовался - пишите в электропочту на lelzak в домене mail.ru, озвучивайте опыт и навыки, желаемую почасовую ставку.

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

Мини-портал Perl на Opennet: Архиву Perl-модулей CPAN исполнилось 20 лет

Проект CPAN (Comprehensive Perl Archive Network), в рамках которого поддерживается архив модулей и документации для языка программирования Perl, отметил двадцатилетие. В настоящее время в CPAN зарегистрирован 32261 пакет с модулями, в создании которых приняли участие более 12 тысяч разработчиков. Общее число всех представленных в CPAN модулей преодолело 150-тысячный рубеж.

Воскресенье, 16 августа

PerlNews.Ru: 20 лет архиву CPAN

16 августа 2015 года исполнилось 20 лет архиву CPAN. CPAN — это одно из старейших и крупнейших хранилищ свободного программного обеспечения: модулей и программ на Perl. Ровно 20 лет назад Andreas König залил самый первый модуль на CPAN через специальный веб-интерфейс PAUSE.

Нил Бауэрс опубликовал краткий пересказ подробной истории появления архива CPAN. Далее идёт свободный перевод этого пересказа.

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

Темы: CPAN

Четверг, 13 августа

PerlNews.Ru: Booking.com пожертвовал $60 000 на развитие Perl 5

По сообщению фонда Perl Booking.com пожертвовал $60 000 на поддержку развития Perl 5. Компания Booking.com уже на протяжение многих лет продолжает оказывать финансовую поддержку фонду Perl для продолжения разработки Perl 5. Язык Perl 5 остаётся основой инфраструктуры компании наряду с другими OSS-проектами, такими как Linux, MySQL, Nginx, Hadoop и Redis.

Темы: Perl donation

PerlNews.Ru: Потребление памяти в разных версиях Perl 5

Рейни Урбан привёл несколько любопытных графиков, демонстрирующих потребление памяти в различных версиях Perl 5, начиная с версии 5.6.

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

Темы: Perl

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

Сообщество ru_perl в LiveJournal: Perl Workshop 2015 — Рязань, 15-16 августа

«Рязанский Perl Workshop 2015» — первая в Рязани тематическая конференция, посвященная языку программирования Perl. На конференцию приглашаются все желающие — неважно, знаете Вы Perl или только хотите изучить (или не хотите изучать, а хотите просто пообщаться с бэкенд-разработчиками всех мастей).
На конференции вы сможете познакомиться с разработчиками из Рязани и других городов России.

15 августа — день докладов. Если вам есть, что рассказать — ждём ваших заявок.
Чтобы послушать доклады — нужно зарегистрироваться.
Участие в дне докладов бесплатно.

16 августа — выезд на природу в компании разработчиков мирового уровня :)
Мы снимем веранду в одном из живописных местечек Рязанской области и поедем туда отдыхать и есть шашлык :)

Место проведения конференции

г. Рязань,
Московское шоссе, д. 20,
здание БЦ Престиж, (за остановкой «Таможня»)
2 этаж, вход угловой справа.

Регистрация с 10:00
Начало в 11:00

Расписание

Блог программиста — Perl, Ruby, C#: Как загружать файлы в Catalyst-приложении

Загрузка файлов в Catalyst-приложении с помощью стандартного средства Catalyst::Request::Upload. Работа с библиотекой lib::abs. Задача: требуется организовать загрузку пользовательских файлов на сайт. Реализация: Страница с полным списком товаров и вывод пригрепленного к товару изображения. Страница добавления нового товара. Страница редактирования товара и поле для загрузки изображений. Пример очень простой, который демонстрирует только общие принципы работы с […]

Пятница, 7 августа

PerlNews.Ru: В ctags появилась поддержка Perl 6

Дмитрий Тихонов анонсировал поддержку языка Perl 6 в Universal Ctags.

Проект Universal Ctags является наследником Exuberant Ctags — самой популярной реализации утилиты ctags, которая создаёт индексный файл с именами программных объектов (переменных, функций, методов, макросов и прочих элементов в зависимости от языка программирования), присутствующих в исходном коде. Поддерживающий формат ctags текстовый редактор может использовать индексный файл для автодополнения, поиска и подсветки тегов.

Темы: Perl6

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

Сообщество ru_perl в LiveJournal: А у нас тут есть те кто с HBase через Thrift работают?

Нужен фидбек.

Среда, 29 июля

Сообщество ru_perl в LiveJournal: хелп!

Что-то я торможу и не могу измыслить regular expression, которое удалило бы из текста все пробелы, кроме тех, за которыми следует квадратная скобка
примерно, так
Input: ab cd ef [gh ij [kl mn
Output: abcdef [ghij [klmn

Заранее спасибо!

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

PerlNews.Ru: Camelcade — плагин для поддержки Perl 5 в IntelliJ IDEA

Вышла бета-версия 0.34 плагина Camelcade для известной среды разработки IntelliJ IDEA, который обеспечивает поддержку Perl 5. Несмотря на бета-статус утверждается, что плагин обеспечивает более качественную поддержку Perl 5 проектов, чем редакторы Sublime или NotePad++.

Camelcade

На данный момент поддерживаются следующие возможности:

  • Анализ и разбор Perl 5 кода (не нативный, поэтому возможны баги).
  • Поддержка форматов Perl 5, POD, встроенный Perl 5 (например, шаблоны Mojolicious).
  • Выбор Perl 5 интерпретатора для проектов.
  • Подсветка синтаксиса (цветовая схема из NotePad++).
  • Поиск парных скобок, сворачивание кода.
  • Контекстные действия.
  • Автодополнение имён переменных, подпрограмм, пакетов. Навигация и рефакторинг.
  • Инспекция кода, поиск ошибок.
  • Интеграция с IntelliLang для поддержки других языков во встроенных документах внутри исходного кода.

Темы: Perl IDE

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

pp Выпуск 29. Июль 2015

http://pragmaticperl.com/issues/29

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

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

- R(?)ex на практике, Денис Федосеев
В жизни каждого человека настает момент, когда ему становится лениво делать одно и то же на удаленных серверах и хочется автоматизации
http://pragmaticperl.com/a/67466ac8

- Инструменты для поиска зависимостей в скрипте, Наталья Савенкова
Практическая статья про инструменты анализа зависимостей
http://pragmaticperl.com/a/afc82804

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

- Интервью с Дэвидом Голденом, Вячеслав Тихановский
Дэвид Голден (David Golden) — автор многих модулей на CPAN, текущий разработчик официального драйвера MongoDB
http://pragmaticperl.com/a/efd1add7

Среда, 22 июля

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

А что, %Subj% совсем помер беззубый стал?

PerlNews.Ru: 29-й выпуск журнала Pragmatic Perl

Вышел 29-й выпуск журнала о современном Perl на русском Pragmatic Perl.

Pragmatic Perl 29

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

Темы: PragmaticPerl

Вторник, 21 июля

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

20 июля выпущен второй релиз Perl ветки для разработчиков 5.23. Данный выпуск состоялся спустя месяц после релиза 5.23.0 и содержит изменения в 8 400 строках исходного кода.

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

Темы: Perl

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

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

Я опять ослеп? Первое, что находится - XBase (CAM::DBF ещё древней). По интерфейсам именно то что нужно, но некоторые вещи он просто не понимает (например, имена полей длинней 11 символов, что для dBase 7 обычное дело).

Воскресенье, 5 июля

Мини-портал Perl на Opennet: Увидел свет RPerl 1.0, компилятор кода Perl5

После двух с половиной лет разработки состоялся релиз компилятора для языка программирования Perl - RPerl 1.0. RPerl получает на входе perl5-код (скрипт или модуль), транслирует его в представление на языке С++, которое следом конвертируется в XS-код силами модуля Inline::CPP. Полученный код может использоваться в высокоуровневом Perl5-коде как обычный модуль с XS-реализацией. В конечном счете XS-код транслируется в машинный код С++-компилятором. Исходные тексты проекта распространяются под лицензиями Artistic и GPL, т.е. RPerl распространяется на тех же условиях, что и интерпретатор Perl5.

Суббота, 27 июня

PerlNews.Ru: Постфиксное разыменование больше не экспериментальное

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

  $array_ref->@*; # вместо @{ $array_ref }
$hash_ref->%*;  # вместо %{ $hash_ref }
...

С выходом Perl 5.24, больше не потребуется использовать конструкцию

  no warnings "experimental::postderef";

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

  use feature "postderef", "postderef_qq";

или просто

  use v5.24;

Темы: Perl

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

Меркантильный гуру: perl and utf8 examples

Случайно нашел в гугле прекрасное - https://github.com/evostrov/perl_utf8_cheat_sheet/blob/master/utf8_cheat_sheet.pl

Суббота, 20 июня

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

20 июня выпущен первый релиз Perl новой ветки для разработчиков 5.23. Данный выпуск состоялся спустя три недели после релиза 5.22.0 и содержит изменения в 86 000 строках исходного кода.

Основные изменения:

  • Поддержка стандарта Юникод 8.0.
  • Класс символов /\C/ в регулярных выражениях больше не поддерживается.
  • chdir('') или chdir(undef) больше не меняет текущий каталог на домашний каталог и приводит к фатальной ошибке. Используйте просто chdir().
  • Макрос PadlistNAMES теперь снова lvalue (решена одна из проблем для работы модуля Coro).
  • Обновлены некоторые базовые модули, в том числе POSIX, с экспериментальной поддержкой NaN payload API (из последнего черновика стандарта ISO C API).

Темы: Perl

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

Чтобы не искать: Логирование чего угодно в Perl



Написал на Хабре статью про логирование в Перле с помощью модуля Log::Any.

Хабрахабр: Метки / perl: Логирование чего угодно в Perl


Проблема выбора

Для логирования сообщений Перл предлагает несколько готовых решений. Все они, как водится, размещены на CPAN'е. По запросу «log» можно найти кучу модулей на все случаи жизни.

Однако, среди всех этих модулей есть один особенный, называется он Log::Any.

Особенность этого модуля для логирования заключается в том, что он не занимается, собственно, логированием. Модуль Log::Any предоставляет программе (и программисту) универсальное API для обращений к другим модулям, которые занимаются непосредственно логированием.

Если вас мучает проблема выбора способа логирования в Перле — эта статья для вас.
Читать дальше →

Мини-портал Perl на Opennet: Вышел mod_perl 2.0.9

После двух лет разработки доступна новая версия Apache-модуля mod_perl 2.0.9. Mod_perl позволяет интегрировать интерпретатор Perl в http-сервер Apache и увеличить скорость выполнения динамического контента на Perl за счёт кэширования его байткода, а также обеспечить низкоуровневый доступ perl-скриптов ко внутренностям Apache, в том числе даёт возможность создавать модули на языке Perl, управлять конфигураций, обрабатывать все стадии прохождения запроса.

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

Сообщество ru_perl в LiveJournal: mojo hypnotoad ssl

Здравствуйте люди. Затачиваю бложик себе на mojo. Столкнулся с тем что мне нужно каким-то образом форму входа отдать по https протоколу, для бложика не столь важно, важно понять как реализовать такое, на будущее сгодится.

nginx:

server
{
listen 80;
server_name domen.ru www.domen.ru;
root<------>/var/www/domen/public/;
index<----->index.html;

location ~* ^.+\.(jpg|jpeg|gif|png|ico|css|pdf|ppt|txt|bmp|rtf|js)$ {
root /var/www/domen/public/;
expires 3d;
}

location / {
proxy_pass http://domen;
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";
}
}


Hypnotoad(domen.conf):

{
hypnotoad => {
listen => ['http://127.0.0.1:3000']
}
};


Я правильно понимаю, что в nginx надо добавлять конфиг для ssl, а пути указать как в главном конфиге а вот жабу как запускать? Запускать две жабы на разных портах? Делал ли кто такое, и куда рыть? Спасибо.

Воскресенье, 14 июня

Хабрахабр: Метки / perl: LIVR — «независимые от языка правила валидации» или валидация данных без «проблем»


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

Основные проблемы, которые встречаются в библиотеках валидации данных

Проблема №1. Многие валидаторы проверяют только те данные, для которых описаны правила проверки. Для меня важно, чтобы любой пользовательский ввод, который явно не разрешен, был проигнорирован. То есть, валидатор должен вырезать все данные для которых не описаны правила валидации. Это просто фундаментально требование.

Проблема №2. Процедурное описание правил валидации. Я не хочу каждый раз думать про алгоритм валидации, я просто хочу описать декларативно, как должны выглядеть правильные данные. По сути, я хочу задать схему данных (почему не «JSON Schema» — в конце поста).

Проблема №3. Описание правил валидации в виде кода. Казалось бы, это не так страшно, но это сразу сводит на нет все попытки сериализации правил валидации и использования одних и тех же правил валидации на бекенде и фронтенде.

Проблема №4. Валидация останавливается на первом же поле с ошибкой. Такой подход не дает возможности подсветить сразу все ошибочные/обязательные поля в форме.

Проблема №5. Нестандартизированные сообщения об ошибках. Например, «Field name is required». Такую ошибку я не могу показать пользователю по ряду причин:

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

То есть, нужно возвращать не сообщение об ошибках, а стандартизированные коды ошибок.

Проблема №6. Числовые коды ошибок. Это просто неудобно в использовании. Я хочу, чтобы коды ошибок были интуитивно понятны. Согласитесь, что код ошибки «REQUIRED» понятней, чем код «27». Логика аналогична работе с классами исключений.

Проблема №7. Нет возможности проверять иерархические структуры данных. Сегодня, во времена разных JSON API, без этого просто не обойтись. Кроме самой валидации иерархических данных, нужно предусмотреть и возврат кодов ошибок для каждого поля.

Проблема №8. Ограниченный набор правил. Стандартных правил всегда не хватает. Валидатор должен быть расширяемый и позволять добавлять в него правила любой сложности.

Проблема №9. Слишком широкая сфера ответственности. Валидатор не должен генерировать формы, не должен генерировать код, не должен делать ничего, кроме валидации.

Проблема №10. Невозможность провести дополнительную обработку данных. Практически всегда, где есть валидация, есть необходимость в какой-то дополнительной (часто предварительной) обработке данных: вырезать запрещенные символы, привести в нижний регистр, удалить лишние пробелы. Особенно актуально — это удаление пробелов в начале и в конце строки. В 99% случаев они там не нужны. Я знаю, что я до этого говорил, что валидатор не должен делать ничего кроме валидации.

3 года назад, было решено написать валидатор, который не будет иметь всех вышеописанных проблем. Так появился LIVR (Language Independent Validation Rules). Есть реализации на Perl, PHP, JavaScript, Python (мы на python не пишем — фидбек по ней дать не могу). Валидатор используется в продакшене уже несколько лет практически в каждом проекте компании. Валидатор работает, как на сервере, так и на клиенте. Читать дальше →

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

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

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

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

Сообщество ru_perl в LiveJournal: Несколько вопросов про distribution перл-приложений.

Последний раз выкладывал в сеть что-то на перле лет 15 назад и это были одинокие скрипты ни от чего кроме Core не зависящие (много что отдавал заказчикам но там допустимо было отдать собранный вручную .tar.gz со всем нужным и инструкциями как развернуть, это другое).

А тут написал скрипт, которым хочу поделиться с общественностью, который мало того что зависит от всякого с CPAN так ещё и содердит свои модули. Правда, модули, которые "в комплекте" вообще не имеют смысла в отрыве от скрипта -- это не универсальные библиотеки, которые кто-то может захотеть использовать сам, а способ организации кода (что бы скрипт не был в 200 килобайтов).

Как такое правильно оформлять что бы всем было привычно?

Собственно, для Windows я тупо заверну в EXE-шник с помощью pp. Хотя тут тоже возникает одни вопрос.

А вот для Linux-дистрибутивов нужно же что-то что поставит его в систему как принято. Что нынче считается true? Старый Makefile.PL? Module::Build? Что-то ещё? И тут несколько вопросов:

  1. Всё, что я посмотрел, модуле-ориентированное. У меня модули играют очень вторстепенную роль. Есть что-то для приложений?
  2. Всё, что я посмотрел, хочет видеть модули в lib/${Module}/${Name}.pm. Как в таких условиях девелопить, ведь скрипт, лежащий в корне, нельзя запускать просто как perl script.pl -- модули не находятся! Чудовищно неудобно!
  3. В случае pp можно ли как-то просто опередлить, запущен скрипт из pp-сборки или просто так, что бы определить доставать данные из сборки или из /usr/local/share/appname? При этом надо уметь работать без PAR::* в "голом" виде.

PerlNews.Ru: Марк Леманн создал форк Perl: «stableperl»

Марк Леманн, также известный как schmorp, создатель библиотеки libev, AnyEvent и Coro, объявил о создании форка Perl под названием «stableperl».

Как известно, Марк постоянно конфликтовал с разработчиками Perl5 из-за регулярных нарушений обратной совместимости в новых релизах, а релиз Perl 5.22.0, который привёл к неработоспособности Coro, очевидно, стал последней каплей.

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

Темы: Perl facepalm

Суббота, 6 июня

Shoor/нал: Он и в третий раз ходил за ёлкой... И добыл её!

Давно хотел улучшить ильменский сайт, да всё руки не доходили. Уж подумывал и переписать совсем. Что только не пробовал — и тяжёлый перловый фреймворк Catalyst, и написанные на PHP системы управления сайтами — Друпал да ВордПресс. И всё никак не получалось дойти за какого-то осмысленного результата. В итоге всё свелось к переписыванию на Mojolicious::Lite — это всяко веселее, чем набор древних CGI-скриптов.

Начал в мае 2011 года — бросил. Подобрал в мае тринадцатого — снова бросил. Пришёл май пятнадцатого — снова взялся и как-то всё-таки дошёл до завершения первого этапа: воссоздал на моджо всю функциональность прошлого сайта, который был запущен ещё в 2003 году. Ну и перекрасил попутно. Свежий сайт да ещё и на новом железе с другими ОС и веб-сервером работает гораздо шустрее старого: отдаёт 50 страниц в секунду, а не две. Кстати, Друпал с ВордПрессом (правда, без нормального кэширования) работают ещё медленнее, чем старый сайт.

Новый сайт лежит на test.ilmeny.org, в выходные потестирую, в понедельник, наверное, запущу его вместо старого.

test.ilmeny.org

Если увидите на свежем сайте что-то неправильное — сообщите, пожалуйста.

P. S. Попутно выяснил: боевой режим в Mojoliciousназывается не production, как я почему-то думал, а deployment.

upd/14:40: мне тут товарищ подсказывает, что в Mojolicious всё-таки production, а deployment — это значение переменной окружения PLACK_ENV, которую выставляет Starman.

http://shoorick.ru/2015/06/06/test-ilmeny-org/

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

Сообщество ru_perl в LiveJournal: Mojo, SQLite, DATATIME

Привет сообщество, кто-нибудь доставал дату из SQLite? Вот сама строка:

postime DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP

вот тут полный дамп: http://pastebin.com/dKe5H8CN

Достаю из таблицы post в моджо так:

% while( my $post = $cursor->next ){
$post->header;
$post->post;
$post->tags;
$post->postime->datatime; # ошибка
% }

Сдаётся мне, что есть какие-то нюансы с датой, которых я не знаю, может есть ссылка где почитать, ничего не нашёл. Спасибо.

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

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

pp Выпуск 28. Июнь 2015

http://pragmaticperl.com/issues/28

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

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

- Анонс рязанского Perl-воркшопа — 2015, Илья Чесноков
Рязанский Perl Workshop 2015 — бесплатная конференция, посвященная языку программирования Perl, которая впервые проводится в Рязани.
http://pragmaticperl.com/a/cb27f7c0

- Анонс «Perl Mama» — 2015, Дмитрий Шаматрин
Таки первая одесская конференция по Perl — Perl Mama 2015.
http://pragmaticperl.com/a/c9f7f421

- Perl Golf на YAPC::Russia 2015, Андрей Шитов
Рассказ про соревнование Perl Golf, проходившее в течение двух дней на майской YAPC::Russia в Москве
http://pragmaticperl.com/a/ce83ac01

- Рефакторинг Legacy, Наталья Савенкова
Рефакторинг устаревшего кода в примерах
http://pragmaticperl.com/a/608808de

- Что нового в Perl 5.22, Андрей Шитов
Краткий обзор наиболее заметных изменений в свежем стабильном релизе перла
http://pragmaticperl.com/a/83c729af

- Полный список изменений в Perl 5.22.0, Владимир Леттиев
Перевод документа perl5220delta.pod на русский язык
http://pragmaticperl.com/a/f5d40b36

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

- Интервью с Рене Беккером, Вячеслав Тихановский
Рене Беккер (Renée Bäcker) — немецкий Perl-программист, выпускал журнал $foo, активно участвует в немецком Perl-сообществе
http://pragmaticperl.com/a/64dbde54

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

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

Доступны msi-пакеты для установки: 32-битной и 64-битной версии.

Портабельные версии: 32-битная, 64-битная.

Новые версии содержат последнюю стабильную версию Perl 5.22.0. Кроме того, был обновлен обновлён тулчейн gcc 4.9.2 и mingw-w64 v4.0.2. Полная информация о релизах соотвественно 32 и 64.

К сожалению, msi-пакеты не подписаны, поэтому проверяйте sha1 отпечаток.

На данный момент известно о нескольких проблемах в релизах: сломан модуль IPC::Run, а в 64-битной сборке отсутствует Math::Pari вместе со всеми зависимостями.

Темы: Perl windows

PerlNews.Ru: 28-й выпуск журнала Pragmatic Perl

Вышел 28-й выпуск журнала о современном Perl на русском Pragmatic Perl.

Pragmatic Perl 28

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

Темы: PragmaticPerl

Среда, 3 июня

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

После года разработки представлена новая стабильная ветка языка программирования Perl - 5.22. При подготовке нового выпуска было изменено около 590 тыс. строк кода, изменения затронули 2400 файлов, в разработке приняли участие 94 разработчика.

Сообщество ru_perl в LiveJournal: DBIx::Class order_by

Доброго времени суток. Вот есть кусочек кода:

use Mojo::Base 'Mojolicious::Controller';
use POSIX qw(ceil);
use Data::Page;

sub index {
my $self = shift;
my $rs;
my $current_page = ($self->req->param('page') || 1);

if( $current_page > 1 ){
$rs = $self->db->resultset('Post')->search( undef, {
page => $current_page,
rows => 10
});
}else{
$rs = $self->db->resultset('Post')->search( undef, {
order_by => { -asc => 'colA' }, # Ошибка!!!
page => 1,
rows => 10
});
}
my $total_entries = $rs->pager->total_entries;
my $total_entries = (ceil($total_entries / 10) * 10) / 10;

$self->stash( current_page => $current_page );
$self->stash( total_entries => $total_entries );
$self->stash( cursor => $rs );
}

Пытаюсь отсортировать записи в БД, что-бы выводить на страницу последнюю добавленную запись, первой. C DBIx::Class только знакомлюсь, документация корявая, на ru.pm все спят. Интересует параметр: order_by => { -asc => 'colA' } Непонятно как он сортирует, и в какую сторону. На данный момент выдаёт ошибку. Спасибо заранее, если кто просвятит по этому вопросу.

PerlNews.Ru: Конференция «Perl Mama» 2015

25-26 июля 2015 года в Одессе впервые пройдет конференция «Perl Mama», посвященная языку Perl. Участие бесплатное.

Сайт конференции: perlmama.od.ua

Подать заявку на выступление: perlmama.od.ua/odessa2015/newtalk

Предположительная программа конференции:

  • 24 июля — preparty
  • 25 июля — конференция: основной день докладов, затем afterparty
  • 26 июля — конференция, затем afterparty

Темы: YAPC

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

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

1 июня 2015 года была выпущена новая стабильная версия языка программирования Perl 5.22.0. Разработка велась примерно 12 месяцев, начиная с Perl 5.20.0, и содержит примерно 590 000 изменённых строк среди 2400 файлов от 94 авторов.

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

Темы: Perl

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

PerlNews.Ru: Появились видеозаписи докладов YAPC::Russia 2015

На официальном YouTube-канале moscow.pm появились записи докладов YAPC::Russia 2015.

Темы: YAPC moscow.pm

PerlNews.Ru: Анонсирован Рязанский Perl Workshop 2015

15-16 августа 2015 года состоится первый в Рязани Перл воркшоп.

Конференция пройдет в офисе компании EPAM Systems по адресу г. Рязань, ул. Гоголя, д. 16.

Регистрация открыта на странице: event.yapcrussia.org/ryazan2015/

Подать заявку на выступление: event.yapcrussia.org/ryazan2015/newtalk

Предположительная программа конференции:

  • 15 августа — день докладов
  • 16 августа — совместный выезд на природу

Темы: YAPC

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

Записки программиста — Perl: Регулярные выражения в C++11 и парсинг логов Nginx

Ранее мы уже выясняли, что C++ никогда не умрет, и знать низкоуровневые вещи приходится, даже если фултайм пишешь на Scala. Поэтому я решил уделять некоторое время пописыванию небольших программок на C/C++. Тем более, что с тех пор, когда я активно этим делом увлекался, прошло уже лет семь-восемь и многое сильно изменилось. Так, например, в стандартной библиотеке [...]

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

Чтобы не искать: Как я стал мейнтейнером одного из модулей Perl на CPAN

В дополнение к предыдущему посту.

Я таки связался с автором и стал мейнтейнером модуля. Подробности на Хабре.

Хабрахабр: Метки / perl: Как я стал мейнтейнером одного из модулей Perl на CPAN


image

У меня на работе, в одном из проектов, используется модуль XML::WBXML. Это модуль для работы с бинарным XML — WAP Binary XML.

К сожалению, модуль обновлялся последний раз в 2006 году, т.е. 9 лет назад. С тех пор от Дэвида Глессера (David Glasser), автора модуля, не было ни слуху, ни духу, багрепорты висели неотвеченными, баги, соответственно, неисправленными. Модуль был забыт и заброшен.

Нужно было что-то с этим делать. Ниже я хочу поделиться своим опытом получения контроля над заброшенным модулем Perl.
Читать дальше →

Мета

Поиск

Участники

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

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

По-другому

Приборы