Подписка на блог

LinuxGeek - блог Linux инженера

Расширьте границы знаний о Linux и станьте настоящим гиком

Учимся копировать файл из docker контейнера

Для копирования файла из контейнера Docker можно использовать команду docker cp. Эта команда позволяет копировать файлы между локальной файловой системой и контейнером. Синтаксис команды выглядит следующим образом:

docker cp <container_id>:/путь/к/файлу /локальный/путь

Где:

  •  — идентификатор контейнера, из которого нужно скопировать файл.
  • /путь/к/файлу — путь к файлу внутри контейнера.
  • /локальный/путь — путь на локальной машине, куда будет скопирован файл.

Например, чтобы скопировать файл example.txt из контейнера с идентификатором abc123 в текущий рабочий каталог на локальной машине, можно использовать следующую команду:

docker cp abc123:/путь/к/example.txt

После выполнения этой команды файл example.txt будет скопирован из контейнера в текущий рабочий каталог на локальной машине.

Виртуализация против контейнеризации: 6 ключевых отличий

В современном мире информационных технологий виртуализация и контейнеризация являются двумя основными подходами к развертыванию и управлению приложениями и ресурсами в сетевых окружениях. Оба подхода предоставляют виртуальную среду для работы приложений, но существуют существенные различия, которые необходимо понимать и анализировать при выборе между ними.

1. Архитектура:

  • Виртуализация базируется на гипервизорах, которые могут запускать несколько операционных систем (ОС) на единственном физическом сервере. Каждая ОС работает в отдельной виртуальной машине (ВМ).
  • Контейнеризация, с другой стороны, использует контейнеры, которые работают на уровне операционной системы хоста и разделяют ядро ОС для запуска различных приложений.

2. Изолированность:

  • Виртуальные машины полностью изолированы друг от друга и могут иметь разные конфигурации ОС и приложений.
  • Контейнеры используют общее ядро ОС и разделяют его для работы с приложениями. Они предоставляют более легковесное решение и могут быть запущены быстрее.

3. Расход ресурсов:

  • Виртуальные машины требуют больше ресурсов, так как каждая ВМ имеет свою ОС и свои запущенные процессы.
  • Контейнеры работают с общим ядром ОС и расходуют меньше ресурсов, что делает их более эффективными.

4. Масштабируемость:

  • Виртуализация позволяет гибко масштабировать инфраструктуру, добавляя или удаляя виртуальные машины.
  • Контейнеризация предоставляет более быстрый и быстродействующий механизм масштабирования, поскольку контейнеры могут быть запущены и уничтожены значительно быстрее.

5. Управление:

  • Виртуализация требует централизованного управления гипервизором и ВМ.
  • Контейнеризация облегчает управление с помощью оркестраторов контейнеров, таких как Kubernetes, которые упрощают автоматизацию и управление контейнерами.

6. Поддержка:

  • Виртуализация имеет более широкую поддержку, так как она используется уже много лет и широко распространена.
  • Контейнеризация набирает популярность, но поддержка может быть ограниченной в некоторых случаях.

Выбор между виртуализацией и контейнеризацией зависит от конкретных требований и особенностей вашей инфраструктуры. Оба подхода имеют свои преимущества и недостатки, и правильный выбор может определить эффективность работы ваших приложений и использование ресурсов. Понимание этих шести ключевых отличий поможет принять осознанное решение и использовать подход, который наилучшим образом соответствует вашим потребностям.

Полное руководство по установке Docker compose на системы Debian (deb) и Red Hat (rpm)

Для Debian/Ubuntu (с пакетным менеджером deb):

1. Установите Docker на систему, если еще не установлен, согласно этой статье

2. Загрузите последнюю версию Docker Compose с помощью команды curl:

sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

3. Дайте права на выполнение загруженному файлу:

sudo chmod +x /usr/local/bin/docker-compose

4. Убедитесь, что Docker Compose успешно установлен, проверив версию:

docker-compose --version

