Редактор кода visual studio code. самый подробный гайд по настройке и установке плагинов для начинающих

Введение в Visual Studio

Среда разработки Visual Studio 2008 позволяет разрабатывать программы на нескольких языках программирования: C++, C#, Visual Basic и ASP .NET. При первом старте вы можете увидеть окно, в котором среда попросит вас указать предпочитаемый вами язык программирования. От вашего выбора зависит, какие типы файлов и проектов будут предлагаться вам при создании нового приложения. Я чаще работаю с C# поэтому в моем случае среда разработки настроена на предпочтения этого языка и его типа проектов будут первыми. 

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

•Recent projects – в этом разделе расположен список последних проектов, с которыми вы работали. При первом запуске этот список будет пуст. Внизу списка есть две ссылки для открытия существующего проекта и создания нового проекта.

•Get started – в этом разделе находятся ссылки на разделы файла помощи с информацией для тех, кто впервые работает с Visual Studio или впервые начинает разрабатывать программы. 

•Getting started – в этом разделе находятся ссылки на последние документы, связанные со средой разработки и программированием. 

•MSDN: Visual C# Headlines – занимает основную часть окна и содержит последние новости из мира предпочитаемого вами языка программирования. В моем случае это Visual C#. 

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

  — эта кнопка вызывает меню настройки панели. 

  — если эта кнопка нажата, то панель будет закреплена на поверхности главного окна. Если кнопка. Если копка отжата, то панель будет автоматически прятаться, когда она теряет фокус ввода, как это показано на рисунке выше. 

Если у вас достаточно большое окно, то я бы рекомендовал бы закрепить панели, чтобы они не прятались автоматически и основные команды были всегда под рукой.

  — закрыть текущую панель. Ненужные панели, которые вы используете очень редко в своей работе можно закрыть. Если вы пока не знаете, что будет нужно или не нужно, то лучше оставить окна по умолчанию, потому что панели по умолчанию действительно нужны практически постоянно. Если вы закрыли какое-то окно, то впоследствии его можно будет открыть, выбрав название окна в меню View. 

Для просмотра всех доступных панелей, желательно сейчас создать какой-либо проект в среде разработке, чтобы вам проще было читать этот документ. В этом случае, вы одновременно сможете читать и видеть результат в собственном окне. Для создания проекта выберите меню File -> New -> Project. Перед вами откроется следующее окно: 

С левой стороны представлены различные категории проектов, которые вы можете создавать. Первым в дереве категорий будет раздел с языком программирования, который вы выбрали по умолчанию. Я работаю в основном с C#, поэтому у меня первым идет раздел Visual C#. Выберите его и в основном списке окна вы увидите иконки различных проектов. Для тестирования нам достаточно будет  Windows Forms Application. Выделите соответствующую иконку. 

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

Советы по выбору допустимого элемента запуска в Visual Studio

Visual Studio предоставляет несколько вариантов элементов запуска, которые можно выбрать при создании проекта. Этот выбор важен, так как правильный элемент запуска определит, каким образом ваше приложение будет запускаться и функционировать.

1. Консольное приложение

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

Он также обычно выбирается для создания простых программ, тестирования кода и отладки.

2. Оконное приложение (Windows Forms)

Оконное приложение используется для создания приложений с графическим интерфейсом пользователя (GUI). Windows Forms предоставляет набор элементов управления, таких как кнопки, текстовые поля и т. д., которые могут быть добавлены на форму и взаимодействовать с пользователем.

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

3. Веб-приложение (ASP.NET)

Веб-приложение используется для создания приложений, которые будут работать на веб-сервере и обрабатывать запросы от клиентских браузеров. Этот тип приложения использует ASP.NET для создания динамического контента, веб-страниц и работает со связанными данными.

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

4. Библиотека классов

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

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

5. Мобильное приложение

Мобильные приложения предназначены для работы на мобильных устройствах, таких как смартфоны и планшеты. В Visual Studio вы можете выбрать разные типы мобильных приложений, такие как Android, iOS или Universal Windows Platform (UWP).

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

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

“Hello, World” на C#

Создание проекта в Microsoft Visual Studio (Windows)

Создадим первый проект на языке C# для Windows. Для этого запустите Visual Studio, при первом запуске появится окно “Добро пожаловать”.

Снимите галочку “Проверка подлинности …”, если у вас есть Microsoft-аккаунт, то нажмите на кнопку “Войти”, если нет, то на надпись “Не сейчас, возможно позже”.

