PostgreSQL 11: Π­Π²ΠΎΠ»ΡŽΡ†ΠΈΡ сСкционирования ΠΎΡ‚ Postgres 9.6 Π΄ΠΎ Postgres 11

ΠžΡ‚Π»ΠΈΡ‡Π½ΠΎΠΉ всСм пятницы! ВсС мСньшС Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ остаСтся Π΄ΠΎ запуска курса «РСляционныС Π‘Π£Π‘Π”Β», поэтому сСгодня дСлимся ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΎΠΌ Π΅Ρ‰Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ³ΠΎ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π° ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅.

Π’ процСссС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ PostgreSQL 11 Π±Ρ‹Π»Π° ΠΏΡ€ΠΎΠ΄Π΅Π»Π°Π½Π° Π²ΠΏΠ΅Ρ‡Π°Ρ‚Π»ΡΡŽΡ‰Π°Ρ Ρ€Π°Π±ΠΎΡ‚Π° ΠΏΠΎ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡŽ сСкционирования Ρ‚Π°Π±Π»ΠΈΡ†. Π‘Π΅ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚Π°Π±Π»ΠΈΡ† β€” это функция, которая сущСствовала Π² PostgreSQL достаточно Π΄ΠΎΠ»Π³ΠΎΠ΅ врСмя, Π½ΠΎ Π΅Π΅, Ссли ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π°ΠΊ Π²Ρ‹Ρ€Π°Π·ΠΈΡ‚ΡŒΡΡ, ΠΏΠΎ сути Π½Π΅ Π±Ρ‹Π»ΠΎ Π΄ΠΎ 10 вСрсии, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠ½Π° стала вСсьма ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ. Π Π°Π½Π΅Π΅ ΠΌΡ‹ заявляли, Ρ‡Ρ‚ΠΎ наслСдованиС Ρ‚Π°Π±Π»ΠΈΡ† β€” это наша рСализация сСкционирования, ΠΈ это ΠΏΡ€Π°Π²Π΄Π°. Волько этот способ заставлял вас Π΄Π΅Π»Π°Ρ‚ΡŒ Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ. НапримСр, Ссли Π²Ρ‹ Ρ…ΠΎΡ‚Π΅Π»ΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠΈ Π²ΡΡ‚Π°Π²Π»ΡΠ»ΠΈΡΡŒ Π² сСкции Π²ΠΎ врСмя INSERTΠΎΠ², Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Π»ΠΈ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€Ρ‹ Π΄Π΅Π»Π°Ρ‚ΡŒ это Π·Π° вас. Π‘Π΅ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ наслСдования Π±Ρ‹Π»ΠΎ ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹ΠΌ ΠΈ слоТным, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠΎΠ²Π΅Ρ€Ρ… Π½Π΅Π³ΠΎ.

Π’ PostgreSQL 10 ΠΌΡ‹ ΡƒΠ²ΠΈΠ΄Π΅Π»ΠΈ Ρ€ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ Β«Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ сСкционирования» β€” Ρ„ΠΈΡ‡ΠΈ, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½ΠΎΠΉ для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ Π½Π΅Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΠΌΡ‹ ΠΏΡ€ΠΈ использовании старого ΠΌΠ΅Ρ‚ΠΎΠ΄Π° с наслСдованиСм. Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π»ΠΎ ΠΊ появлСнию Π³ΠΎΡ€Π°Π·Π΄ΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΌΠΎΡ‰Π½ΠΎΠ³ΠΎ инструмСнта, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅Π³ΠΎ Π½Π°ΠΌ Ρ€Π°Π·Π΄Π΅Π»ΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΠΈ!

Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ Ρ„ΠΈΡ‡

Π’ PostgreSQL 11 появился Π²ΠΏΠ΅Ρ‡Π°Ρ‚Π»ΡΡŽΡ‰ΠΈΠΉ Π½Π°Π±ΠΎΡ€ Π½ΠΎΠ²Ρ‹Ρ… Ρ„ΠΈΡ‡, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ сСкционированныС Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½Ρ‹ΠΌΠΈ для ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

PostgreSQL 11: Π­Π²ΠΎΠ»ΡŽΡ†ΠΈΡ сСкционирования ΠΎΡ‚ Postgres 9.6 Π΄ΠΎ Postgres 11
PostgreSQL 11: Π­Π²ΠΎΠ»ΡŽΡ†ΠΈΡ сСкционирования ΠΎΡ‚ Postgres 9.6 Π΄ΠΎ Postgres 11
PostgreSQL 11: Π­Π²ΠΎΠ»ΡŽΡ†ΠΈΡ сСкционирования ΠΎΡ‚ Postgres 9.6 Π΄ΠΎ Postgres 11
1. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ
2. ДобавляСт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡƒΠ·Π»Ρ‹
3. Волько для сСкционированной Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, ΡΡΡ‹Π»Π°ΡŽΡ‰Π΅ΠΉΡΡ Π½Π° Π½Π΅ΡΠ΅ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ
4. Π˜Π½Π΄Π΅ΠΊΡΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ всС ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ столбцы сСкции
5. ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π½Π° ΡΠ΅ΠΊΡ†ΠΈΡŽ с ΠΎΠ±Π΅ΠΈΡ… сторон Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΠ²ΠΏΠ°Π΄Π°Ρ‚ΡŒ

ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ

