Выпуск 15. Май 2014

Тестирование интерфейса веб-приложений. Применение WWW::WebKit | Содержание | Интервью с Кристианом Вальде (Christian Walde)

Обзор CPAN за апрель 2014 г.

Рубрика с обзором интересных новинок CPAN за прошедший месяц.

Статистика

  • Новых дистрибутивов — 240
  • Новых выпусков — 875

Новые модули

Модуль WWW::HKP — это реализация клиента протокола HTTP Keyserver Protocol (HKP), который может использоваться для получения информации или отправки на сервер OpenPGP-ключей.

MetaCPAN::Client — это с чистого листа переписанный MetaCPAN::API, который теперь становится официальным клиентом для API MetaCPAN. В модуле используется объектная система Moo и Search::Elasticsearch как бэкенд для сложных поисковых запросов.

Модуль PLON предназначен для сериализации объектов в Perl-код. Для десереализации достаточно использовать eval(). В отличие от Data::Dumper модуль PLON имеет схожий с JSON интерфейс и по умолчанию не экранирует многобайтовые символы (поддерживается только кодировка UTF-8).

Ещё один легковесный модуль для создания исключений. В $@ помещается объект Throw, который содержит сообщение об ошибке и дополнительные данные, которые вы передали функции в виде хеша. Throw содержит функцию classify для классификации типа ошибки, что может быть удобно при работе совместно с Try::Tiny и подобными модулями. Это выгодно его отличает от Acme::Throw, в котором только один тип ошибки:

(╯°□°)╯︵ ┻━┻

Exception::Chain — это тоже модуль для создания исключений. Особенностью данного модуля является возможность создания вложенных исключений, когда одно исключение вызывает цепочку последующих исключений, каждое из которых содержит какую-либо дополнительную информацию об ошибке. При классификации ошибки модуль может обходить всю цепочку исключений для поиска заданного типа (типов) ошибки.

Ещё один пример того, как в Perl можно сэмулировать любую парадигму программирования. Модуль Homer реализует объектную систему, основанную на прототипах, которая применяется, например, в JavaScript. Вместо классов используются только объекты, на основе которых можно создавать другие объекты, добавлять атрибуты, изменять прототипы объектов.

Когда требуется выполнить несколько вызовов методов у объекта, бывает очень удобно объединить их в цепочку вызовов. К сожалению, не все API предоставляют такую возможность. Модуль Method::Cascade позволяет выполнить каскадный вызов методов для произвольного API:

    use Method::Cascade;
    use IO::Socket::INET;

    cascade(IO::Socket::INET->new('google.com:http'))
     ->timeout(5)
     ->setsockopt(SOL_SOCKET, SO_KEEPALIVE, pack("l", 1))
     ->print("GET / HTTP/1.0\r\n\r\n")
     ->recv(my $response, 4096);

    print $response;

Cogit — это реализация интерфейса к git-репозиториям на чистом Perl. Проект является форком Git::PurePerl. Автора не устроило, что Git::PurePerl основан на Moose (который не является чистым Perl) и имеет неудачное API. В новом проекте объектная система базируется на Moo.

Модуль bare позволяет вам создавать скаляры в виде простых слов без знака сигила $. Подобные скаляры могут использоваться также как и обычные скаляры, им даже можно присваивать значения, но никакой практической пользы, кроме косметического эффекта, это не даёт.

Обновлённые модули

В новой версии веб-сервера Starman исправлена ошибка, когда сервер отправлял тело ответа в chunked-кодировке при получении HEAD-запроса.

Новый релиз ООП-реализации Mouse исправляет несовместимое с Moose поведение логического типа Bool.

Версия модуля на CPAN для работы с большими числами была синхронизирована со всеми последними изменениями дистрибутива в perl blead за последние три года.

В новом релизе веб-фреймворка Dancer2 произошёл переход на семантическое версионирование, что заметно по появившимся четырём нулям в конце номера версии. Многим улучшениям новый релиз обязан Dancer2-хакатону, который прошёл в штаб-квартире Booking.com.

Вышел первый мажорный релиз старых добрых Search::Tools — инструмент для создания приложений для поиска. Новая версия теперь использует объектную систему Moo и Class::XSAccessor.

Selenium::Remote::Driver — это Perl-клиент для Selenium WebDriver, инструмента тестирования интерфейса веб-приложений с использованием браузера с поддержкой JavaScript. В новых апрельских релизах появилась поддержка управления профилями Firefox и завершён перевод модуля на использование Moo.

В новой версии супервизора процессов Proclet появилась экспериментальная поддержка периодического запуска процессов с узнаваемым API crontab.

Новый релиз модуля асинхронный доступа к Berkeley DB включает исправление для работы на windows с Perl 5.18, декларирована поддержка 6-й версии Berkeley DB.

Вышел новый мажорный релиз модуля для создания, рендеринга и валидации HTML-форм HTML::FormFu. Появился метод layout для задания порядка вывода полей элементов, обновились TT-шаблоны, исправлен вывод предупреждений при работе с perl 5.19.x.

Модуль MetaCPAN::API объявлен устаревшим в пользу нового официального клиента MetaCPAN::Client.

Владимир Леттиев


Тестирование интерфейса веб-приложений. Применение WWW::WebKit | Содержание | Интервью с Кристианом Вальде (Christian Walde)
Нас уже 1393. Больше подписчиков — лучше выпуски!

Комментарии к статье