Далее выберите тему по вкусу и нажмите “Запуск Visual Studio”.

Все подготовительные шаги пройдены, нажмите на кнопку “Создание проекта”.

Выберете шаблон “Консольное приложение” и нажмите “Далее”.

Укажите имя проекта, например “MyFirstProject” и место где он будет сохранен.

В результате будет открыто окно Visual Studio с созданным проектом. 

Проект в Visual Studio представляет собой набор файлов, их структура представлена в окне “Обозреватель решения”. Основной файл, который нас сейчас интересует это Program.cs. Откройте его, мы добавили поясняющие комментарии в код модуля:

using System; // Подключаем библиотеку System

// Пространство имен, с классом Program
namespace MyFirstProject 
{
    // Объявление класса Program
    class Program
    {
        // Точка входа. Метод, который будет запущен первым при старте приложения
        static void Main(string[] args)
        {
            // Вывод текста "Hello World!" в консоль
            Console.WriteLine("Hello World!"); 
        }
    }
}

Запустим наше приложение и посмотрим, что произойдет.

Для этого можно использовать несколько способов:

  • На панели вверху нажать кнопку с изображением зеленого треугольника.  Название у кнопки будет такое же как у вашего “решения”. 
  • Нажать сочетание клавиш Ctrl + F5, запустится “решение” без отладки, либо F5 для режима отладки.
  • Через панель меню: Отладка -> “Запуск без отладки”

Запустите приложение любым вышеописанным способом, в результате появится консоль, в которой будет выведено сообщение “Hello World!“.

Процесс запуска приложения “под капотом” достаточно сложен, он включает в себя создание ряда каталогов, компиляцию проекта в сборку (файл с расширением .exe) и непосредственно запуск получившегося файла. Результат сборки вы можете найти в папке <Папка проекта>\bin\Debug – если выбран режим сборки Debug, либо в  <Папка проекта>\bin\Release – если выбран Release. Режим по умолчанию – это Debug

Создание проекта с использованием средств .NET Core (Windows и Linux)

В этом разделе мы познакомимся с консольным инструментом .NET Core для создания, сборки и запуска проектов. Приведенный подход работает в Windows и Linux. Перейдите в каталог, в котором вы хотите работать с вашим проектом. Откройте консоль (если вы работаете в Windows, то нажмите сочетание клавиш Win+R и введите cmd), и с помощью команды cd перейдите в папку с проектом:

> cd c:\MyFirstProject

Для создания проекта в .NET Core используется команда dotnet new, после которой указывается тип проекта. Так как мы будем работать с консольным приложением, то нужно указать тип console

> dotnet new console

После выполнения команды в папке с проектом будет размещен необходимый набор файлов. Для запуска проекта воспользуйтесь командой:

> dotnet run

Как и в случае с проектом в Visual Studio, в консоли будет выведен текст “Hello World!”.

Поработаем над кодом программы: вместо текста выведем текущую дату. Для этого в файле Program.cs замените строку

Console.WriteLine(“Hello World!”);

на

Console.WriteLine(DateTime.Now);

Сохраните файл и выполните команду:

> dotnet run

Вместо текста в консоли должна появиться текущая дата.

Компиляция файла с исходным кодом вручную (Windows)

Познакомимся с компилятором C#, из .NET Framework (только для Windows). Создайте пустой каталог, а в нем файл Program.cs. Откройте его текстовым редактором и внесите туда следующий код:

using System;

namespace FirstApp
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine(DateTime.Now);
        }
    }
}

В меню “Пуск” найдите и откройте “Developer Command Prompt for VS 2019”, перейдите в каталог с файлом и выполните в нем команду:

> csc.exe Program.cs

Если компиляция прошла успешно, то должен появиться файл Program.exe. Запустите  его для этого введите в терминале:

> Program.exe

В результате должны быть выведены текущие дата и время.

Solution Explorer

Утилита Solution Explorer (Обозреватель решений), доступная через меню View (Вид),
позволяет просматривать набор всех файлов с содержимым и ссылаемых сборок, которые входят в состав текущего проекта:

Обратите внимание, что внутри папки References (Ссылки) в окне Solution Explorer отображается список всех сборок, на которые в проекте были добавлены ссылки. В зависимости от типа выбираемого проекта и целевой версии .NET Framework, этот список
выглядит по-разному

Добавление ссылок на внешние сборки

