-
Articles
-
Using Acquia CLI instead of BLT for deployment to Acquia Cloud
If you have worked with Acquia Cloud, then you know that Acquia offered BLT as the main tool for website deployment. As time goes on, Acquia has announced that it will no longer support this tool. Therefore, the question arose - how to deploy to Acquia Cloud without using BLT?...
-
About cache in Drupal 10
Drupal provides wide and convenient options for posting content on the site. Unfortunately, this comes at the cost of performance degradation. We don’t really need to render the content on every request - we can store it in the cache and retrieve it when needed. Drupal begins rendering the page...
-
Alternatives of hook system in Drupal 10
A system of hooks was implemented in Drupal to change the behavior of the code. It implements the “Mediator” design pattern in procedural programming and provides a single interface for communication of different parts of the system. Time does not stand still and the procedural approach in Drupal versions up...
-
Features of using the service container in tests in Drupal 9
As you noticed services are called through $this->container->get() or \Drupal::service() in Kernel and Functional tests. On the first glance it doesn’t matter - we receive a service in any case and tests work, but there are nuances. Let’s figure it out. Kernel tests The service container is available through the...
-
Using of class resolver for dependency injection in Drupal 9
Let’s consider the case: there is a little class that is used in the module locally (for example in a hook) that uses service. class DemoClass { protected $languageManager; public function __construct(LanguageManagerInterface $languageManager) { $this->languageManager = $languageManager; } public function foo() {} } How can we use this class since...
-
Never use patches based on merge/pull requests
There is a great feature that can be used after Drupal code migration into GitLab infrastructure - merge requests. It is more convenient than the old method when patches had to be created and uploaded on drupal.org to the task for a review. Everyone who already worked on GitHub with...
-
Design patterns in Drupal 9
Drupal developers work with design patterns rarely because they mainly work in the formed environment. We use patterns every day, but we don’t even think about it. When you know design patterns you can simplify your communication with colleges - you can just tell the name of the pattern and...
-
Standards in Drupal projects
It’s important to define standards that will be used on the Drupal project prior to the start of the project especially if the project is big. Thus everyone involved in the project will understand which rules should be respected during development and maintenance of the project. It’s required for: Simplify...
-
In memory database MemSQL. When and how to use with Drupal. Presentation from DrupalCamp London 2020
Video from the speech “In memory database MemSQL. When and how to use with Drupal” from DrupalCamp London 2020.
Full text version also available in articles:
Overview of MemSQL;
MySQL and MemSQL performance comparison;
Integration MemSQL and Drupal.
-
Integration MemSQL and Drupal.
If you don’t know what DBMS MemSQL is you can read the article with MemSQL overview. Difference in performance with MySQL and for what applications MemSQL is suitable is described in the “MySQL and MemSQL performance comparison.”. In this article I describe how to integrate MemSQL with Drupal. MemSQL installation...
-
MySQL and MemSQL performance comparison.
Recently I’ve reviewed DBMS MemSQL, that can store data by row and by column. MemSQL creators say that their solution works super fast. It was interesting to check it and comprehend how fast it is in comparison with MySQL (it was chosen because I use MySQL everyday) and what the...
-
Overview of MemSQL
What do we optimise first of all when we are talking about performance? That part that works with data storage. We can use key-value storage in RAM (Memcache or Redis) for some data but main data we keep in SQL database. Time of receiving data from memory is less than...
-
Performance of Views in Drupal 8
Module Views is one of the most popular modules on the Drupal sites. I think it is enabled on all sites built on Drupal. In this article I would like to describe issues with performance of Views that I’ve faced using this module and ways for optimisation. Problem of showing...
-
Antibot vs Honeypot. What spam protector to prefer in Drupal
If there are forms for anonymous users on your site then sooner or later you will think about how to protect them against bots. It is tiringly to remove spam comments or irrelevant webform submissions manually. You can force people to solve tasks provided by Captcha module. It works well...
-
Acquia Cloud Site Factory post site clone hook
We have faced with interesting issue during our work on the site factory on the Drupal 8 based on Acquia Cloud Site Factory (ACSF) platform. There is a feature in ACSF that allows you to duplicate existing site and create a new one with the same content but with another...
-
Analyze of event system in Drupal 8
How events are used There are few ways to extend standard behaviour of scripts in Drupal 8: hooks; service redefinition through ServiceProviderBase; redefinition of plugin classes using hooks; events and event subscribers. Events came to Drupal 8 from Symfony’s component EventDispatcher, which implements pattern Mediator. The main idea of this...
-
Drupal certification from Acquia
Program of certification from Acquia is an attempt to determine standards of knowledge and experience of working with Drupal. Based on passed exams by developer, employers can understand his level. Clients can be sure that they work with professionals. Computer programmers can compare own level with level of colleagues. And...
-
High performance caching of Drupal 8 using reverse proxy and CDN
As you may already know - it isn’t necessary to pass all client’s request directly to Drupal. Content can be cached and be returned by proxy servers (for example Varnish) or by CDN servers (CloudFront, CloudFlare etc.). Even Nginx can be configured to return cached requests independently. Such practice allows...
-
Git repository maintenance
GIT repository size is increased during project lifetime due to it stores all files modifications. At some moment we realise that repository weights too much and it’s complicated to work with it. In this case it is proper time for GIT repository maintenance. Repository preparation For the beginning let’s download...
-
Choosing Drupal 8 boilerplate
When a new project is started we always think what should we take as a base. If we are talking about Drupal development then many people can advise to take just Drupal. I would agree with this proposal if it is a small project where only one person is involved....
-
Drupal 8 security vulnerabilities and ways to fix them
Drupal site, as every complicated system, can have security vulnerabilities. It is important to know about them and be able to fix them to build secure information systems. I want to review in this article most frequent vulnerabilities and ways to prevent them. Cross site scripting (XSS) This vulnerability lies...
-
When you should send mails through a queue in Drupal
Let’s understand how site sends mails in the beginning. There are two main ways to send mails: Using PHP function mail(). This function puts your mail to sendmail that sends mails to the recipients. Using remote SMTP server. Usually, after the user clicks on the submit button, the PHP script...
-
Component based approach in Drupal 8 theming
Video and presentation of my speech “Component based approach in Drupal 8 theming” from the DrupalCamp Belarus 2019.
-
How to avoid the theft of personal data, and content in development process in Drupal
Workshop how to use DB Sanitizer module from the presentation
“How to avoid the theft of personal data, and content in development process in Drupal” on the Drupal Camp Kyiv 2015.
Slides from presentation:
-
Lazy evaluation and asynchronous data processing in Drupal
My speech from Drupal Camp Moscow 2014 about lazy evaluation in Drupal and using httprl for parallel data processing.
Slides from the presentation: