Микро-толки — дайджест #9

Неделю назад прошел еще один micro-talk по PHP. На этот раз не было модных новостей по фронтенду, а поскольку в PHP не всё так динамично, то темы были давние.

Начинаем с общей темы. Уже, наверное год, как Google зафорсил https на .dev доменах, но стоит еще раз об этом напомнить. Для этого можно почитать статью Chrome & Firefox now force .dev domains to HTTPS via preloaded HSTS. И как описано в статье, в окружении для разработки лучше использовать домены .test — они лучше всего для этого подходят.

А теперь переходим к PHP...

Микро-толки — дайджест #8

В этом микро-толке мы затронули довольно много тем. Было обсуждение и MySQL, и неочевидного поведения PHP, и "трюков" javascript. А началась наша встреча с понятия, которое сейчас очень сильно хайпится — Serverless.

Serverless архитектура имеет 2 основных определения:

  1. Backend as a Service или приложения, которые полностью или в значительной мере зависят от сторонних вендоров для реализации логики бекенда или хранения состояния приложения. Это определение было популярно до 2015 года.
  2. С выходом AWS Lambda в 2014-2015 годах стало популярно определение Function as a Service — такая архитектура приложения, при которой часть серверной логики выполняется в вычислительных контейнерах без состояния.

Довольно хороший обзор Serverless архитектуры дается в статье "Serverless Architectures". Кроме того в рамках второго определения становится очень популярным Serverless Framework.

Микро-толки — дайджест #7

На прошлой неделе провели, пожалуй, последний micro-talk в этом году. Хоть он был и небольшой, всё никак не мог собраться и зафиксировать дайджест. И вот он готов.

Микро-толки — дайджест #6

Начало зимы, пятница, релиз PHP 7.2 — целая гора поводов, чтобы провести новый микро-толк!

Обсудили несколько интересных инструментов, некоторые хитрости при написании кода на PHP,  а также вкратце проговорили основные новые фичи PHP 7.2.

Микро-толки — дайджест #5

Барабанная дробь... И новый PHP micro-talks состоялся! В этот раз побольше новостей и статей на тему PHP.

Микро-толки — дайджест #4

Состоялся новый микро-толк.

  1. Если кто-то встречался с тем, что во время деплоя при переключении релизов код не обновлялся, то вот интересная статья, которое объясняет, что же на самом деле происходит: Is it all PHP OPCache's fault?
  2. Memory leaks in Javascript — презентация от @xufocoder. В принципе, полезна не только фронтендерам, ибо рассказывает о различных подходах к сборке мусора.
  3. Как ускорить загрузку сайтов в эпоху смартфонов — видео с конференции Frontend MIX. Обозревает несколько современных подходов к оптимизации скорости загрузки.
  4. Видео о том, откуда и как возникают завалы "На потом" и что с этим можно поделать. Вообще советую изучить контент Макса Дорофеева. У него много интересного на тему управления временем, планирования и личной эффективности.

Микро-толки — дайджест #3

Новый дайджест микро-толков. В этот раз хорошо подготовиться не получилось. Тем не менее всё-равно пообщались на полезные темы.

Микро-толки — дайджест #2

Прошел еще один PHP micro-talks. Регламент был следующий:

  1. Основная тема - качество кода.
  2. Второстепенная тема - Ижевский PHP meetup #3.
  3. И еще несколько новостей за последнюю неделю.

Микро-толки — дайджест #1

Данная статья представляет собой дайджест тем, которые обсуждались в рамках PHP micro-talks #1 с коллегами.

Вкратце о регламенте:

  • 15 минут
  • 7 ссылок IT-тематики
  • 1 ссылка общей тематики

Как делать деплой на PHP

Недавно подготовил презентацию на тему деплоймента php-приложений. Сделал обзор основных проблем при делое, а также обзор способов их решение и инструментов, которые можно использовать для деплоя, благо PHP идет по следам Ruby и появляются различниые инструменты для этого, такие как Rocketeer.

С моей презентацией можно познакомиться перейдя по этой ссылке (навигация идет не только влево-вправо, но и вверх-вниз).

Простой XML-RPC клиент на PHP

Однажды мне потребовалось выполнить несколько XML-RPC запросов, и я столкнулся с недостатком клиентов с простой и работающей реализацией данного механизма.

Я перепробовал различные библиотеки, но они оказались слишком сложными. Например, реализация XML-RPC из репозитория PEAR довольно сложна в установке на Windows, а на линуксовом шаред-хостинге ее не всегда возможно установить. XML-RPC на sourceforge имеет некоторые проблемы с кодировкой UTF-8. Так что я быстро создал свою простейшую реализацию XML-RPC клиента.

Реализация фильтрации по тегам в Yii и не только

Теггирование различных элементов очень часто встречается в разработке сайтов. Сами теги реализуются просто — это отдельная таблица с названиями тегов и таблица связки многие-ко-многим между тегами и какими-то сущностями. Однако реализация фильтрации по тегам — не такая уж простая задача. Фильтровать сущности по тегам как правило приходится одним из следующих вариантов:

  • выбрать все элементы без тегов
  • выбрать элементы, имеющие все указанные теги (и возможно, другие теги)
  • выбрать элементы, имеющие один или несколько из указанных тегов (и возможно, другие теги)

Рассмотрим каждый из этих случаев и приведем пример конкретной реализации фильтрации на Yii.

Передача параметров из контроллера в javascript-файлы

Javascript во вьюхах — часто ли вы встречаете такое?
Зачастую во вьюху из 3-5 строчек html-кода вставляются портянки яваскрипта на сотни строк.
На просьбу вынести этот код в отдельный js файл — можно услышать ответ, что в коде используются php-переменные из контроллера и, поэтому, вынести этот код из в отдельный js-файл не представляется возможным.

А в общем-то это довольно просто сделать. Просто и удобно.

Далее речь пойдет о реализации для фреймворка Yii, однако аналогичный подход легко реализуем и в других фреймворках.

Magento: проблемы с var_dump и print_r

Сталкивались ли вы когда-нибудь с тем, что при выводе объекта на экран при помощи var_dump или print_r вы получали пустую страницу?

При выводе некоторых объектов PHP просто не хватает памяти (потому что объекты рекурсивны).

В таком случае в Magento у всех объектов, наследуемых от Varien_Object (а это практически все объекты), существует специальный метод debug(). Он позволяет избавиться от рекурсии.

Чтобы вывести дамп объекта в magento используйте следующую конструкцию: var_dump($product->debug());