Если необходимо сослаться на дополнительные сборки, щелкните на папке References правой кнопкой мыши и выберите в контекстном меню пункт Add Reference (Добавить
ссылку). После этого откроется диалоговое окно, позволяющее выбрать желаемые сборки
(в Visual Studio это аналог параметра /reference в компиляторе командной строки). На вкладке Assemblies этого окна, показанной на рисунке, отображается список наиболее часто используемых сборок .NET; на вкладке Browse (Обзор) предоставляется возможность
найти сборки .NET, которые находятся на жестком диске; на вкладке Recent (Недавние) приводится перечень сборок, на которые часто добавлялись ссылки в других проектах:

Просмотр свойств проекта

И, наконец, напоследок важно обратить внимание на наличие в окне утилиты Solution Explorer пиктограммы Properties (Свойства). Двойной щелчок на ней приводит к открытию редактора конфигурации проекта, окно которого называется Project Properties (Свойства проекта):

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

Утилита Object Browser

В Visual Studio доступна еще одна утилита для изучения множества сборок, на
которые имеются ссылки в текущем проекте. Называется эта утилита Object Browser (Браузер объектов) и получить к ней доступ можно через меню View.
После открытия ее окна останется просто выбрать сборку, которую требуется изучить:

Создание нового командного проекта и Добавление пользователей

После получения необходимых разрешений можно использовать окно Team Explorer в Visual Studio 2010 для создания нового командного проекта. Этот подход предоставляет мастер, собирающий все необходимые сведения и выполняющий необходимые задачи в TFS, SharePoint и SQL Server Reporting Services. Кроме того, необходимо предоставить разрешения на новый командный проект членам группы разработчиков, чтобы они добавили и изменяют содержимое.

Создание нового командного проекта

В следующей процедуре описывается создание нового командного проекта в TFS 2010.

Создание нового командного проекта

В меню Пуск последовательно выберите пункты все программы, Microsoft Visual Studio 2010, щелкните правой кнопкой мыши Microsoft Visual Studio 2010и выберите команду Запуск от имени администратора.

Если вы не запускаете Visual Studio 2010 в качестве администратора, на последнем шаге мастер создания командного проекта завершится ошибкой.

В диалоговом окне Контроль учетных записей нажмите кнопку Да.

В Visual Studio в меню команда выберите пункт подключиться к Team Foundation Server.

Если подключение к серверу TFS уже настроено, можно опустить шаги 4-7.

В диалоговом окне Подключение к командному проекту щелкните серверы.

В диалоговом окне Добавление или удаление Team Foundation Server нажмите кнопку Добавить.

В диалоговом окне добавление Team Foundation Server укажите сведения об экземпляре TFS и нажмите кнопку ОК.

В диалоговом окне » Добавление или удаление Team Foundation Server » нажмите кнопку Закрыть.

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

В окне Team Explorer щелкните правой кнопкой мыши коллекцию командных проектов и выберите команду создать командный проект.

В диалоговом окне новый командный проект укажите имя и описание командного проекта, а затем нажмите кнопку Далее.

Если командный проект содержит пробелы, вы можете столкнуться с некоторыми проблемами при использовании средства веб-развертывания службы IIS (IIS) (веб-развертывание) для развертывания пакетов из выходного пути. Пробелы в пути могут значительно усложнить выполнение веб-развертывание команд.

На странице Выбор шаблона процесса выберите шаблон процесса, который требуется использовать для управления процессом разработки, а затем нажмите кнопку Далее.

Дополнительные сведения о шаблонах процессов для TFS см. в разделе шаблоны процессов и средства.

На странице Параметры сайта группы оставьте параметры по умолчанию без изменений, а затем нажмите кнопку Далее.

Этот параметр создает или определяет сайт группы SharePoint, связанный с командным проектом TFS. Группа разработчиков может использовать этот сайт для управления документацией, участия в обсуждениях, создания вики-страниц и выполнения других задач, не связанных с кодом. Дополнительные сведения см. в разделе взаимодействие между продуктами SharePoint и Team Foundation Server.

На странице Указание параметров системы управления версиями оставьте параметры по умолчанию без изменений, а затем нажмите кнопку Далее.

Этот параметр определяет или создает расположение в иерархии папок TFS, которое будет использоваться в качестве корневой папки для содержимого.

На странице Подтверждение параметров командного проекта нажмите кнопку Готово.

После успешного создания нового командного проекта на странице командный проект создан нажмите кнопку Закрыть.

Добавление пользователей в командный проект

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

Добавление пользователей в командный проект

В Visual Studio 2010 в окне Team Explorer щелкните правой кнопкой мыши командный проект, укажите пункт Параметры командного проектаи выберите пункт членство в группе.

