Выпуск 29. Июль 2015
← Инструменты для поиска зависимостей в скрипте | Содержание | Интервью с Дэвидом Голденом →Обзор CPAN за июнь 2015 г.
Рубрика с обзором интересных новинок CPAN за прошедший месяц
Статистика
- Новых дистрибутивов — 187
- Новых выпусков — 775
Новые модули
Canary::Stability
Необычный модуль, от которого теперь зависят практически все модули Марка Леманна, AnyEvent
, Coro
и другие. Модуль используется на фазе конфигурации (при запуске Makefile.PL
) и проверяет версию Perl, под которой происходит сборка. Если версия Perl 5.22.0 или старше, то модуль сообщает о том, что эта версия Perl не поддерживается.
Таким образом выражается протест против регулярного нарушения обратной совместимости текущей командой разработчиков Perl5 вопреки действующей политики perlpolicy.
Assert::Conditional
Assert::Conditional
— это модуль, который позволяет организовать проверку выполнения определённых условий. Для программистов, знакомых с языком C, это аналог assert. Работа модуля может управляться с помощью переменной окружения ASSERT_CONDITONAL
, которая позволяет включать и отключать работу модуля, что полезно при работе в режиме отладки.
Список тестирующих функций просто огромен. Например:
# проверка на вызов в списочном контексте
assert_list_context()
# аргумент неопределён
assert_undefined(ARG)
# первый аргумент фукнции является blessed
assert_object_method()
# проверка, что передано три аргумента
assert_argc(3);
# строка является бинарной (кодовые точки от 0 до 255)
assert_bytes(ARG)
Algorithm::BloomFilter
Algorithm::BloomFilter
— это XS-реализация вероятностной структуры данных Фильтра Блума. Подобные структуры данных используются в основном для систем хранения, позволяя быстро определить, существуют ли данные, избегая затратных операций обращения к диску.
DBD::SQLcipher
DBD::SQLcipher
— это модуль, исходный код которого базируется на DBD::SQLite
с тем лишь отличием, что вместо SQLite используется SQLCipher — расширение SQLite, которое обеспечивает прозрачное шифрование данных с помощью алгоритма AES-256. API модуля идентично DBD::SQLite
, требуется лишь представить драйверу ключ (де)шифрования:
my $dbh = DBI->connect( "dbi:SQLcipher:dbname=/path/to/db.file", '', '' );
$dbh->do( qq{pragma key ="secret_db_password";} );
WWW::Telegram::BotAPI
WWW::Telegram::BotAPI
— это модуль, который реализует доступ к API сервиса обмена сообщениями Telegram. Модуль использует либо Mojo::UserAgent
, либо LWP::UserAgent
, обеспечивая хорошую интеграцию с Mojolicious, но при этом не имея жёсткой зависимости от него.
Crypt::JWT
Crypt::JWT
— это реализация стандарта JSON Web Token (RFC7519) для Perl. JWT в основном используется для реализации аутентификации пользователей в веб-окружении и технологии единого входа.
Обновлённые модули
Getopt::Long 2.47
За июнь вышло два обновления Getopt::Long
, в которых исправлено две ошибки: формат числа с плавающей точкой теперь поддерживает запись без цифры перед точкой, например, .2
(вместо 0.2
), использование ООП-интерфейса больше не нарушает последующую работу функционального.
Plack 1.0037
В новом релизе суперклея для веб-фреймворков и веб-серверов Plack модуль валидатора запросов и ответов Plack::Middleware::Lint
теперь поддерживает значение HTTP/2
для переменной окружения SERVER_PROTOCOL
.
Net::SSLeay 1.70
Вышел новый релиз модуля Net::SSLeay
. Теперь модуль поддерживает сборку с OpenSSL 1.0.2 и 1.0.2a, а также теперь полностью совместим в LibreSSL.
Dancer2 0.160003
Вышел новый релиз веб-фреймворка Dancer2, в котором добавлено экранирование символов в идентификаторах для файловых сессий. Поскольку строка идентификатора использовалась как часть пути к файлу сессии, использование последовательности ../
в идентификаторе, получаемого из cookie, позволяло получать доступ к произвольному файлу. Также произведён переход с использования модуля HTTP::Headers
на более быстрый HTTP::Headers::Fast
.
Dancer 1.3138
Также, как и в Dancer2, выполнено исправление в Dancer::Session::YAML
, чтобы исключить возможность получения доступа к произвольным файлам через специально сформированный идентификатор файловой сессии в cookie.
Mango 1.18
Обновлён модуль Mango
— реализация неблокирующегося драйвера для MongoDB. В новой версии появилась поддержка аутентификации SCRAM-SHA-1
. Также исправлена ошибка в проверке BSON-идентификаторов. Дело в том, что для этого использовалось регулярное выражение:
$oid !~ /^[0-9a-fA-F]{24}$/
Проблема в том, что символ $
приводит к совпадению не только в конце строки, но и перед символом переноса \n
в конце строки. Таким образом, идентификатор с завершающим символом переноса строки проходил валидацию в драйвере, но приводил к ошибке в базе MongoDB. Вместо $
теперь применяется \z
.
Данная ошибка почему-то отмечена как проблема безопасности, которая позволяет организовать DoS-атаку на сервер MongoDB. Но Mango не производит переподключений или пинг сервера при ошибках, в отличие от ruby-реализации Moped, где подобная ошибка действительно позволяла организовать DoS-атаку.
HTTP::Headers::Fast 0.18
Новый релиз HTTP::Headers::Fast
восстанавливает совместимость с HTTP::Headers
(реализован отсутствовавший метод content_type_charset
).
← Инструменты для поиска зависимостей в скрипте | Содержание | Интервью с Дэвидом Голденом →