С чего начинали нагрузочное тестирование в Miro
- Несколько человек занимались НТ часть своего времени.
- Мы использовали JMeter как наиболее популярное решение. У нас был свой плагин для WebSocket, так как ключевой функционал Miro связан с работой с досками и требует очень быстрого клиент-серверного взаимодействия, как в играх. Кстати движок, с которого много лет назад начинала компания, был как раз игровым. Это с самого начала дало высокую интерактивность и скорость отклика.
- Наш кластер был prod-like. К счастью, у нас был IaC. Нельзя сказать, что IaC — это серебряная пуля, сложности с ним тоже есть, но без него сложности с ростом масштаба становятся фатальными препятствиями.
- Один достаточно объёмный и сложный WebSocket&HTTP API тест.
How to Rename Files and Directories in Linux
22 Июня 2020
|
Терминал
Переименование файлов и каталогов является одной из самых основных задач, которые вам часто приходится выполнять в системе Linux. Вы можете переименовывать файлы, используя файловый менеджер с графическим интерфейсом или через терминал командной строки.
Переименовать один файл легко, но переименование нескольких файлов одновременно может быть проблемой, особенно для пользователей, которые являются новичками в Linux.
Переименование файлов с помощью команды
Команда ( не хватает хода) используется для переименования или перемещения файлов из одного места в другое. Синтаксис команды следующий:
Может быть один или несколько файлов или каталогов и может быть один файл или каталог.
- Если вы указываете несколько файлов как , должен быть каталог. В этом случае файлы перемещаются в целевой каталог.
- Если вы указываете один файл как , а целью является существующий каталог, то файл перемещается в указанный каталог.
- Чтобы переименовать файл, вам нужно указать один файл как и один файл как цель.
Например, чтобы переименовать файл так, как вы запустите:
Переименование нескольких файлов с помощью команды
Команда может переименовывать только один файл за раз, но ее можно использовать вместе с другими командами, такими как или внутри bash или циклов, для переименования нескольких файлов.
В следующем примере показано, как использовать цикл Bash for для переименования всех файлов в текущем каталоге, изменив расширение на .
Давайте проанализируем код построчно:
- Первая строка создает цикл и перебирает список всех файлов, окантованных .
- Вторая строка применяется к каждому элементу списка и перемещает файл в новый, заменяя его на . Часть использует расширение параметра оболочки, чтобы удалить часть из имени файла.
- указывает на конец сегмента цикла.
Вот пример использования в сочетании с для достижения того же, что и выше:
Команда передает все файлы, оканчивающиеся в текущем каталоге, по одному, используя опцию. Строка — это имя файла, обрабатываемого в данный момент.
Как видно из приведенных выше примеров, переименование нескольких файлов с помощью команды — непростая задача, поскольку требует хорошего знания сценариев Bash.
Переименование файлов с помощью команды
Команда используется для переименования нескольких файлов. Эта команда более сложна, чем она требует базовых знаний о регулярных выражениях.
Существует две версии команды с разным синтаксисом. В этом уроке мы будем использовать версию команды Perl . Если у вас не установлена эта версия в вашей системе, вы можете легко установить ее, используя менеджер пакетов вашего дистрибутива.
-
Установить на Ubuntu и Debian
-
Установить на CentOS и Fedora
-
Установить на Arch Linux
Синтаксис команды следующий:
Команда переименует в соответствии с указанным регулярным выражением. Вы можете прочитать больше о регулярных выражениях perl .
Следующий пример изменит все файлы с расширением на :
Вы можете использовать опцию для печати имен файлов, которые будут переименованы, без переименования их.
Вывод будет выглядеть примерно так:
По умолчанию команда не перезаписывает существующие файлы. Передайте опцию, чтобы разрешить перезаписывать существующие файлы:
Ниже приведены еще несколько распространенных примеров использования команды:
-
Заменить пробелы в именах файлов подчеркиванием
-
Преобразование имен файлов в нижний регистр
-
Преобразовать имена файлов в верхний регистр
Конечно, есть другие команды для переименования файлов в Linux, такие как . Новые пользователи Linux, которых пугает командная строка, могут использовать инструменты пакетного переименования GUI, такие как Métamorphose .
Все способы открыть командную строку — зачем так много?
Написать данную заметку о всех способах открытия командной строки меня сподвигли ваши вопросы в заметке об отсутствующем файле msvcr100.dll, где в последнем пункте мы рассматривали способ пофиксить проблему через командную строку.
Конечно, современные системы достаточно просто управляются при помощи мыши и мы достаточно редко пользуемся вводом различных команд, но иногда требуется выполнить что-то специфичное и нередко это делается простым вводом команды в терминал, а как его запустить мы сегодня и рассмотрим (все известные мне варианты). Будем вызывать строчку от имени Администратора и с ограниченной учеткой.
Открываем окно командной строки из меню Win + X
Наверное, это самый простой способ открыть командную строку на Windows 10 — нажмите на клавиатуре сочетание «Win + X» и в появившемся меню выберите нужный пункт.
Удобство данного способа в том, что вы можете выбрать сразу несколько режимов работы командной строки — это:
- Командная строка — обычная, с ограниченными правами;
- Командная строка (администратор) — с неограниченными правами (будьте осторожны)
В этой менюшке вообще много интересного и я рекомендую с ней подробно ознакомиться, иной раз очень выручает и экономит время.
Открываем окно командной строки из Диспетчера задач
Откройте «Диспетчер задач» и перейдите в подробный режим (Кликнув подробнее). Нажмите «Файл» в левом верхнем углу, а затем перейдите в «Запустить новую задачу». Введите CMD или cmd.exe и нажмите кнопку OK — тем самым вы откроете командную строку. Кроме того, можно отметить галочкой пункт, который запустит командную строку с правами Администратора.
Командная строка в режиме администратора с помощью Диспетчера Задач — секретный способ
Тут почти все как и в предыдущем пункте, чтобы запустить командную строку от имени администратора — просто удерживайте клавишу CTRL зажатой на клавиатуре при щелчке Файл > Создать новую задачу, тем самым вы откроете командную строку с правами админа (никаких команд вводить не нужно)
Открытие командной строки из результатов поиска
Вы можете запросто открыть окно командной строки просто введя «CMD» в поле поиска (Клавиши Win + S на клавиатуре). Возможно когда в Россию завезут Кортану, мы сможем компьютеру скомандовать голосом, но пока обойдемся и без этого…
Чтобы запустить терминал этим способом с правами администратора, то введите CMD в поле поиска и кликните правой кнопкой мыши и выберите пункт «Запустить от имени администратора». Как вариант чтобы вообще не трогать мышь, с помощью стрелок выберите командную строку и нажмите CTRL + SHIFT + ENTER, чтобы открыть окно командной строки в режиме администратора.
Запуск командной строки из всех приложений в меню Пуск
Откройте меню Пуск, кликнув по изображению Windows в левом нижнем углу. Перейдите во все приложения и найдите там «Служебные — Windows», а затем кликните по «Командная строка»
Открываем командную строку из Проводника
Командную строку можно открыть и через проводник Windows — просто перейдите по адресу C:WindowsSystem32 и найдите там файл cmd.exe. Вы можете либо кликнуть два раза, либо же нажав правую кнопку мыши выбрать «Запуск от имени администратора» — тут все зависит от вас и то, с какими правами требуется запустить терминал.
Командная строка из меню «Выполнить»
Нажмите кнопки «Win + R» на клавиатуре чтобы открыть диалоговое окно «Выполнить». Наберите команду CMD и нажмите кнопку OK (или Enter на клавиатуре).
Откройте командную строку из адресной строки Проводника
Откройте Проводник Windows и ткните в адресную строку (или нажмите сочетание клавиш ALT + D на клавиатуре). Просто введите CMD в адресной строке и тем самым вы запустите командную строчку с указанием пути текущей папки (где вы были на момент вызова терминала)
Командная строка из меню «Файл» в Проводнике
Откройте стандартный Проводник Windows, перейдите в папку или диск, который будет выбран в качестве стартового в командной строке. Кликните «Файл» на ленте и выберите «Открыть командную строку». Тут у вас два варианта запуска:
- Открыть командную строку — открывает командную строку в выбранной нами папке со стандартными разрешениями;
- Открыть командную строку как администратор — открывает окно командной строки в выбранной нами папке с правами администратора.
Открыть окно команд в Проводнике Windows
Чтобы открыть окно командной строки в любой нужной вам папке или диске, то просто перейдите туда через стандартный проводник. Щелкните правой кнопкой мыши на папке или в любом пустом месте в правой части проводника Windows удерживая зажатой клавишу SHIFT на клавиатуре, и из контекстного меню выберите «Открыть окно команд». Терминал запустится с указанием пути до папки, в которой мы находились.
Feature-team
- бэкенд-разработчики.
- фронтенд -разработчики.
- QA-разработчики.
Проблемы feature-team
- Bus-factor.
- Долгое планирование. Для планирования мы выделяли полдня или больше: разбирали задачи, уходили на обед, потом опять разбирали. Когда планирование заканчивалось, никто уже работать не мог и не хотел — день потерян.
- Незакрытые спринты. Это серьезная боль — большинство задач в спринтах не доходило до колонки «Выполнено».
- Разный характер задач у команд.
- Появление новых команд.
- Обмен опытом среди команд.
Bus-factor
продублировали ролиВвели еженедельные встречи по направлениямввели кросс-командное code-reviewДобавили автотестыо помощи тестировщика из другой команды
Незакрытые спринты
сократить емкость спринта с 10 рабочих дней, до 8-миВ начале спринта, пока есть время, тестировщик составлял тест-кейсы.Максима Дорофеевапланировать спринт от узкого места — от тестированияМы решили планировать от тестеров. Спринты будут закрываться, будет круто!Подождите, а что в этот момент будут делать свободные разработчики? Задач будет меньше, у них появится свободное время!Ты хочешь, чтобы спринты закрывались, чтобы разработка была прогнозируемая или главная цель людей занять?Нет, все-таки прогнозируемая разработка. Давайте спринты закрывать.работать с тех. долгомРазбирать задачи из backlog и уточнять требованияПомогать другим командам
Разный характер задач у команд
Мы решили поговорить с PM и с бизнесом:Ребята, у нас Agile, Scrum, спринты, процессы — давайте не будем вкидывать новые задачи, а будем прогнозируемо разрабатывать.Смотрите, мы продаем лэндинг, его надо сделать через 3 дня. Нам за это платят миллион. Какие процессы? Деньги надо тоже зарабатывать!Решили сократить спринты до неделиKanban вместо Scrumретроспективы каждые 2 недели
Обмен опытом между командами
Здравствуйте, меня зовут Евгений, мы сейчас пилим новости.Круто!Здравствуйте, меня по-прежнему зовут Евгений, мы продолжаем пилить новости.Ок.Плюсы такого решения
- Ко встрече тимлиды готовятся, так как знают повестку дня, и понимают, что будет обсуждаться.
- Wiki-страница доступна всем разработчикам. Каждый сотрудник может узнать тему обсуждения, поучаствовать в процессе и поднять свои вопросы. После встречи мы фиксируем решение в комментариях, которые тоже доступны.
- Если какая-то задача не решилась по прошествии 1-2 месяцев, то можно посмотреть в архиве встречи, чем решилось обсуждение задачи и попинать команду или тимлида за невыполнение.
Мы ввели кросс-командное code-reviewпереход разработчиков между командамипятничные посиделкиKPI
Выводы
- Подстраивайтесь под изменения и не зацикливайтесь на том, что принято, смотрите на изменения и выбирайте лучшие практики для работы с командой. Если разработчики не могут работать по Scrum —работайте по Kanban, чтобы все были довольны и счастливы.
- Постоянно контролируйте и изменяйте процессы. Как тимлиды, вы должны контролировать процессы в команде. Директору уже не до этого, а разработчикам пока не до этого. Смотрите, что происходит, улучшайте обстановку. Кроме вас это никто не сделает и тогда вы построите команду, Которая эффективно выполняет свои функции.
Ошибка 503
Service Temporarily Unavailable
У каждого аккаунта на сервере хостинга есть определенное количество рабочих процессов, выделенное в соответствии с выбранным тарифным планом. Работа с запросами ведется в порядке очереди, они поступают на сервер, где легкие запросы обрабатываются мгновенно, а тяжелые – медленно. Всякая очередь ограничена тем или иным количеством запросов. Если новый запрос находится за пределами этой границы, принят он не будет, и вместо результата браузер выдаст оповещение “Сервис временно недоступен”.
Чтобы исправить данную ошибку нужно знать причины, по которым она может появляться:
1. Зависание скриптов при передаче больших статичных файлов через PHP. Скрипты работают определенное время, а не постоянно. При окончании времени работы скрипта прерывается передача файла, соответственно, файл не будет передан полностью, а также запрос оставит процесс веб-сервера работать еще длительное время. Устранить ошибку вы сможете посредством следующих шагов:
- Проверить все компоненты и плагины вашей CMS, отключая их по очереди, и найдите самые тяжёлые или испорченные, при работе которых загрузка сайта замедляется. По возможности откажитесь от таких компонентов или поищите более быстрый аналог.
- Проверить наличие у вас медленных запросов — в папке logs вашего аккаунта создается файл mysql-slow.log. Информация в этом файле обновляется раз в сутки и содержит только самые проблемные SQL-запросы.
- Если в PHP-скриптах используются Include-функции, загружающие части движка, расположенные на одном аккаунте, убедитесь, что в них используется локальный путь, а не URL вида «http://…». Наличие URL заставляет сервер делать дополнительный HTTP-запрос — это занимает лишнее время и сильно замедляет загрузку сайта.
2. Большое количество запросов к серверу. Причин возникновения таких запросов несколько:
- Загружаемый ресурс разбит/содержит ссылки на слишком больше число файлов (картинки, таблицы стилей JS-скрипты), которые подгружаются через отдельные запросы. В этом случае следует объединить ресурсы в один файл, где это возможно.
- DDoS-атаки, флуды, спамы в комментарии также могут вызывать большое количество запросов. В случае DDoS-атаки необходимо определить ее тип, и, согласно ее уровню, предпринять действия по устранению. Подробнее про DDoS-атаки вы можете прочитать в статье «DDoS-атаки: взгляд со стороны Timeweb».
Объект встроенного языка ОписаниеОповещения
Назначение этого объекта — указать точку конфигурации, с которой должно быть продолжено исполнение кода после того, как пользователь закроет блокирующее окно. Этот объект содержит имя экспортируемой процедуры, которая начнёт выполняться, а также указание на модуль, в котором находится эта процедура.
Если процедура находится в том же модуле, в котором создаётся описание оповещения, то для указания на этот модуль используется значение ЭтотОбъект. Это новое свойство, реализованное для управляемой формы, команды командного интерфейса и общего модуля. Именно в этих модулях может находиться процедура обработки оповещения. Пример есть в разделе .
Иногда возникает необходимость разместить обработчик оповещения не в том модуле, в котором создаётся описание оповещения, а в другом, например, в общем модуле. В таком случае вместо ЭтотОбъект можно указать имя общего модуля. Пример можно посмотреть в разделе .
Кроме этих параметров описание оповещения может содержать структуру с произвольными данными. Передача этих данных в обработчик оповещения может понадобиться для того, чтобы алгоритм, выполняемый после реакции пользователя, мог использовать значения, вычисленные перед открытием блокирующего окна. Такой пример можно посмотреть в разделе .
Групповые политики и скрипты
Если предыдущие варианты не требовали доменной среды, то в этом случае потребуется домен. Поддерживаются скрипты при входе и выходе пользователя из системы, а также при ее включении и выключении. Поскольку каждый администратор Windows сталкивался с ними, я не буду подробно расписывать как ими пользоваться ― лишь напомню, где их искать.
Скрипты, выполняющиеся при старте и завершении системы.
Скрипты, выполняющиеся при входе и выходе пользователя из системы.
Скрипты, настраиваемые в пользовательском разделе, выполняются от имени пользователя, а в разделе компьютера ― под аккаунтом SYSTEM.
Новый режим интерфейса
У конфигурации появилось новое свойство — «Режим использования модальности». Именно оно и определяет, в каком режиме работает конфигурация:
- «Не использовать» — это новый, немодальный режим работы. Для новых конфигураций это стандартный режим;
- «Использовать с предупреждением» — этот режим предназначен для разработчика. Он не препятствует использованию модальных окон, но каждый раз, когда открывается модальное окно, выдаёт предупреждающее сообщение. Пример использования этого режима есть в разделе ;
- «Использовать» — режим, обеспечивающий совместимость новой версии платформы со старыми конфигурациями, работающими в модальном режиме.
Linux Watch Command Syntax
The command uses the following syntax:
Where:
- : Adding an option changes the way the command behaves. Available options are listed below.
- : A user-defined command you want to run repeatedly.
The command options include:
, | Allows you to specify the interval between output updates. |
, | Highlights the differences between output updates. |
, | Exits the command when the output of the user-defined command changes. |
, | Removes the header showing the interval, command, and current time and date. |
, | Plays a sound alert (beep) if the command exits with an error. |
, | Attempts to run the command after the exact number of seconds defined by the option. |
, | Stops output updates on error and exits the command after a key press. |
, | Interprets ANSI color and style sequences. |
, | Passes the user-defined command to , reducing the need for extra quoting. |
, | Turns off line wrapping and truncates long lines instead. |
, | Displays help text and exits. |
, | Displays version information and exits. |
Шаг 2
Облегчи себе жизнь
Чтобы не мучить себя без нужды вводом команд с экранной клавиатуры (в «полевых» условиях, конечно, от этого не уйти) есть два пути:
- Подключить к Android устройству полноценную клавиатуру любым удобным способом.
- Воспользоваться ssh. Проще говоря, у вас на компьютере будет открыта консоль Termux’а запущенного на вашем Android устройстве.
Я пошел по второму пути, хотя он и немного сложен в настройке, но все окупится удобством использования.
На компьютере необходимо установить программу ssh клиент, я пользуюсь Bitvise SSH Client, и все дальнейшие действия совершаются в этой программе.
Поскольку мы будем подключаться по методу Publickey с использованием файла-ключа, необходимо этот файл создать. Для этого в программе Bitvise SSH Client на вкладке Login щелкаем по Client key manager в открывшемся окне генерируем новый публичный ключ и экспортируем его в OpenSSH формате в файл с названием termux.pub (на самом деле можно любое название). Созданный файл помещаем во внутреннюю память вашего Android устройства в папку Downloads (к этой папке, и еще к нескольким, Termux имеет упрощенный доступ без root).
Во вкладке Login в поле Host вводим IP вашего Android устройства (узнать можно введя в Termux команду ifconfig) в поле Port должно быть 8022.
Теперь переходим к установке OpenSSH в Termux, для этого вводим следующие команды:
Возвращаемся к Bitvise SSH Client и нажимаем кнопку Log in. В процессе подключения появится окно, в котором выбираем Method – publickey, Client key это Passphrase (если вы ее указали при генерации файла-ключа).
В случае успешного подключения (если все сделали, как написано, то должно подключиться без проблем) откроется окно.
Теперь мы можем вводить команды с ПК а выполняться они будут на вашем Android устройстве. Не сложно догадаться какие это дает преимущества.
Шаг 3
Настроим Termux, установим дополнительные утилиты
Прежде всего давайте установим bash-completion (сокращалку, волшебный-Tab, кто как называет). Суть утилиты в том что, вводя команды вы можете нажав Tab воспользоваться автозаполнением. Для установки пишем:
Ну что за жизнь без текстового редактора с подсветкой кода (если вдруг захочется покодить, а оно захочется). Для установки пишем:
Пользоваться vim`ом не сложно, чтобы открыть файл 1.txt (если его нет, то он создастся) пишем:
Раз мы теперь можем создавать и редактировать файлы, давайте немного улучшим вид и информативность командной строки Termux’а. Для этого нам нужно присвоить переменной окружения PS1 значение «:\w$ » (если интересно что это и с чем его едят, прошу сюда). Чтобы это сделать нам нужно в файл ‘.bashrc’ (лежит в корне и выполняется при каждом запуске оболочки) добавить строку:
Для простоты и наглядности воспользуемся vim`ом:
Вписываем строку, сохраняем и выходим.
Добавить строку в файл можно и другим способом, воспользовавшись командой ‘echo’:
В файл .bashrc так же можно вписать alias’ы – сокращения. Например мы хотим одной командой проводить update и upgrade сразу. Для этого в .bashrc добавляем строку:
Для внесения строки можно воспользоваться vim’ом или командой echo (если не получается самостоятельно – см. ниже)
Синтаксис alias’ов таков:
Итак, добавляем сокращение:
Вот еще несколько полезных утилит
Ставить через apt install
man — Встроенная справка для большинства комманд.
man %commandname
imagemagick — Утилита для работы с изображениями(конвертирование, сжатие, обрезка). Поддерживает много форматов включая pdf.Пример: Сконвертировать все картинки из текущей папки в один pdf и уменьшить их размер.
convert *.jpg -scale 50% img.pdf
ffmpeg — Один из лучших конвертеров аудио/видео. Инструкцию по использованию гуглите.
mc — Двухпанельный файловый менеджер наподобие Far.
Впереди еще немало шагов, главное что движение начато!
Результаты внедрения нагрузочного тестирования в Miro
- Понятный и описанный процесс. Чётко описано, какие шаги нужно выполнить и что нужно делать на каждом из шагов.
- Большие тесты: 200K, 500K пользователей online при типичном сценарии использования. Каждый сложный тест зачастую проходит много итераций перед успешным выполнением, поэтому без автоматизации столько раз гонять большие тесты было бы чрезвычайно долгим и утомительным занятием, полным ошибок.
- Проверка компонентов перед выкаткой на прод.
- Обоснованный выбор параметров компонентов для поддержки планируемой нагрузки. То есть не просто с потолка брать «ну наверное хватит сотни воркеров», а выбирать параметры на основе результатов проверок.
- Автоматизация, упрощение и ускорение проведения НТ. Я говорил в начале про список из 16 пунктов, которые надо было пройти вручную при каждом запуске НТ на кластере. Теперь это один конфиг и одна команда. Больше автоматизации даёт больше надёжности и больше возможностей уделить время более творческим и сложным задачам.
- Деградационное тестирование (начало). Автоматическое выполнение тестов по реалистичному API сценарию на типичной нагрузке каждую ночь на последней версии сервера и построение графиков трендов для отслеживания динамики показателей скорости ответа и числа ошибок.
Типы ошибок
Ошибки протокола HTTP возникают в том случае, если веб-сервер по какой-то причине не может успешно отправить пользователю запрашиваемый документ. В этом случае сервер сообщит пользователю в HTTP-заголовке код возникшей ошибки.
Коды ошибок бывают положительными и отрицательными или успешными и не успешными.
Всего существует 4 типа кодов (хх — сочетание любых цифр):
- 2xx — запрос выполнен успешно;
- 3xx — запрос успешно перенаправлен (тоже положительный код);
- 4xx — ошибка — документ не был отправлен пользователю, так как произошла критическая ошибка. Класс кодов 4xx предназначен для указания ошибок со стороны клиента;
- 5xx — ошибка сервера — критическая ошибка на сервере. Коды 5xx выделены под случаи неудачного выполнения операции по вине сервера.
Наибольший интерес для владельца сайта представляют коды, указывающие на ошибки со стороны клиента или сервера. Причины возникновения и способы устранения данных ошибок представлены ниже.
Как мы принимаем решения
Американский психолог и профессор Джой Пол Гилфорд создал концепцию многомерного интеллекта — модель мышления, основанную на базе конкретных математических измерений, которые он проводил. Гилфорд предложил решать проблемы, чередуя «дивергентное» (расходящееся) и «конвергентное» (сходящееся) мышление. То есть, сосредотачиваться на целях, которые помогают решать проблему на данном этапе: создавать варианты выбора или этот выбор делать.
Именно эта концепция, визуально показанная в виде «двойного алмаза», плотно укоренилась в подходах к управлению инновационными процессами и дизайн-мышлении.
Визуально концепция чередования «режимов мышления» Гилфорда может быть изображена как ромб. Она наглядно показывает, как эффективно решать проблемы
Теперь мы можем дать определения:
Решение проблем — это последовательный творческо-аналитический процесс. Мы анализируем ситуацию, ищем причины проблемы, формулируем ее и придумываем варианты решения.
Принятие решений — выбор, который мы делаем в процессе, что-то предпочитая и от чего-то отказываясь на каждом из ключевых этапов. Мы выбираем факторы, которые будем считать значимыми, а какие — нет, расставляем приоритеты, строим планы.
Получается, что принятие решений — это часть решения сложных проблем. Чем лучше мы определяем и решаем проблемы, выбираем и принимаем решения, тем успешнее сможем справляться с изменениями. Например, разрабатывать новые продукты, проводить стратегические сессии и управлять инновациями.
Installation
See the Download Visual Studio Code page for a complete list of available installation options.
By downloading and using Visual Studio Code, you agree to the license terms and privacy statement.
Debian and Ubuntu based distributions
The easiest way to install Visual Studio Code for Debian/Ubuntu based distributions is to download and install the .deb package (64-bit), either through the graphical software center if it’s available, or through the command line with:
Note that other binaries are also available on the VS Code download page.
Installing the .deb package will automatically install the apt repository and signing key to enable auto-updating using the system’s package manager. Alternatively, the repository and key can also be installed manually with the following script:
Then update the package cache and install the package using:
RHEL, Fedora, and CentOS based distributions
We currently ship the stable 64-bit VS Code in a yum repository, the following script will install the key and repository:
Then update the package cache and install the package using (Fedora 22 and above):
Or on older versions using :
Due to the manual signing process and the system we use to publish, the yum repo may lag behind and not get the latest version of VS Code immediately.
Snap
Visual Studio Code is officially distributed as a Snap package in the Snap Store:
You can install it by running:
Once installed, the Snap daemon will take care of automatically updating VS Code in the background. You will get an in-product update notification whenever a new update is available.
Note: If isn’t available in your Linux distribution, please check the following Installing snapd guide, which can help you get that set up.
Learn more about snaps from the official Snap Documentation.
openSUSE and SLE-based distributions
The yum repository above also works for openSUSE and SLE-based systems, the following script will install the key and repository:
Then update the package cache and install the package using:
AUR package for Arch Linux
There is a community-maintained Arch User Repository package for VS Code.
To get more information about the installation from the AUR, please consult the following wiki entry:
.
Nix package for NixOS (or any Linux distribution using Nix package manager)
There is a community maintained VS Code Nix package in the nixpkgs repository. In order to install it using Nix, set option to true in your and execute:
Installing .rpm package manually
The VS Code .rpm package (64-bit) can also be manually downloaded and installed, however, auto-updating won’t work unless the repository above is installed. Once downloaded it can be installed using your package manager, for example with :
Note that other binaries are also available on the VS Code download page.
Немодальные аналоги модальных методов
Некоторые методы встроенного языка открывают модальные окна. Для этих методов в платформе были созданы «методы-дублёры», которые обладают той же функциональностью, но используют блокирующие окна. Например, старый метод Вопрос() и новый «метод-дублёр» ПоказатьВопрос(). Полный список этих методов можно посмотреть в документации Руководство разработчика, Приложение 13. Соответствие синхронных методов асинхронным аналогам.
Кроме документации метод-дублёр можно посмотреть и в синтакс-помощнике. Для каждого старого метода они указаны.
Пример использования этих методов есть, например, в разделе .