Чтобы разрешить пользователю добавлять, изменять и удалять код в системе управления версиями, необходимо добавить его в группу » Участники «.

В диалоговом окне группы проектов выберите группу Участники и нажмите кнопку Свойства.

В диалоговом окне Свойства группы Team Foundation Server выберите пункт пользователь или группа Windows, а затем нажмите кнопку добавить.

В диалоговом окне Выбор пользователей, компьютеров или групп введите имя пользователя, которого нужно добавить в командный проект, нажмите кнопку Проверить имена, а затем нажмите кнопку ОК.

В диалоговом окне Свойства группы Team Foundation Server нажмите кнопку ОК.

В диалоговом окне группы проектов нажмите кнопку Закрыть.

Отладка кода в Visual Studio

Перед стартом отладки вашего кода не лишним было бы для себя выяснить, существует ли какая-то проблема с вашим кодом? Для чего вам нужна отладка? Если есть какие-то проблемы в работе вашего ПО и вы хотите найти их, используя отладчик Visual Studio, нужно понять, в чем суть проблемы. Возможно, есть проблемы, которые отладчик не определит, например:

  • орфографические ошибки или опечатки,
  • неправильно подключенные API,
  • неправильное размещение последних корректировок в код,
  • и др.

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

Прежде чем запускать отладчик Visual Studio, не лишним будет проверить код редактором кода и визуально оценить. Нужно искать «красные» и «зеленые»линии. «Красные» линии — это ошибки. «Зеленые» — предупреждения. Это могут быть:

  • ошибка компиляции;
  • ошибка преобразования типа;
  • код не поддерживает синтаксис;
  • и др.

«Красные» волнистые линии нужно исправить — это поможет в дальнейшем уменьшить количество ошибок, найденных Visual Studio. А зеленые, если не получается исправить, то по крайней мере нужно тщательно изучить.

Как запустить отладчик Visual Studio

Чтобы запустить отладчик Visual Studio, нужно:

  1. Запустить саму программу Visual Studio.
  2. Открыть код приложения, который необходимо отладить.
  3. Потом при помощи нажатия клавиши «F5» запустить режим отладки. Также это можно сделать через меню, если нажать «Отладка», а потом «Начать отладку».

Начнется процесс отладки. При возникновении ошибок отладчик Visual Studio покажет вам строку их проявления и предоставит вам информацию о том, что произошло. Для более точного изучения кода вы можете расставить точки останова. Это те точки в коде, где отладчик Visual Studio остановит свою работу, а у вас появится возможность детальнее изучить:

  • последовательность исполнения кода;

  • работу памяти;

  • значение переменных и др.

Чтобы создать точку останова в отладчике, нужно кликнуть слева от интересующей вас строки кода или при помощи клавиши «F9».

Бывает такое, что сразу выявить ошибки не получается при помощи отладчика, но приложение все равно не работает корректно. Тогда вам тоже смогут помочь точки останова. Нужно выставить их перед выполнением проблемного кода, а потом запустить отладчик Visual Studio в построчном выполнении программы для детализированного анализа, и тогда баг проявится.

Настройка параметров обновления

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

Поведение установки и скачивания

  1. В строке меню выберите Сервис > Параметры.

  2. Разверните пункт Среда и выберите элемент Обновления продукта.

  3. Просмотрите параметры конфигурации, которые можно задать в этом диалоговом окне. Можно настроить автоматическое скачивание обновлений, позволяющее загружать обновления, когда компьютер находится в состоянии бездействия. Также можно выбрать один из двух режимов установки: Установить при скачивании или Скачать все и установить. Выберите нужные режим установки и параметры автоматического скачивания для обновлений Visual Studio.

Настройка исходного расположения обновлений

В Visual Studio 2022 теперь можно настроить, откуда клиенты будут получать обновления. Эти исходные расположения обновлений называются «каналы». Дополнительные сведения о назначении и доступности каналов см. в документации по циклу выпуска Visual Studio. Корпорация Майкрософт предоставляет всем пользователям доступ к текущему каналу и каналу предварительного просмотра, а клиентам выпусков Enterprise и Professional — доступ к каналам долгосрочного обслуживания (LTSC). ИТ-администраторы также могут настраивать исходные расположения обновлений, например сетевые макеты, к которым у клиентов должен быть доступ. Дополнительные параметры и сведения о настройке см. в руководстве администраторов Visual Studio.

