PHP подкаст #3

В предыдущем подкасте я много говорил что хорошо и что плохо. Будьте бдительны! Это всего лишь мнения и все определяется бесконечным количеством условий.

СКАЧАТЬ mp3 (49Мб)

Статья недели

https://habrahabr.ru/post/309962/. Про ФП на PHP: функции высшего порядка, кастомные генераторы и как реализовать изящный JSON-парсер.

Конференция по Symfony в Барселоне

Ссылка на видео с конференции: https://www.youtube.com/playlist?list=PLQeCouGk8zAOdUpj_aKgxMUAacV2BD5Eq

Райан Вивер про современный стек JS-разработчика

Сейчас JS — это хипстерская штуковина и о ней говорят из каждого утюга. Проник на Симфони-конференцию доклад от Райана про JS. Но доклад не обычный: весь стек современной профессиональной разработки за 45 минут в умеренном темпе. Best tools на текущий день. Отличный доклад, который можно рекомендовать друзьям, если нужно быстро въехать в тему.

  • ES6 он же ECMAScript 2015.
  • npm.
  • babeljs.io для трансформации в ES5.
  • webpack для импорта файлов: можно разбивать JS по разным файлам и собирать это при помощи webpack’а, делая возможным import модулей.
  • webpack-dev-server для live realod’а.
  • ReactJS. Рекомендованный гайд https://facebook.github.io/react/docs/thinking-in-react.html.
  • JSX -> babel -> JS.
  • и еще горсть технических рецептов что делать с путями к изображениям, как обернуть css внутрь js’а и зачем это нужно.

KNPUniversity, который развивает Райан, был им переписан на этом стеке за неделю.

Если смотреть не только на слайды, то можно заметить, что Райан гуляет по сцене босиком. Привет Питеру Джексону.

Бенджамин Эберлей: Doctrine ORM + NoSQL Читать далее PHP подкаст #3

PHP подкаст #2

Важное замечание! В подкасте я сказал, что EventDispatcher компонент реализует Oberserver паттерн. Это не так. EventDispatcher компонент реализует Mediator паттерн.

План выпуска:

СКАЧАТЬ mp3 (44Мб)

Павел Савельев из Lamoda об опыте внедрения Silex/Symfony

Прелюдия о размере компании. 3500+ сотрудников и 7 этажей в здании. Что-то вроде этого. ZF2 + Silex для менеджмента тикетов и работы call-центра. Другой компонент также на ZF2 + Silex позволяет организовать эффективную доставку. Студия на ZF2. Doctrine и Monolog были отмечены в стеке. Холивар Angular vs React.

Ильяс Салихов из RetailCRM о построение SaaS-сервисов

Ильяс рассказал о достаточно частных проблемах и решениях. Больше про БД и DevOps как мне показалось.

Разбили клиентов по базам и по DIC и получили с ростом клиентской базы рост контейнеров, каждый из которых нужно создавать при разогреве кеша.

Было решено сделать один контейнер с динамическими параметрами, т.е. добавить возможность в конструктор контейнера передавать аргументы. Было рассказано как собирается сам контейнер.

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

Был упомянут pgbouncer — это прокси к PostgreSQL, которых “держит” соединение. Ильяс упомнянул, что время запросов сократилось в 2-10 раз.

В результате стали упираться в максимальное количество одновременных соединений (max connection) и решили разбить базы по схемам. Не лучший подход, т.к. планировщик выполнения запроса анализирует в PostgreSQL все таблицы всех схем. Решили на одном сервере запускать несколько БД, с ограниченным количеством схем.

Долго происходят миграции, поэтому доработали механизм деплоя.

Не хватило в обзоре архитектурной картинки и стека.

Алексей Медведев из Alpari: Symfony Workflow компонент

Я уже успел попользоваться этим компонентом и вполне им доволен. Что такое Workflow и что такое система управления Workflow? Были упомянуты сети Петри — двудольный ориентированный мультиграф. Вершины, ребра, токены. Workflow-сеть — частный случай сети Петри. В Symfony Workflow вы можете с помощью YAML сконфигурировать граф. Я это делал в своей небольшой задаче вручную. Состояние субъекта определяется сущностью, т.е. значениями аттрибутов этой сущности.

Алексей рассказал об особенностях их WorkflowExtensionsBundle. Особенности: шедулинг (отложенное выполнение transition’a), блокировка переходов с помощью ExpressionLanguage.

Шедулинг реализуется https://github.com/schmittjoh/JMSJobQueueBundle.

Руслан Ханов из Яндекса о Symfony как о микрофреймворке.

Symfony используется в Яндексе. В яндекс доставке. Не знал до этого о существовании такого сервиса. Исторический обзор того как жили при symfony1. Насколько я помню, что название фреймворка писалось с маленькой буквы. Руслан концептуально сравнил микро и макро фреймворки. MicroKernel не нужен!

Марко Пиветта (Ocramius) о проектах с большим горизонтом существования

Замечательный доклад. Марко работает в консалтинговой компании и знает о чем говорит :). Доклад может быть особо полезен для тех, кто пишет публичный код. Абстрактный и о лучших практиках проектирования софта.

Defencive coding по аналогии с defencive driving, т.е. вождением, когда вы допускаете, что другие участники дорожного движения также могут ошибаться. Нужно писать софт так, чтобы те, кто ошибаются понимали в чем их ошибка и делать софт работоспособным даже при условии ошибок пользователя. Читать далее PHP подкаст #2