-
Статьи
-
Используем Acquia CLI вместо BLT для деплоя на Acquia Cloud
Если вы работали с Acquia Cloud, то вы знаете, что Acquia предлагало BLT в качестве основного инструмента для деплоя сайтов. Время идет и Acquia объявило, что не будет больше поддерживать этот инструмент. Поэтому встал вопрос - как деплоить на Acquia Cloud без использования BLT? Для решения этой задачи нам нужно:...
-
Про кеш в Drupal 10
Drupal предоставляет широкие и удобные возможности по размещению контента на сайте. К сожалению, за это приходится платить ухудшением производительности. На самом деле нам не нужно рендерить контент при каждом запросе - мы можем сохранить его в кеш и доставать его оттуда когда потребуется. Drupal в начале начинает рендерить страницу, затем...
-
Альтернативы системе хуков в Drupal 10
Для изменения поведения кода в Drupal была реализована система хуков. По своей сути она является реализацией шаблона проектирования “Посредник” в процедурном программировании и предоставляет единый интерфейс для “общения” разных частей системы. Время не стоит на месте и на смену процедурному подходу в Drupal версиях до 8 пришел объектно-ориентированный. Drupal 8...
-
Особенности использования контейнера сервисов в тестах в Drupal 9
Обращали ли вы внимание, что в Kernel и Functional тестах сервисы вызываются через $this->container->get() или через \Drupal::service()? Казалось бы, что какая разница - мы так и так получаем сервис и тест работает, но есть нюансы. Давайте разберемся. Kernel тесты В Kernel тестах контейнер сервисов доступен через внутреннюю переменную $this->container и...
-
Использование class resolver для внедрения зависимостей в Drupal 9
Давайте разберем такой случай: у нас есть небольшой класс, который используется локально в модуле (например в хуке) в котором мы бы хотели использовать сервисы. class DemoClass { protected $languageManager; public function __construct(LanguageManagerInterface $languageManager) { $this->languageManager = $languageManager; } public function foo() {} } Как мы можем использовать этот класс ведь...
-
Не используйте патчи на основе реквестов из GitHub и GitLab
После миграции кода Drupal в GitLab, появилась отличная возможность создавать “мерж” реквесты для работы над задачами. Это намного более удобно, чем старый способ, когда мы создавали патчи и загружали их на drupal.org в задачу для ревью. Те, кто работал над проектами в GitHub, давно оценили прелесть использования реквестов. В данное...
-
Шаблоны проектирования в Drupal 9
Drupal разработчики редко имеют дело с паттернами проектирования объектов, т.к. в основном им приходится работать в уже сформированной среде. Мы используем шаблоны каждый день, но даже не задумываемся над этим. Имея представление о паттернах вам будет легче общаться с коллегами - достаточно сказать название паттерна и все понимают о чем...
-
Стандарты в Drupal проекте
Перед разработкой Drupal проекта, особенно большого, важно определиться со стандартами, которые будут использоваться на проекте. Таким образом все участвующие в проекте будут понимать каким правилам следовать во время разработки и поддержки проекта. Это нужно чтобы: Облегчить поддержку проекта, т.к. в нем будет легче разобраться. Облегчить вход для новых разработчиков -...
-
База данных MemSQL. Когда и как использовать с Drupal. Презентация с DrupalCamp London 2020
Презентация и слайды доклада “База данных MemSQL. Когда и как использовать с Drupal” с DrupalCamp London 2020.
Полная текстовая версия доступна в статьях:
Обзор MemSQL;
Сравнение производительности MySQL и MemSQL;
Интеграция MemSQL и Drupal.
-
Интеграция MemSQL c Drupal.
Если вы еще не знаете, что из себя представляет СУБД MemSQL, то можете ознакомиться в статье по обзору MemSQL. В чем различие в производительности MemSQL и MySQL вы можете прочитать в статье “Cравнение производительности MySQL и MemSQL”. В этой статье я опишу как интегрировать MemSQL с Drupal. Установка MemSQL Для...
-
Сравнение производительности MySQL и MemSQL.
Недавно я рассмотрел базу данных MemSQL, которая может хранить данные как построчно, так и поколоночно. Создатели MemSQL утверждают, что их решение работает супер быстро. Было интересно проверить это и понять насколько быстро работает MemSQL в сравнении с MySQL, и в чем отличие работы колоночной и построчной систем хранения. Окружение Для...
-
Обзор MemSQL
Что мы оптимизируем в первую очередь когда речь заходит о производительности Drupal? Ту часть, которая работает с хранилищем данных. Мы можем использовать key-value хранилище в ОЗУ (Memcache или Redis) для некоторых данных, но основные данные нам приходится хранить в SQL базе данных. Время получения данных из базы данных, которая находится...
-
Производительность Views в Drupal 8
Модуль Views один из самых популярных модулей на Drupal сайтах. Думаю, он включен практически на всех сайтах построенных на Drupal. В этой статье я бы хотел описать проблемы с производительностью Views с которыми я столкнулся работая с этим модулем в Drupal 8 и способы оптимизации. Проблема вывода большого количества сущностей...
-
Antibot против Honeypot. Какую защиту от ботов выбрать для Drupal
Если у вас на сайте есть формы для анонимных пользователей, то рано или поздно вы задумаетесь о том, как защитить их от ботов. Потому, что очищать комментарии или данные в веб формах от спама довольно утомительное занятие. Вы можете заставлять людей решать задачи используя Captcha модуль. Это работает неплохо, но...
-
Выполняем код после клонирования сайта в Acquia Cloud Site Factory
Работая над фабрикой сайтов на Drupal 8 на платформе Acquia Cloud Site Factory (ACSF) мы столкнулись с интересной проблемой. В ACSF есть возможность сделать копию сайта и, таким образом, получить новый сайт с точно таким же содержимым, но с другим URL. Проблема оказалась в том, что склонированный сайт использовал тот...
-
Разбираем систему событий в Drupal 8
Для чего нам Event Subscriber В Drupal 8 расширить стандартное поведение скриптов можно разными способами: хуки; переопределение сервисов через ServiceProviderBase; переопределение классов плагинов используя хуки; события и подписчики на события. В Drupal 8 события пришли из компонента Symfony EventDispatcher, который реализует архитектурный шаблон Mediator (Посредник). Идея этого шаблона в том,...
-
Drupal сертификации от Acquia
Программа сертификации от Acquia это попытка установить стандарты знаний и опыта работы с Drupal. Работодателям теперь просто понять уровень разработчика зная, какие экзамены по сертификации он прошел. Клиенты могут быть уверены, что они работают с настоящими профессионалами. Программисты могут сравнить свой уровень с уровнем коллег. Ну а Acquia смотрит на...
-
Высокопроизводительное кеширование Drupal 8 с использованием прокси серверов и CDN
Как многие уже знают - не обязательно передавать все клиентские запросы напрямую в Drupal. Контент может быть закеширован и отдан прокси серверами, такими как, например, Varnish, или CDN серверами, например CloudFront, CloudFlare. Даже Nginx может быть настроен таким образом, чтобы отдавать закешированные запросы самостоятельно. Подобная практика позволяет в разы сократить...
-
Обслуживаем GIT репозиторий
В течение жизни проекта размер GIT репозитория постоянно увеличивается т.к. в нем хранятся все изменения файлов. Это приводит к тому, что в один прекрасный момент мы обнаруживаем, что репозиторий весит очень много и с ним становиться неудобно работать. В таком случае самое время провести обслуживание GIT репозитория. Подготавливаем репозиторий Для...
-
Выбираем основу для создания проекта на Drupal 8
Когда начинается новый проект всегда возникает вопрос - что взять за основу для проекта? Если мы говорим о разработке на Drupal, то, конечно, нужно взять просто Drupal подумают многие. Я бы согласился с этим если мы говорим о небольшом сайте, который делает один человек. Если над проектом работает несколько человек...
-
Типы уязвимостей в безопасности Drupal 8 и способы их устранения.
Drupal сайт, как и любая сложная система, может иметь уязвимости в безопасности. Важно знать и уметь устранять их для создания по-настоящему надежных информационных систем. В этой статье я бы хотел рассмотреть наиболее часто встречающиеся уязвимости и способы, как можно предотвратить их. Cross site scripting (XSS) Эта уязвимость заключается в возможности...
-
Когда вам следует отправлять письма через очередь в Drupal
Для начала давайте разберемся, как сайт отправляет письма. Есть два основных способа отправки писем: через PHP функцию mail(). Эта функция отправит ваше письмо в sendmail на сервере, откуда оно уйдет к получателю. используя удаленный SMTP сервер. Обычно, после того, как пользователь нажал на кнопку отправки формы, PHP скрипт соединяется с...
-
Создание темы на основе компонентов в Drupal 8
Видео и презентация доклада “Создание темы на основе компонентов в Drupal 8” с конференции DrupalCamp Belarus 2019.
-
Как избежать кражи персональных данных и контента в процессе разработки на Drupal
Воркшоп как использовать модуль DB Sanitizer с презентации
“Как избежать кражи персональных данных и контента в процессе разработки на Drupal” на Drupal Camp Kyiv 2015.
Слайды с презентации:
-
Отложенные вычисления и ассинхронная обработка данных в Drupal
Мой доклад на конференции Drupal Camp Moscow 2014 о отложенных вычислениях в Drupal и использовании httprl для параллельной обработки данных.
Слайды с презентации