ES6, also known as ECMAScript 2015, is a significant update to the language, and the first update to the language after ES5 was standardized in 2009.

In this series of posts, I will try to cover the main changes that have been introduced in ES6.

Code editor keyboard shortcuts can save you a lot of time. They can replace several operations with just one.

So a programmer who actively uses keyboard shortcuts will surpass the speed of writing code for a programmer that does not use shortcuts if they are equal in level of knowledge. In this post, I’d like to share my top 10 favorite keyboard shortcuts from the JetBrains editors.

Why JetBrains IDE?

In a single HTML document possible that some CSS rules will conflict with one another. CSS uses a mechanism called the cascade to resolve any such conflicts.

Before describing how the cascade works, we need to consider two of its main components — specificity and inheritance.


CSS selector is the part of a CSS rule set that actually selects the content you want to style. Let’s look at all the different kinds of selectors

Universal Selector

Universal selector selects all the elements on a webpage.


* {
margin: 0;
padding: 0;

Element Selector

Also referred to simply as a “type selector”, this selector must match one or more HTML elements of the same name.


p {
font-family: arial, helvetica, sans-serif;

Id Selector

An ID selector is declared using a hash, or pound symbol (#) preceding a string of characters. The stringof characters is defined bythe developer. …


Last week I needed to implement authorization via SAML

Security Assertion Markup Language (SAML) is an open standard for exchanging authentication and authorization data between parties, in particular, between an identity provider and a service provider. SAML is an XML-based markup language for security assertions (statements that service providers use to make access-control decisions).

The project I’m working on is written in PHP, so the choice of a library for saml is obvious, it’s simplesamlphp. In the process of working on the task, a couple of unpleasant problems arose related to simplesamlphp. Today I would like to tell about them…

A well-written project is more stable, easier to maintain, more enjoyable to work with. In the following post, we will discuss some best practices that will allow you to take your project to a new level.

Best Practices

Deliver Working Software

Pair programming is a development technique in which two programmers work on a specific problem together.

Test-driven development improves code design and quality.

Work Together

Scrum meetings are short meetings used to plan, review, and increase accountability and clarity across a team.

Retrospectives are periods for reflection at the end of each sprint.

Pair programming


After the client requests to connect to the database, the client will be prompted to enter the user password. If the client does not enter the password, the database server will disconnect after a timeout period.

In other words, before the server actively disconnects, the connection needs to occupy a slot, which is one of max_connection.

authentication_timeout (integer)

Maximum time to complete client authentication, in seconds.

If a would-be client has not completed the authentication protocol in this much time, the server closes the connection.

This prevents hung clients from occupying a connection indefinitely.

The default is one minute…

There are several types of indexes in PostgreSQL. Beginners or those who have little to do with the databases use the index that PostgreSQL creates by default (B-tree) or do not create them at all. It is necessary to know what indexes are used in which situations to speed up the execution of queries. In this post, I will try to examine this briefly and simply, without going into details of the internal structure of indexes.

PostgreSQL Indexes:

  • Hash
  • B-tree
  • GiST
  • SP-GiST
  • GIN
  • RUM
  • BRIN
  • Bloom


The hash index stores the hash value of the indexed field VALUE, and only…

In a previous post, we looked at principles to avoid when writing code. You can read it here. In this post, we will look at SOLID design principles, programming standards that all developers must understand well to create good architecture.

SOLID is a mnemonic acronym for:

  • Single Responsibility
  • Open-closed
  • Liskov Substitution
  • Interface Segregation
  • Dependency Inversion

Single Responsibility

  • Each object should be assigned one single responsibility.
  • A specific class should solve a specific problem.

STUPID example

class Order
public function calculateTotalSum() {...}
public function getItems() {...}
public function getItemCount() {...}
public function addItem()…

If you want to write understandable, flexible and maintainable code, you need to know how bad code looks like first. In this post, I will discuss bad practices that should be avoided when writing code.

STUPID is a mnemonic acronym for:

  • Singleton
  • Tight Coupling
  • Untestability
  • Premature Optimization
  • Indescriptive Naming
  • Duplication


  • Programs that use global state are very difficult to test;
  • Programs that depend on global status hide their dependencies.
  • Often you can replace using a singleton with something better.
  • Avoiding everything static is very important to prevent strong coupling.

Tight Coupling

  • Tight coupling is a generalization of the singleton problem.
  • Coupling is…

Marat Badykov

I created this blog for sharing my thoughts about programming, software engineering and other cool stuff.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store