В предыдущем подкасте я много говорил что хорошо и что плохо. Будьте бдительны! Это всего лишь мнения и все определяется бесконечным количеством условий.
https://habrahabr.ru/post/309962/. Про ФП на PHP: функции высшего порядка, кастомные генераторы и как реализовать изящный JSON-парсер.
Ссылка на видео с конференции: https://www.youtube.com/playlist?list=PLQeCouGk8zAOdUpj_aKgxMUAacV2BD5Eq
Сейчас JS — это хипстерская штуковина и о ней говорят из каждого утюга. Проник на Симфони-конференцию доклад от Райана про JS. Но доклад не обычный: весь стек современной профессиональной разработки за 45 минут в умеренном темпе. Best tools на текущий день. Отличный доклад, который можно рекомендовать друзьям, если нужно быстро въехать в тему.
Если смотреть не только на слайды, то можно заметить, что Райан гуляет по сцене босиком. Привет Питеру Джексону.
Доклад о том, как использовать преимущества неструктурированных данных (документов), используя при этом Doctrine ORM.
Предположим, что мы хотим описать сущность Product. В зависимости от категории, к которой относится продукт он может содержать разный набор аттрибутов. С ростом числа аттрибутов процесс гидрации сырых данных в объект будет занимать все больше времени. Какие решения?
Настоятельно рекомендует использовать PHPStorm — удобная навигация по коду и автодополнение.
Пабло рассказал, что типичный деплой приложения — это типичная скучная задача, которую можно сделать нескучной при помощи автоматизации. Автоматизация сильно снижает пользовательскую интервенцию и исключает что-то такое:
sudo rm -rf / var/log/*
Fabric, Capistrano, Deployer, Magallanes. Пабло рекомендует Ansible.
Доклад было проще оформить в виде поста с кусками исходников. Больше было похоже на готовый рецепт. Имхо смотреть не стоит. Читайте манулаы по ansible, ansible-galaxy и ansistrano.
Пабло упомянул инструмент для упаковки вашего проекта в deb/rpm/etc https://github.com/jordansissel/fpm.
Типичный деплой выглядит так: вы пушите в гит-репозиторий -> уведомление в Jenkins -> Тесты (QA team, etc, etc, etc…) -> уведомление в Ansible -> деплой -> уведомление на почту, в Slack, etc.
Если вы еще PHP5, то установите opcache. А еще лучше мигрируйте на PHP7. Проблема только в том, что не все расширения обратно совместимы и до сих пор мейнтейнятся. Альберт показал скрины производительности их сервиса от New Relic. 40 мс и хотят еще быстрее. Посмотрели что выдает blackfire.io. Много съедает autoloading. Проблема в том, что происходит подключение одного и того же файла, который не меняется с течением времени. Т.е. каждый реквест происходит ненужная аллокация памяти под одни и те же ресурсы. Решение: ReactPHP + PPM (PHP process manager поверх ReactPHP). Внедрение этого хозяйства может повысить производительность на 30-40%.
Главный недостаток этого подхода — у вас на весь проект один процесс. Т.е. если PHP-FPM создает для каждого запроса отдельный процесс, то используя Реакт у нас на все один процесс и если он ложится, то ложится весь проект. Т.е. ломается что-то в одном action и мы получаем лежащий проект. Другой недостаток — утечки памяти.
Кто может быть ориентиром для программиста? “An astronaut’s guide to life on Earth”. Chris Hadfield. Дерево решений: каждое решение приближает или отдаляет от цели. Быть открытым к обратной связи. Спрашивать окружающих что они думают о тебе, чтобы найти недостатки. Избавляться от эго — оно мешает работать в команде, а команды побеждают. Быть подготовленным ко всему — правило астронавта. Невозможно вернуться на Землю за чем-то, что забыл :). Если вы приходите в новую команду, то нужно быть нейтральным ко всему. По аналогии новый астронавт на МКС не может знать всего того, к чему привыкли те астронавты, которые уже тут провели месяцы.
Доклад о PHP-FIG и о важности коллаборации между разными разработчиками разных экосистем. Composer создавался изначально для PhpBB! PSR = PHP Standards Recommendations. FIG в ноябре будет 7 лет. Неплохая смежная статья про то как закулисно развивается FIG: https://www.sitepoint.com/the-past-present-and-future-of-the-php-fig/.
История о том, что важно привлекать контрибьюторов.