Для систем на базе Red Hat, CentOS или Fedora (с пакетным менеджером rpm):

1. Установите Docker на систему, если еще не установлен, согласно этой статье
2. Загрузите последнюю версию Docker Compose с помощью команды curl:

sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

3. Дайте права на выполнение загруженному файлу:

sudo chmod +x /usr/local/bin/docker-compose

4. Убедитесь, что Docker Compose успешно установлен, проверив версию:

docker-compose --version

Теперь у вас должна быть установлена последняя версия Docker Compose на вашей системе с пакетным менеджером deb или rpm. Вы готовы использовать Docker Compose для управления ваших контейнеров!

Полное руководство по установке Docker на системы Debian (deb) и Red Hat (rpm)

Если вы хотите использовать Docker на своей системе Debian или Red Hat, вам потребуется правильно установить его. В этом руководстве я покажу вам пошаговые инструкции по установке Docker на обеих системах.

Для Debian/Ubuntu (с пакетным менеджером deb):

1. Откройте терминал и введите следующие команды, чтобы добавить необходимые репозитории:

sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates
curl software-properties-common
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

2. Обновите список пакетов и установите Docker:

sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

3. Убедитесь, что Docker успешно установлен, выполнив команду:

sudo docker run hello-world

Для систем на базе Red Hat, CentOS или Fedora (с пакетным менеджером rpm):

1. Откройте терминал и введите следующую команду, чтобы добавить необходимый репозиторий:

sudo yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

2. Установите Docker:

sudo yum install docker-ce docker-ce-cli containerd.io

3. Убедитесь, что Docker успешно установлен, выполнив команду:

sudo docker run hello-world

Теперь у вас должна быть установлена последняя версия Docker на вашей системе Debian или Red Hat. Вы готовы начать работу с Docker и создавать контейнеры для ваших проектов. Успехов!

Подстановка команд в bash: простой способ передачи вывода одной команды в другую

В программировании на bash подстановка команд — это передача вывода одной команды для использования в другой. Это звучит сложно? Давайте рассмотрим пример:

# Получение текущей даты с использованием команды date
current_date=$(date)

# Вывод текущей даты
echo "Сегодняшняя дата: $current_date"

В этом примере мы используем команду date и передаем ее вывод в переменную current_date. Затем переменная current_date используется в операторе echo для вывода текущей даты.

Существует два способа подстановки команд в bash: с использованием долларовых скобок $() и обратных кавычек (``).

Использование долларовых скобок $()

Синтаксис:

variable=$(command)

Можно также добавить дополнительный текст для поддержки вывода команды:

variable="Optional text $(command)"

Пример:

echo "Текущий пользователь: $(whoami)"

Также можно присвоить переменной значение и использовать его:

#!/bin/bash

current_user=$(whoami)

echo "Текущий пользователь: $current_user"

Использование обратных кавычек ``

Примечание: Этот метод считается устаревшим и не рекомендуется.

Синтаксис:

variable=`command`

Можно добавить дополнительный текст:

variable="Additional text `date`"

Пример:

#!/bin/bash

result=`echo "5 + 7" | bc`
echo "Результат вычисления: $result"

Множественные подстановки

Можно использовать обратные кавычки для нескольких подстановок:

