PHP подкаст #12

JIT в PHP8, JWT для SSO, кривые оптимизации Zend VM, рамбл ток о фрилансе.

Скачать mp3 (33Мб)

Еще немного про производительность интерпретатора PHP.  Уже гоняют бэнчмарки на экспериментальной ветке https://github.com/zendtech/php-src. 7ая версия стала прорывом в нескольких смыслах. 7.1 несколько быстрее 7 за счет оптимизации opcache расширения. А JIT/PHP8 потенциально еще удвоит производительность интерпретатора. Лучше один раз увидеть результаты бэнчмарка. Надеюсь, что в PHP8 добавят pthread как core extension.

На недавней Symfony-конфереции Фабьен Потенсье анонсировал грядущий выход нового продукта Symfony Flex. Что-то вроде “Make Symfony Great Again”. На реддите есть коротенький тред, в котором один из участников объяснил свое понимание Flex: обертка вокруг composer, упрощающая менеджмент бандлов/зависимостей. Посмотрим, что за зверь. Обещают релиз на начало 2017, т.е. ждать осталось недолго.

Только вышла Symfony 3.2, но это не означает, что цикл разработки фреймворка остановился и в 3.3 — выйдет в конце мая 2017 — в Security компонент добавлена JSON-аутентификация. Вместо привычной формы с логином и паролем мы должны отправить POST-запрос на определенный конфигом endpoint с JSON’ом на борту. В этом JSON должна быть указана пара login/password. Это нововведение упростит реализацию JWT-решений и может пригодиться для SSO. В ответ на такой JSON может прийти JWT, передаваемый серверу при каждом реквесте в заголовке.

Выложили два видео с прошедшего митапа комьюнити ThinkPHP. Тарас Омельяненко выступил с докладом по их подходам к разработке большого приложения на PHP. В большей степени доклад посвящен циклу разработки и сопутствующим ему инструментам: Swagger, git (flow), Jenkins CI, Docker, Ansible, балансировка нагрузки и т.д. Одна мысль показалась наиболее ценной — предложить клиенту комплексное решение, в котором уже есть все от документации и спецификаций API до CI. На первых порах это может быть реализовано просто, но вы задаете тон последующей разработке. С определенного момента по другому уже делать продукт не получается.

Второй доклад от Антона Шевчука о векторах карьерного роста. Куда можно податься в разработке. Антон коснулся ролей tech lead, team lead, архитектора, наставника — лично не люблю этот термин; у меня он ассоциируется с пирамидами из 90х — ухода из IT, работе на фрилансе и развитии не только профессиональных навыков, но и социальных. В целом доклад получился позитивным и расслабленным. Посыл доклада: развивайтесь и становитесь лучше. Хорошо смотрится на полуторном ускорении. В конце подкаста я похоливарю о преимуществах и недостатках фриланса. Во время доклада аудитория преимущественно реагировала негативно и мне захотелось вступить в открытую дискуссию на эту тему.

Немного про composer. В статье автор углубляется в тему скриптов в composer.json. Можно создавать свои команды в секции script, так и вызывать команды по определенному событию. В первом варианте composer может быть использован как своеобразный аналог Makefile. На тему скриптов достаточно хорошо и лаконично написано в мануале composer’а.

В PHP комьюнити в телеграмме Aleh Kashnikau скинул ссылку на статью от Никиты Попова — активного контрибьютора PHP — о неочевидном поведении интерпретатора.

Речь идет о следующем фрагменте кода:

<?php

$a = 1;

$c = $a + $a++;

var_dump($c); // int(3)

$a = 1;

$c = $a + $a + $a++;

var_dump($c); // int(3)

Все становится на свои места, если глянуть на опкоды для Zend VM. Проблема в очередности инструкций POST_INC и использовании прямого доступа к переменной. Последнее называется compiled variables (CV) оптимизация. Выводы из статьи:

  • не полагаться на порядок выполнения операций в выражении (precedence);
  • отключить CV оптимизацию возможно с помощью подавления ошибок @.

В связи с этой статьей также хочу напомнить про сервис, который полезно иметь нам в закладках: https://3v4l.org/. Здесь можно посмотреть какой результат выполнения PHP-кода будет в разных версиях интерпретатора PHP/HHVM. Также можно глянуть опкоды, что иногда — как в этом случае — проясняет ситуацию.

Под занавес любопытный проект GDelt (the “Global Database of Events, Language and Tone”) и возможности взаимодействовать с ним посредством BigQuery от Google. BigQuery предоставляет возможность хранить и обрабатывать данные в облаке. Обещают терабайты обрабатывать за секунды и петабайты за минуты. Вернемся к GDelt. Это база данных почти всех событий происходящих на планете в реальном времени с 1 января 1979 года. Помимо прочих, важное достояние этой базы — она открытая. Для взаимодействия с Google Cloud Platform актуально использовать google-cloud-php. Внимание! SQL-запросы платные. Чем больше обработанных данных, тем больше платите. За Тб обработанных в рамках запроса данных нужно платить — по заявлению автора статьи — ~5USD.

Оффтопик. Преимущества/недостатки работы на фрилансе.

Недостатки:

  • не заглянешь за плечо коллеги и не получишь быстрый фидбек face-to-face;
  • подходит не всем в силу ряда требований: нужна как минимум отдельная комната, где вас никто не тревожит весь день (даже если есть дети), умение самоорганизоваться;
  • распоряжаетесь малыми ресурсами компании;
  • менее защищены в законодательном плане (оплата труда, страховки, юридическое оформление), т.е. как сотрудник.

В целом, нужно примерять на себя больше ролей и отдавать им драгоценное время.