среда, 29 июня 2011 г.

Ищем Perl-программистов в Киеве и Чернигове (Украина)

Для Perl программистов есть 2 вакансии - одна в Киеве и одна в Чернигове.

Компания Portaone.
Описание киевской вакансии -  http://www.portaone.com/company/careers/developer/
Описание черниговской вакансии -  http://www.portaone.com/company/careers/web-developer/

Работать будете в команде профессионалов, начинающих программистов в компании практически нет.

Если что-то интересует - спрашивайте, постараюсь ответить на все вопросы.

четверг, 23 июня 2011 г.

Запускаем Mojolicious/PSGI приложение: мини-тест производительности.

Решил провести небольшое тестирование производительности Mojolicious  в разных режимах:
  1. Mojo::Server::Daemon (Epoll/Poll)
  2. Mojo::Server::Hypnotoad (Epoll/Poll)
  3. Mojo::Server::PSGI + Corona
  4. Mojo::Server::PSGI + Starman
  5. Mojo::Server::PSGI + Starlet
  6. Mojo::Server::PSGI + Plack::FCGI::Handler
Хотелось еще протестировать nginx+uwsgi, но не сложилось. Возможно в следующий раз.


Как проводилось тестирование 
Тестировалось приложение, которое просто возвращает строку "OK". Также, в тех же условиях, тестировалось минимальное PSGI приложение. Основной задачей было узнать наиболее производительный режим запуска. 
Все запросы к приложению проксировались через nginx - 4 воркера по 1024 конекшенов максимум. Тестировалось при помощи утилиты "ab". Результат считался как среднее арифметическое по 3 запускам теста. 10000 запросов на тест.

понедельник, 6 июня 2011 г.

Наконец-то исправлена обработка исключений в Perl 5.14

Все уже знают про выход Perl 5.14, но почему везде пишут лишь про новые плюшки?! Но то что была наконец-то решена древняя проблема с обработкой исключений, никто и не вспоминает.

В Perl мы используем die для генерации исключения и блочный eval для перехвата. Конструкция, думаю, знакома всем:
eval { 
  # some code 
  die "error"; 
  # some code  
}; 

if ($@) { 
    print "Error [$@] occured!"; 
}

Так вот, кроме того, что это выглядит коряво, так это еще и работает(до версии 5.14) не всегда хорошо. Проблема описана в моем посте "Чем плох eval?!"

В perl 5.14 произошли изменения в поведении die, warn и $@, что решило проблемы описанные в вышеупомянутом посте. Теперь можно не боятся, что деструктор затрет исключение.  Также  local $@ не испортит нам жизнь.

Более детально читайте в perldoc perldelta => Exception Handling.

Можно было бы отказаться и от Try::Tiny, но есть еще эстетические соображения :)