result=`command1 \`command2\` command3\`

Можно также добавить текст:

result= `command1 \ "Дополнительный текст \`command2\` Еще текст \`command3\`"`

Пример:

result=`echo "Сегодня: \`date\`, результат вычисления: \`echo 5 + 7 | bc\`."`
echo "$result"

Таким образом, подстановка команд в bash — это мощный инструмент для обработки вывода одной команды в другой, что делает автоматизацию и сценарии более эффективными.

Настройка DHCP-сервера с использованием ISC DHCP на Debian

В этой статье мы рассмотрим подробный процесс настройки DHCP-сервера с использованием программного обеспечения Internet Software Consortium (ISC) на операционной системе Debian.

Шаг 1: Обновление пакетов

Перед началом установки и настройки DHCP-сервера рекомендуется обновить индекс пакетов и выполнить обновление существующих пакетов:

sudo apt update
sudo apt upgrade

Шаг 2: Настройка статического IP-адреса

Убедимся, что сервер использует статический IP-адрес, отредактировав файл /etc/dhcpcd.conf:

interface eth0
static ip_address=172.16.151.254/21
static routers=172.16.144.1
static domain_name_servers=1.1.1.1

Шаг 3: Установка и настройка Firewalld

Установим и настроим firewalld:

sudo apt install firewalld

Добавим интерфейс ethernet в зону public и настроим правила файрвола:

sudo firewall-cmd --add-interface eth0 --zone public
sudo firewall-cmd --remove-service=dhcpv6-client --zone public
sudo firewall-cmd --add-service dhcp --zone public
sudo firewall-cmd --runtime-to-permanent

Шаг 4: Установка ISC DHCP-сервера

Установим пакет ISC DHCP-сервера:

sudo apt install isc-dhcp-server

Шаг 5: Настройка файла dhcpd.conf

Создадим файл /etc/dhcp/dhcpd.conf с базовой конфигурацией DHCP-сервера:

# dhcpd.conf
#
# Local network configuration file for ISC dhcpd
#

# This DHCP server is the official DHCP server for the local network
authoritative;

# Common network settings
option routers 172.16.144.1;
option domain-name-servers 1.1.1.1;
option domain-name "octocat.cloud";
default-lease-time 86400;
max-lease-time 604800;

# Configuration for an internal subnet
subnet 172.16.144.0 netmask 255.255.248.0 {
  range 172.16.151.110 172.16.151.120;
}

# Hosts configuration options
host desktop {
  hardware ethernet 1c:69:7a:b7:e5:2c;
  fixed-address 172.16.151.200;
}

Шаг 6: Проверка конфигурации DHCP-сервера

Перед перезапуском DHCP-сервера, удостоверимся, что конфигурационный файл правильный:

sudo dhcpd -t -4 -cf /etc/dhcp/dhcpd.conf

Шаг 7: Запуск DHCP-сервера

Перезапустим DHCP-сервер:

sudo systemctl restart isc-dhcp-server.service

Шаг 8: Проверка статуса DHCP-сервера

Удостоверимся, что DHCP-сервер запущен и будет автоматически запускаться при загрузке:

sudo systemctl status isc-dhcp-server.service
sudo systemctl is-enabled isc-dhcp-server.service

Шаг 9: Настройка журналирования

Создадим файл конфигурации для rsyslog:

sudo tee /etc/rsyslog.d/dhcpd.conf << EOF
# Log messages generated by dhcpd application 
if $programname == 'dhcpd' then /var/log/dhcpd.log
# stop processing it further
& stop
EOF

Перезапустим службу rsyslog:

sudo systemctl restart rsyslog

Шаг 10: Ротация журналов

Настроим ротацию журналов DHCP-сервера:

sudo tee /etc/logrotate.d/dhcpd << EOF
/var/log/dhcpd.log {
  daily
  rotate 7
  missingok
  create 0640 root adm
  postrotate
    /usr/lib/rsyslog/rsyslog-rotate
  endscript
}
EOF

Эти шаги позволят настроить DHCP-сервер с использованием программного обеспечения ISC DHCP на Debian-системе с обновленными пакетами и статическим IP-адресом. Настройки файрвола и журналирования также будут корректно сконфигурированы для обеспечения стабильной работы сервера.

Решение ошибки «Minor» на дисках сервера Huawei: сброс конфигурации RAID контроллера

После успешного монтажа серверов Huawei и начала настройки массива RAID, возникла неприятная ситуация: на некоторых дисках появилась ошибка, помеченная как «Minor».

Для решения этой проблемы потребовалось провести более глубокий анализ, в ходе которой была обнаружена ошибка на дисках: «Clear or import the configuration».

Оказалось, что для устранения данной проблемы необходимо просто сбросить конфигурацию RAID-контроллера. После данной информации на душе стало легче, что ничего серьёзного :)

Ниже представлена пошаговая инструкция о том, как выполнить сброс конфигурации:

  1. Загружаемся в BIOS и переходим в раздел Device Manager
  1. Далее переходим на устройство RAID контроллера.
  1. Находим раздел «View Foreign Configuration» и переходим на него.
  1. Выбираем «Preview Foreign Configuration»
  1. Выбираем «Clear Foreign Configuration»

Смотрим в панели iBMC состояние дисков, как видно на скриншоте, проблема решена.

Настройка клиента ALD Pro на Astra Linux: Пошаговое руководство для успешной интеграции с корпоративным доменом

1. Запустите терминал Fly: «Пуск» → «Системные» → «Терминал Fly»

2. С помощью команды sudo -i авторизуйтесь под учетной записью root

3. C помощью команды vim /etc/apt/sourses.list войти в режим редактирования файла и привести его к виду

4. С помощью команды vim /etc/apt/sourses.list.d/aldpro.list войти в режим редактирования файла и привести его к виду

5. С помощью команды vim /etc/apt/preferences.d/aldpro войти в режим редактирования файла и привести его к виду

6. С помощью команды vim /etc/hostname войти в режим редактирования файла и указать имя клиента в формате FQDN:

ald031.ald.local

7. Последовательно выполнить в терминале команды:

systemctl stop NetworkManager
systemctl disable NetworkManager
systemctl enable networking

8. С помощью команды vim /etc/network/interfaces войти в режим редактирования файла и ввести:
• IP-адрес клиента
• маску подсети
• шлюз
• IP-адрес контролера домена
• домен
Пример записи:

auto eth0
iface eth0 inet static
address 192.168.2.2
netmask 255.255.255.0
gateway 192.168.2.1
dns-nameservers 198.168.1.2
dns-search ald.local

9. С помощью команды vim /etc/hosts войти в режим редактирования файла и ввести:
• IP-адрес клиента
• имя клиента в формате FQDN
Пример записи:

127.0.0.1 localhost
192.168.2.2 ald031.ald.local ald031
127.0.1.1 ald031

10. С помощью команды vim /etc/resolv.conf войти в режим редактирования файла и привести его к виду:
• IP-адрес контролера домена
• домен.
Пример записи

search ald.local
nameserver 192.168.1.2

11. Обновить пакеты командой:

apt update && sudo apt dist-upgrade -y

12. Установить необходимый режим безопасности командой:

astra-modeswitch set 2

13. Установить клиентскую часть ALD Pro командой:

DEBIAN_FRONTEND=noninteractive apt-get install -q -y aldpro-client

14. Для ввода клиента в домен ввести в терминале:

/opt/rbta/aldpro/client/bin/aldpro-client-installer

15. В появившемся окне ввести:
• наименование домена
• учетная запись — учетная запись администратора домена
• хост — имя клиента
• пароль — пароль учетной записи администратора домена
После нажать «Добавить в домен».

16. В появившемся окне подтвердить действие:

17. В появившемся окне нажать «Начать установку»:

18. После успешной установки перезапустите компьютер.

Прокси-сервер Nginx для Битрикс24

У меня возникла необходимость разместить сервер Nginx с публичным IP-адресом за виртуальной машиной Bitrix. Однако выяснилось, что процесс не такой простой. Для корректной работы Bitrix требуется более глубокая настройка конфигурации Nginx. После проведения исследования на различных форумах я обнаружил подходящее решение данной проблемы.

Шаг 1. Производим обновление Nginx до версии, не ниже используемой на виртуальной машине Bitrix24. В моем случае это была версия 1.20.2, которая включала в себя пакеты nginx-extras, необходимые для правильной передачи специальных заголовков websocket.

Шаг 2. Производим настройку nginx на виртуальной машине Bitrix24.

Открываем конфигурационный файл nginx для битрикса. По умолчанию это /etc/nginx/bx/site_avaliable/s1.conf:

# Default website
    server {
            listen 80 default_server;
            server_name _;
            server_name_in_redirect off;

	    access_log /var/log/nginx/access.log main;
	    error_log /var/log/nginx/error.log warn;

            proxy_set_header        X-Real-IP        $remote_addr;
            proxy_set_header        X-Forwarded-For  $proxy_add_x_forwarded_for;
            proxy_set_header        Host $host:443;

	    set_real_ip_from 192.168.88.20;
	    real_ip_header X-Forwarded-For;

            set $proxyserver        "http://127.0.0.1:8888";
            set $docroot            "/home/bitrix/www";

            index index.php;
            root /home/bitrix/www;

            # Redirect to ssl if need
            if (-f /home/bitrix/www/.htsecure) { rewrite ^(.*)$ https://$host$1 permanent; }

            # Include parameters common to all websites
            include bx/conf/bitrix.conf;

            # Include server monitoring locations
            include bx/server_monitor.conf;
    }

Здесь мы изменили только proxy_set_header Host $host:80; на proxy_set_header Host $host:443; чтобы nginx подставлял в заголовки 443 порт и добавили два новых параметра для того, чтобы получать реальные ip-адреса посетителей:
set_real_ip_from 192.168.88.20; и real_ip_header X-Forwarded-For;, где в set_real_ip_from указывается ip-адрес проксирующего nginx-сервера, с которого разрешается получать настоящие адреса.

Перезапускаем nginx командой:

service nginx reload

Шаг 3. Производим настройку реверс-прокси в Nginx.

В файле nginx.conf в разделе «http» добавляем параметры, соответствующие настройкам из файла nginx.conf виртуальной машины Bitrix24. Эти параметры у меня сгруппированы в файле bx/bx_general_proxy_settings.conf. Также необходимо добавить директивы «map» из файла bx/settings/rtc-im_settings.conf:

include bx/rtc-im_settings.conf;
include bx/bx_general_proxy_settings.conf;

Конфиг bx/bx_general_proxy_settings.conf:

proxy_connect_timeout           300;
        proxy_send_timeout              300;
        proxy_read_timeout              300;
        proxy_buffer_size               64k;
        proxy_buffers                   8 256k;
        proxy_busy_buffers_size         256k;
        proxy_temp_file_write_size      10m;

        gzip                            on;
        gzip_proxied                    any;
        gzip_static                     on;
        gzip_http_version               1.0;
        gzip_types                      application/x-javascript application/javascript text/css;

        default_type application/force-download;

        tcp_nopush                      on;
        tcp_nodelay                     on;

        client_max_body_size            1024m;
        client_body_buffer_size         4m;

Так же имейте ввиду, что данные конфигурации могут дублироваться с конфигурациями nginx.conf, из-за чего будет возникать ошибка о дубликате. Поэтому данный файл я у себя не добавлял, а всего лишь изменил конфигурации nginx.conf под себя.

Конфиг bx/rtc-im_settings.conf:

log_format simple '$time_local $status $request';

# if connection ti not set
map $http_upgrade $connection_upgrade {
  default upgrade;
  '' 'close';
}

map $http_upgrade  $replace_upgrade {
  default $http_upgrade;
  ''      "websocket";
}

Конфиг файл conf.d/domain.conf

server {
    listen       80;
    if ($host = {DNS name}) {
        return 301 https://$host$request_uri;
    } # managed by Certbot
}
server {
        listen       443 ssl;
        server_name {DNS name} www.{DNS name};
        access_log /var/www/httpd-logs/{DNS name}.access.log;
        error_log /var/www/httpd-logs/{DNS name}.error.log notice;
        ssl_certificate /etc/letsencrypt/live/{DNS name}/fullchain.pem; # managed by Certbot
        ssl_certificate_key /etc/letsencrypt/live/{DNS name}/privkey.pem; # managed by Certbot
        ssl_ciphers EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH;
        ssl_prefer_server_ciphers on;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

        location / {

                proxy_ignore_client_abort on;
                proxy_pass https://{IP VM B24}:443;
                proxy_redirect https://{IP VM B24}:443 /;
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-Port $server_port;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Proto $scheme;
                proxy_set_header HTTPS YES;

            # for Push&Pull
            location /bitrix/subws/ {
                access_log off;
                proxy_max_temp_file_size 0;
                proxy_read_timeout  43800;
                proxy_http_version 1.1;
                proxy_pass https://{IP VM B24}:443;
                proxy_set_header Upgrade $replace_upgrade;
                proxy_set_header Connection $connection_upgrade;
                proxy_redirect https://{IP VM B24}:443 /;
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-Port $server_port;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Proto $scheme;
                proxy_set_header HTTPS YES;
            }
            location /bitrix/sub/ {
                access_log off;
                rewrite ^/bitrix/sub/(.*)$ /bitrix/subws/$1 break;
                proxy_pass https://{IP VM B24}:443;
                proxy_max_temp_file_size 0;
                proxy_read_timeout  43800;
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-Port $server_port;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Proto $scheme;
                proxy_set_header HTTPS YES;
            }

            location /bitrix/rest/ {
                access_log off;
                proxy_pass https://{IP VM B24}:443;
                proxy_max_temp_file_size 0;
                proxy_read_timeout  43800;
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-Port $server_port;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Proto $scheme;
                proxy_set_header HTTPS YES;
            }
         }
}

Для проведения тестов вводим команду

nginx -t

На этом все, настройка завершена. Перечитываем конфиги:

nginx -s reload

Перезапускаем nginx командой

service nginx reload

Для «Astra Linux Special Edition» 1.7 вышло оперативное обновление 1.7.4.UU1 main_update-1

Бюллетень № 2023-0630SE17MD содержит информацию о различных улучшениях и исправлениях, включенных в оперативное обновление 1.7.4.UU.1 для Astra Linux.

Вот основные улучшения, предоставляемые этим обновлением:

1. Закрыто более 210 уязвимостей в различных программных компонентах. Для получения полного списка уязвимостей необходимо обратиться в техническую поддержку.
2. Улучшено функционирование механизма контроля целостности при подключении к Astra Linux по SSH.
3. Усовершенствована поддержка технологии виртуализации, включая возможность использования алгоритмов xxhash0 и xxhash128 для вычисления контрольных сумм конфигурационных файлов системы виртуализации и конфигурационных файлов виртуальных машин.
4. В мобильном режиме функционирования Astra Linux внесены следующие улучшения:
• Устранена ошибка, возникающая при закрытии приложения управляющим жестом.
• Улучшен механизм обработки QR-кодов в программе «Камера» (пакет fly-camera).
• Улучшена поддержка модуля NFC в промышленных планшетах MIG T10 и Т8s.
5. В подсистеме регистрации событий внесены следующие улучшения:
• Каждому зарегистрированному событию безопасности теперь присваивается уникальный идентификатор.
• Реализована регистрация событий, связанных с функционированием программного коммутатора Open vSwitch (OVS).
6. В подсистеме поиска улучшен механизм взаимодействия пользователя с окном настроек глобального поиска.
7. В программе Bacula Admin Tool улучшен механизм запуска задачи восстановления файлов.
8. В инструменте командной строки astra-update улучшен механизм определения версии установленной ОС.
9. В программе «Настройка клиента SSSD Fly» (пакет fly-admin-ad-sssd-client) и инструменте командной строки astra-ad-sssd-client улучшен механизм ввода клиентского компьютера в домен AD Windows.
10. В программе «Настройка регистрации системных событий» (пакет fly-admin-events) улучшен механизм взаимодействия пользователя с окном настроек параметров регистрации событий.

Это только некоторые из улучшений, предоставляемых обновлением. Весь список улучшений и исправлений можно получить после обращения в техническую поддержку.

Ранее Ctrl + ↓