Π—Π΄Π΅ΡΡŒ Ρƒ нас Ρ‚Π°ΠΊΠΆΠ΅ Π΅ΡΡ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠ΅ новости! Π”ΠΎΠ±Π°Π²Π»Π΅Π½ Π½ΠΎΠ²Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ удалСния сСкций. Π­Ρ‚ΠΎΡ‚ Π½ΠΎΠ²Ρ‹ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ подходящиС сСкции, просматривая условиС запроса WHERE. ΠŸΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ, Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, провСрял ΠΊΠ°ΠΆΠ΄ΡƒΡŽ ΡΠ΅ΠΊΡ†ΠΈΡŽ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, ΠΌΠΎΠΆΠ΅Ρ‚ Π»ΠΈ ΠΎΠ½Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ WHERE. Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΠ»ΠΎ ΠΊ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΌΡƒ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΡŽ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ планирования ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ роста количСства сСкций.

Π’ 9.6, с сСкционированиСм с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ наслСдования, ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΡ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅ΠΉ Π² сСкции ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΠ»Π°ΡΡŒ ΠΏΡƒΡ‚Π΅ΠΌ написания Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, которая содСрТала ΡΠ΅Ρ€ΠΈΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² IF для вставки ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ° Π² ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΡƒΡŽ ΡΠ΅ΠΊΡ†ΠΈΡŽ. Π­Ρ‚ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹ΠΌΠΈ ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ. Π‘ Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΌ сСкционированиСм, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½Ρ‹ΠΌ Π² 10 вСрсии, это стало Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ быстрСС.

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΡΠ΅ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ со 100 сСкциями, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΡ†Π΅Π½ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ 10 ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠ² строк Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ ΠΈΠ· 1 столбца BIGINT ΠΈ 5 столбцов INT.

PostgreSQL 11: Π­Π²ΠΎΠ»ΡŽΡ†ΠΈΡ сСкционирования ΠΎΡ‚ Postgres 9.6 Π΄ΠΎ Postgres 11

ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ запроса ΠΊ этой Ρ‚Π°Π±Π»ΠΈΡ†Π΅ для поиска ΠΎΠ΄Π½ΠΎΠΉ индСксированной записи ΠΈ выполнСния DML для манипулирования ΠΎΠ΄Π½ΠΎΠΉ записью (ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ 1 процСссор):

PostgreSQL 11: Π­Π²ΠΎΠ»ΡŽΡ†ΠΈΡ сСкционирования ΠΎΡ‚ Postgres 9.6 Π΄ΠΎ Postgres 11

Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ возросла послС PG 9.6. Запросы SELECT выглядят Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π»ΡƒΡ‡ΡˆΠ΅, особСнно Ρ‚Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ способны ΠΈΡΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ мноТСство сСкций Π²ΠΎ врСмя планирования запросов. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Π» Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ€Π°Π½ΡŒΡˆΠ΅. НапримСр, большС Π½Π΅ строятся ΠΏΡƒΡ‚ΠΈ для Π½Π΅Π½ΡƒΠΆΠ½Ρ‹Ρ… сСкций.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π‘Π΅ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚Π°Π±Π»ΠΈΡ† Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒΡΡ ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠΎΡ‰Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ Π² PostgreSQL. Оно позволяСт быстро Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π² online ΠΈ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΈΡ… Π² offline, Π½Π΅ доТидаясь Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹Ρ… массивных ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ DML. Π­Ρ‚ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ связанныС Π΄Π°Π½Π½Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ вмСстС, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΊ Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹ΠΌ Π΄Π°Π½Π½Ρ‹ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ Π³ΠΎΡ€Π°Π·Π΄ΠΎ эффСктивнСС. Π£Π»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ, сдСланныС Π² этой вСрсии, Π±Ρ‹Π»ΠΈ Π±Ρ‹ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ Π±Π΅Π· Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², Ρ€Π΅Π²ΡŒΡŽΠ΅Ρ€ΠΎΠ² ΠΈ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‚Π΅Ρ€ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ нСустанно Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ Π½Π°Π΄ всСми этими Ρ„ΠΈΡ‡Π°ΠΌΠΈ.
Бпасибо ΠΈΠΌ всСм! PostgreSQL 11 выглядит просто фантастичСски!

Π’ΠΎΡ‚ такая ΠΊΠΎΡ€ΠΎΡ‚Π΅Π½ΡŒΠΊΠ°Ρ, Π½ΠΎ довольно интСрСсная ΡΡ‚Π°Ρ‚ΡŒΡ. Π”Π΅Π»ΠΈΡ‚Π΅ΡΡŒ коммСнтариями, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π½Π΅ Π·Π°Π±Ρ‹Π²Π°ΠΉΡ‚Π΅ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒΡΡ Π½Π° дСнь ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ… Π΄Π²Π΅Ρ€Π΅ΠΉ, Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ ΠΈΠ·Π»ΠΎΠΆΠ΅Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° курса.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