Архитектура Upwork, новая лицензионная политика JetBrains (PhpStorm), Drupal 8 Launch Party 19 ноября, DiDOM — быстрый парсер HTML, PHPFastCGI vs PHP-FPM, оптимизация хвостовой рекурсии.
Всем привет!
Вы слушаете «Пятиминутку PHP», долгожданный выпуск номер 15 еженедельного подкаста о новостях из мира PHP, интересных постах в блогах и современных подходах к разработке.
За месяцы прошедшие с последнего выпуска в мире PHP произошло много всего. Попробую кратко рассказать об основных событиях, заранее извините за баяны.
Начнём со скандалов.
В конце июля в сеть утекли исходники самой популярной фриланс биржи в Росии: fl.ru — исходники на PHP, и, как и ожидалось, там ад и израиль. У меня была ссылка на github репозиторий, но сейчас он уже удалён, так что кому интересно — ищите сами.
К слову о фриланс биржах. Самая популярная биржа на западе — Upwork (которая раньше называлась Odesk) — тоже активно использует PHP. Посмотрите запись доклада об архитектуре Upwork с недавней конференции PHP Frameworks Day. Если кратко: раньше у них была бизнес логика на Perl и рендринг на PHP (первый Zend Framework), а теперь бизнес логика размазана по различным сервисам на Java, а рендринг страниц на Symfony 2.
Возвращаемся к скандалам. Компания JetBrains, которая в том числе выпускает PhpStrom, объявила об изменении лицензионной и ценовой политики: теперь вы не покупаете программу, а берёте её на прокат — это вызвало большие бурления в интернете. Если же не продлить подписку в конце года, то редактор сам откатится на какую-то предыдущую версию. Зато дают скидку для старых клиентов: второй год подписки бесплатно. Новые цены и правила вступили в силу 2 ноября.
И вот что я думаю по этому поводу: с точки зрения покупателя всё стало запутанно, прямо как тарифы у сотовых операторов или цены на облачные вычисления в Amazon.
А с точки зрения компании JetBrains всё просто — они хотят более стабильный и более плотный поток денег, это нормально, это бизнес. Но учитывая скидки, которые они сделали уже существующим клиентам, мне кажется, сработали себе в убыток. У них вся надежда на новых клиентов?
Рассмотрим конкретно мой пример: каждый год я делал upgrade за $49, последний раз в январе 2015.
Теперь январе 2016 года я обновлю свою подписку и заплачу уже $53 (по новым ценам) — это на $4 дороже.
В январе 2017 года я обновлю свою подписку БЕСПЛАТНО.
В январе 2018 года и далее я буду платить по $53.
Итак, теперь я плачу на $4 в год больше, но один год у меня будет бесплатным и этот беслпатный год окупится для компании JetBrains лишь за 12 лет. 12 лет Карл!
Говорят, WebStorm подорожал. Не знаю какие цены были раньше, посмотрел сейчас — они больше чем на PhpStorm. Ещё говорят, что в PhpStorm есть всё тоже самое, что и в WebStorm, если поставить пару дополнительных плагинов вручную. Так что господа джаваскриптеры, переходите на PhpStorm. И вообще, забейте на этот ваш NodeJs, пишите на PHP!
UPDATE: я плохо смотрел цены, на самом деле WebStorm дешевле чем PhpStorm.
В заключение этой темы приложу ссылку на 14-й выпуск подкаста CTOCast — в гостях Михаил Винк из JetBrains уходит от ответов на каверзные вопросы.
Третий скандал по списку, но не по значению — это новый Кинопоиск! Единственное, что здесь можно отметить в рамках подкаста Пятиминутки, так это то, что старый-добрый ламповый кинопоиск был написан на PHP 😉
Объявлена дата выпуска финальной версии Drupal 8: 19 ноября 2015 года. Официальная вечеринка по этому поводу пройдёт в тот же день прямо на конференции PHP World 2015 в Вашингтоне. Напомню, что Drupal 8 разрабатывался несколько лет и он основан на компонентах Symfony 2. По сути CMS была написана практически заново. Решительный шаг, достойный уважения, но есть и обратная сторона медали. Во-первых, за время разработки новой революционной версии CMS медленно теряла долю рынка, а конкуренты, например, WordPress, не стояли на месте и развивали свои продукты эволюционно. Во-вторых, Drupal комьюнити теперь окажется расколотым. Для многих будет не так-то просто отказаться от многолетних наработок и инвестиций в экосистему классических версий Drupal 6 и Drupal 7. Это мне чем-то напоминает историю с Python 2 и Python 3.
Но есть и полезный выхлоп для всех нас: при тестировании Drupal 8 под PHP 7, в последнем был найден баг в сборщике мусора.
Кстати, между делом, меня тут просили упомянуть про русскоязычное Drupal сообщество. Присоединяйтесь по адресу dru.io
Сообщества — это вообще хорошо, всегда поддерживаю! Пишите, если у вас есть интересный проект или сообщество, расскажу в подкасте.
Из находок на GitHub: DiDOM — свежая, простая и быстрая библиотека для парсинга HTML. Для поиска элементов в документе можно использовать CSS селекторы и XPath выражения. В документации есть сравнение с другими парсерами по производительности и по потреблению памяти: Symfony DomCrawler, Zend Dom, Simple HTML DOM и Nokogiri — по скорости DiDOM обыгрывает всех, а по памяти он на втором месте после Nokogiri. Требует PHP 5.4.
Раз уж заговорили про парсинг страниц, порекомендую одну свежую статью на эту тему. Что мне понравилось в статье, так это обработка ссылок в функциональном стиле: filter, map, filter, each. https://murze.be/2015/11/building-a-crawler-in-php/
Ещё одна статья достойная внимания: как разогнать Symfony приложение от 280 до 1770 рапросов в секунду, заменив PHP-FPM на PHPFastCGI. Фишка в том, что в отличии от PHP-FPM, который держит запущенным лишь процесс интерпретатора, PHPFastCGI демонизирует всё ваше приложение. Непосредственно для Symfony уже написан специальный бандл. Но можно и по старинке без фреймворков с помощью небольшой обёртки вокруг вашего PHP кода.
http://phpfastcgi.github.io/general/2015/11/04/introducing-phpfastcgi.html
https://github.com/PHPFastCGI/FastCGIDaemon
Под конец, продолжая тему оптимизации, расскажу вам идею, которая пришла мне в голову на днях. PHP — это рекурсивный акроним: PHP Hypertext Preprocessor. Нужно его поменять и сделать так: Preprocessor of Hypertext PHP — теперь рекурсия стала хвостовой и можно оптимизировать!
Источник: 5minphp.ru