• Протокол HTTP/2 и его реализация

    20 май 2014 11:58
    Работа над новым протоколом для всемирной сети находится на завершающем этапе. HTTP/2 должен решить многие застарелые проблемы HTTP/1.1 и дать возможность Интернету развиваться дальше. Есть довольно хорошая статья «http2 explained» , посвященная новому протоколу HTTP/2, разъясняющая предпосылки его создания и наглядно демонстрирующая его возможности и принципы работы. Статья, тем не менее, не содержит какой-либо детальной технической спецификации протокола. Есть также отличная книга Ilya Grigorik «High-Performance Browser Networking» , веб-версия которой свободно доступна , и которая также содержит интересные детали о прародителе HTTP/2 - SPDY и самом HTTP/2 (правда уже немного устаревшие). После её прочтения я вдохновился создать реализацию HTTP/2-протокола и в процессе досконально изучить новый протокол. Эта статья - небольшой отчёт за последние два месяца убитого свободного времени.
    Дальше

    Комментарии (0)

  • Сборка Perl 5.18.1

    05 сен 2013 07:04
    Завершилось обновление Perl до версии 5.18.1 в репозитории ALTLinux Sisyphus.
    Как обычно, при смене мажорной версии Perl происходит изменение API libperl, что означает, что требуется пересборка всех программ и модулей слинкованых с libperl.so. В отличии от многих других вендоров в ALTLinux нельзя просто так взять и обновить библиотеку, сломав сотни зависимых программ. Чтобы новая библиотека прошла в репозиторий для разработчиков, должна быть создана транзакция в сборочной системе, в рамках которой происходит сборка новой библиотеки и выполняется пересборка всех зависимых приложений. В случае с Perl 5.18.1 такая транзакция состояла из 320 пакетов.

    Как обычно, процесс пересборки начинается с мучительного вспоминания, а как проходит эта процедура и с чего начинать. Поэтому я решил сделать подробную заметку о деталях сборки для тех, кто будет в будущем собирать версию 5.20 и последующие.
    Дальше

    Комментарии (0)

  • Почему надо постоянно обновляться до новых версий Perl

    20 май 2013 13:57
    В Perl5 как наверно ни в одном другом языке программирования нет такой тщательной заботы об обратной совместимости. Многие модули CPAN отлично работают на самых древних версиях интерпретатора Perl, вышедших ещё в прошлом тысячелетии. Более того, некоторые авторы с большим удовольствием сообщают в ChangeLog, что в новом релизе исправлены проблемы совместимости с версиями Perl, например, 5.6. Всё это может создавать ложное ощущение у программиста, что выпускаемые новые версии Perl - это не более чем косметические изменения и настоящему труъ хакеру нужен только 5.8.1 или даже 5.6.1 - ведь они стабильны как скалá (не путать со Scala), работают быстрее чем новомодные релизы, да и CPAN продолжает их поддерживать. На самом деле, всё это конечно не так. Развитие кода в рамках старого интерпретатора — это процесс, которые со временем приводит к возрастанию сложности проекта, поскольку помимо кода самого проекта возникает задача тянуть поддержку старого интерпретатора и его багов, а вырваться из этой ловушки со временем становиться всё труднее.
    Дальше

    Комментарии (0)

  • Баг libgd #177

    19 апр 2013 12:08
    Разбирался с ошибкой в тесте Perl модуля GD. Сравните картинки, которая должна быть и какую в реальности формирует третий тест в t/GD.t.

    Как видно, не происходит заполнение одной из областей синим цветом. Удивительно, но баг воспроизводится только на 32-битной платформе x86. В чём же дело?
    Дальше

    Комментарии (0)

  • Спектральный анализ сигнала в Perl

    05 фев 2013 15:39
    Возникла интересная задача - проверить аудио-запись на наличие в нём сигнала той или иной частоты. Например, нужно настроить гитару, а тюнера под рукой нет, а со слухом так всё плохо, что настройка может закончиться лопнувшими струнами или нервами .)
    Оказывается на CPAN есть модуль, который может помочь нам сделать это без особого труда - Math::FFT
    Дальше

    Комментарии (0)

  • MurmurHash - новая хэш-функция в Perl 5.17.6

    21 ноя 2012 22:01
    Существенным изменением в Perl 5.17.6 стала установка по умолчанию новой хэш-функции MurmurHash (v3) и введение по-настоящему случайного порядка следования ключей в хэш-таблице (ассоциативном массиве). Изменение прошло как-то обыденно и незаметно, но думаю, что это будет достаточно заметной фичей будущего стабильного релиза.
    Дальше

    Комментарии (0)

  • Сигнатура функции в Perl 5

    29 окт 2012 16:08
    Сигнатура функции ( Subroutine Signature ) - это способ описания параметров и их типов, с которыми вызывается данная функция. Она содержит имя функции, параметры и их типы, и возвращаемое значение. Также это ещё называют прототипом функции. Сигнатура функции в разной форме применяется в строго-типизированных языках, применяется и во многих динамических языках.
    В Perl 5 на сегодняшний день существует механизм прототипов функции, когда описывается количество и вид передаваемых переменных. Это бывает полезно при написании подпрограмм, выглядящих как встроенные функции (например, grep или open), где не требуется обособлять параметры функции скобками, также выполняется проверка количества и вида передаваемых параметров, что позволяет выявлять ошибки на этапе компиляции.
    Но данный механизм имеет ряд ограничений, например, проверка параметров не происходит, если вы вызываете подпрограмму как &mysub() или $subref->(), что мешает использовать его в модулях для описания прототипов методов.
    В CPAN есть модули , которые в разной степени реализуют подобный функционал, но недавно в рассылке p5p появилось сообщение от Peter Martini о реализации сигнатуры функции для включения в базовый Perl, в виде экспериментальной возможности.
    Дальше

    Комментарии (0)

  • Perlbrew

    13 окт 2012 12:30
    Perlbrew - довольно известный и популярный инструмент для Perl-разработчика, позволяющий легко собирать произвольные версии Perl в домашнем каталоге и также легко переключаться между ними для тестирования и разработки, при этом не затрагивая системную инсталляцию Perl.
    Я весьма долго обходил его стороной, поскольку он просто не был нужен в повседневной работе. Так называемый "Системный" Perl хорошо поддерживается и каждый год обновляется до последней стабильной версии в моём дистрибутиве. Поэтому можно писать код, использующий любые современные фичи и быть уверенным, что он заработает в моей системе. Но, как оказалось, perlbrew здорово может помочь при тестировании программ на старых версиях Perl или в условии специфических сборок.
    Дальше

    Комментарии (1)

  • Скринкаст о GearRepo

    25 сен 2012 00:12
    Записал скринкаст о сборке rpm-пакетов в системе GearRepo для систем на базе ALTLinux на примере Perl-модуля Dancer::Plugin::EscapeHTML.
    Наверно это надо было сделать ещё год назад, когда велась активная разработка, но руки так и не доходили.
    Скринкаст лучше смотреть в HD-качестве, чтобы можно было разглядеть текст в консоли. Прошу прощения за тихий голос, записывал на рабочем месте, не хотелось, чтобы соседи подумали, что я окончательно тронулся и разговариваю сам с собой ;-)
    Дальше

    Комментарии (6)

  • xsubpp строгого режима

    29 авг 2012 16:35
    В состав perl 5.16 включён модуль ExtUtils::ParseXS версии 3.16 (в 5.14 была версия 2.2210). Модуль был подвергнут основательной переработке и впервые смог запускаться под прагмой use strict. Эта особенность, как оказалось, имеет побочные эффекты и некоторые особо продвинутые XS-модули перестали собираться.
    Дальше

    Комментарии (0)