Существует два способа открыть диалоговое окно «Параметры обновления», позволяющее изменить канал, из которого экземпляр Visual Studio должен получать обновления.

  1. Откройте Visual Studio Installer, выберите экземпляр, который хотите настроить, нажмите кнопку «Дополнительные параметры» , а затем выберите пункт меню Параметры обновления. Дополнительные сведения о том, как найти Visual Studio Installer, см. в предыдущих инструкциях.

  2. Диалоговое окно «Параметры обновления» также можно вызвать другим способом. Для этого откройте Visual Studio IDE, вызовите диалоговое окно «Доступно обновление» (нажав Просмотреть сведения в уведомлении об обновлении или Проверить наличие обновлений в меню «Справка»), а затем щелкните ссылку «Изменить параметры обновления».

Диалоговое окно Параметры обновления будет выглядеть следующим образом.

Выбрав необходимое значение в раскрывающемся списке Канал обновления, вы можете управлять исходным расположением будущих обновлений для этого экземпляра Visual Studio. Следует учитывать следующие особенности:

  • Канал предварительного просмотра и текущий канал доступны для всех выпусков Visual Studio, а каналы LTSC — только для клиентов выпусков Professional и Enterprise.
  • Можно обновить экземпляр Visual Studio сразу после настройки расположения канала обновления. Или отложить фактическое обновление продукта на более позднее время. Настройка канала обновления и обновление продукта — это два независимых события.
  • При обновлении канала будет установлен последний выпуск, находящийся на нем. Если вы являетесь корпоративным клиентом и хотите установить определенную версию из канала, следуйте приведенным выше инструкциям «Запуск конкретного начального загрузчика».
  • Канал обновления можно изменить только в том случае, если последняя версия продукта, доступная на этом канале, новее установленной. Например, всегда можно перейти с текущего канала на канал предварительного просмотра, но перейти с канала предварительного просмотра на текущий можно, только если последний выпуск на текущем канале является более поздним, чем установленный выпуск из канала предварительного просмотра.
  • Для всех каналов LTSC установлен срок действия. После его окончания LTSC нельзя будет использовать в качестве источника обновлений, и этот канал исчезнет из списка.
  • Все каналы Майкрософт размещаются на серверах Майкрософт, и для них требуется доступ к Интернету.
  • Для каждого экземпляра Visual Studio независимо можно настроить источник обновлений. Если у вас установлено два экземпляра Visual Studio 2022, их можно обновлять из разных каналов.
  • ИТ-администраторы могут управлять этими значениями в раскрывающемся списке Канал обновления. Например, они могут добавлять расположения сетевых макетов в качестве источников обновлений. Также они могут сделать расположения, размещенные Майкрософт, недоступными в качестве источников обновлений. Эта функция также работает в установках Visual Studio 2019. Сведения о настройке расположений обновлений см. в руководстве администраторов Visual Studio

Какая информация выводится отладчиком Visual Studio

Итак, вы выставили несколько точек останова и запустили процесс отладки. На каждой точке останова Visual Studio будет останавливаться. В эти моменты вам будет доступна определенная информация. Чтобы ее просмотреть, нужно кликнуть кнопку «Debug» на панели инструментов и найти «Windows». Получите бонус от Пин ап казино 100% от первого депозита с вейджером отыгрыша x35 на 72 часа! Только на официальном сайте Pin Up лучшие игровые автоматы, рулетка и живые диллеры.

Там вам будет доступна следующая информация:

  1. Breakpoints. Тут собраны сведения о ваших точках останова.
  2. Output. Здесь выводятся служебные сообщения от самой Visual Studio.
  3. Watch. Здесь расположены переменные, за которыми вы наблюдаете в коде; внести их можно только вручную.
  4. Autos. Здесь находится список переменных, с которыми прямо сейчас проводится работа.
  5. Locals. Здесь выводятся все локальные переменные.
  6. Immediate. Здесь выводятся переменные, которые вы требуете.
  7. Call Stack. Здесь расположен список вызываемых функций.
  8. Threads. Тут выводится информация об уже стартовавших потоках вашего приложения.
  9. Modules. Отображаются все загруженные модули.
  10. Processes. Отображаются процессы модулей.
  11. Memory. Отображается память рассматриваемых модулей.
  12. Disassembly. Тут можно увидеть, как отображается ваш код на языке более высокого уровня.
  13. Registers. Выводится регистр значения.
Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!:
Нажимая на кнопку "Отправить комментарий", я даю согласие на обработку персональных данных и принимаю политику конфиденциальности.