Архитектура сложных веб-приложений. С примерами на Laravel

Недавно я прочитал книгу «Архитектура сложных веб-приложений. С примерами на Laravel», автор Adel Faizrakhmanov. Эта книга не пособие. Много шаблонов описаны поверхностно, с целью просто познакомить читателя с ними. Более подробное описание можно найти по ссылкам в конце. Книга читается легко и с интересном, никакой воды, наоборот, иногда хочется продолжения и углубления в тему, больше …

Подробнее

Оптимизация ORDER BY RAND()

Обложка к записи Оптимизация ORDER BY RAND()

Как выбрать случайную запись из таблицы в MySQL? Во всех учебниках и мануалах случайную запись выбирают так: SELECT id FROM files ORDER BY rand() LIMIT 1; Но такие запросы работают очень медленно. Посмотрим на EXPLAIN: EXPLAIN SELECT id FROM files ORDER BY rand() LIMIT 1; Увидим, что MySQL создает временную таблицу и использует сортировку всех данных. …

Подробнее

Find My Blocks: плагин для WordPress, показывающий, какие блоки используются на сайте

Как узнать, какие блоки используются на WordPress-сайте? Не так давно я столкнулся с твитом, в котором как раз поднимался данный вопрос. И этот вопрос может стать достаточно популярным, если учесть, что многие люди ведут свои блоги или используют WordPress в качестве CMS. При просмотре контента в редакторе не сразу видно, какие блоки в данный момент …

Подробнее

Вышел Gutenberg 8.0: объединена вставка блоков и паттернов, обновлен редактор кода

Вчера команда разработчиков плагина Gutenberg выпустила обновленную версию своего плагина. Релиз 8.0 включает в себя некоторые интересные пользовательские нововведения, в том числе объединенный инструмент вставки блоков и паттернов, новые опции встроенного форматирования, а также визуальные изменения в редакторе кода. Релиз вобрал в себя более двух десятков баг-фиксов, а также несколько дополнительных улучшений. Дизайнеры проекта обновили …

Подробнее

Как правильно перенести сайт на WordPress?

Обложка к записи Как правильно перенести сайт на WordPress?

При переносе WordPress сайта с локального компьютера на сервер (или наоборот) сайт перестает работать. Аналогичная проблема возникает и при смене домена, по которому сайт доступен. Содержание Скрыть 1. Первая причина 2. Вторая причина 3. Третья причина 4. Как правильно переносить сайт? 4.1. Database Search and Replace 4.2. WP Migrate DB 4.3. WP-CLI 4.4. Duplicator 5. …

Подробнее

Вышел WordPress 5.4.1, исправляющий 7 ошибок безопасности и несколько багов

Сегодня вышел WordPress 5.4.1, технический релиз, включающий в себя исправления безопасности. Он решает 7 проблем, которые были ответственно раскрыты команде разработчиков WordPress. Разработчики также внесли несколько исправлений, связанных с кодом версии 5.4, и перенесли баг-фиксы в редактор блоков плагина Gutenberg. Пользователи с включенными автообновлениями должны были уже получить новую версию. Остальным пользователям рекомендуется обновить WordPress …

Подробнее

Установка Fish Shell в Ubuntu

Fish shell — это умная, интерактивная оболочка командной строки для Linux и MacOS с подсветкой синтаксиса и автодополнением набираемых команд. Возможности Автодополнение команд из истории Приятная цветовая поддержка и раскраска команд Настройка через веб-страницу Вменяемый и простой синтаксис сценариев Подсказки по командам из страниц помощи Демо Перед установкой возможно попробовать работу оболочки fish shell на …

Подробнее

PHP Russia Online и другие Online конференции Олега Бунина

Пятиминутка PHP · PHP Russia Online и другие Online конференции Олега Бунина В этот период, когда массовые мероприятия запрещены, IT конференции переходят в Online формат. Как выглядят Online конференции и как они будут выглядеть в будущем? Обсуждаем с Олегом Буниным, организатором многих IT конференций в России, включая такие известные ежегодные события, как HighLoad++, РИТ++ и …

Подробнее

Создатели Gutenberg Hub запустили конструктор шаблонов блоков

Владельцы Gutenberg Hub выпустили первую версию своего конструктора шаблона блоков на прошлой неделе. Конструктор шаблонов позволяет использовать любой из 200+ шаблонов, содержащихся в библиотеке. По сути это онлайн-конструктор, который дает возможность пользователям создавать макеты страниц сайта. Впоследствии пользователи могут опубликовать полученный результат путем копирования и вставки в свой редактор. «Я хочу ускорить процесс создания красивых …

Подробнее

Вызов защищенных и приватных методов

Если вам понадобился данный трюк то скорее всего вы имеете проблему в архитектуре вашего класса/приложения. Его использование это крайняя мера. Лучше всего тестировать приватные свойства и методы через публичные методы. Использование данного трюка оправдано в случае экономии времени и при полном понимании зачем вы это делаете. Пример тестируемого класса: class Duck { private function idea( …

Подробнее

Подмена защищенных и приватных свойств для тестирования

Иногда в тестах нам нужно заменить protected или private свойство объекта, чтобы ускорить тест или более качественно протестировать объект. Пример тестируемого класса: class Suit { private $private_property = ‘private property’; public function method(): string { return $this->private_property; } } Чтобы заменить свойство $private_property на другое нам поможет ReflectionProperty: use PHPUnitFrameworkTestCase; use ReflectionProperty; class Test_Suit extends …

Подробнее

Тестирование объектов с извращениями в конструкторе

Иногда разработчики добавляют в конструктор какие-то нежелательные эффекты, вызовы различных методов или зависимости с другими объектами. Например: class Duck { public function __construct() { $this->life = new Life(); } public function say() { echo ‘quack’ . PHP_EOL; } } Для того, чтобы протестировать метод say() нам нужно как-то замокать new Life с помощью заглушек для …

Подробнее