Руководство для начинающих по отладке (JavaScript)

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

 

Но сначала, что такое отладка и как это будет применимо к вам?

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

 

Несколько советов, которые облегчат отладку вашего кода

  1. Сделайте свой код максимально выразительным или простым для понимания. Это может означать маркировку переменных и функций в соответствии с тем, что они выполняют (например, используя такие имена переменных, как firstName и lastName, а не string1 и string2). Это также может означать использование встроенных методов (таких как карта массива), которые подсказывают, какое возвращаемое значение следует ожидать.
  2. Аналогичным образом, старайтесь, чтобы ваши функции выполняли одну главную цель. Это уменьшит количество ошибок и упростит понимание вашего кода.
  3. Объявляйте переменные и функции только там, где они необходимы. Если переменные и функции доступны с помощью кода, которому они не нужны (например, если они были объявлены в глобальной области видимости без необходимости), отследить ошибки будет намного сложнее.
  4. По возможности избегайте изменений. Бывают случаи, когда вам захочется изменить состояние массива или объекта, но, когда это возможно, лучше всего обновить их неразрушающим образом (например, создав копии перед изменением). В связи с этим также безопаснее объявлять свои переменные с помощью const, если только вы уже не знаете, что будете переназначать переменную по всему вашему коду. Это предотвратит непреднамеренное изменение значения переменной и вместо этого может привести к полезной ошибке, подобной этой: Uncaught TypeError: Assignment to constant variable.
  5. Часто тестируйте свой код по мере его написания. Гораздо сложнее найти ошибку, когда вы работаете со многими непроверенными функциями одновременно.

 

Хорошо, теперь, когда мы разобрались с этим, вот несколько опций отладчика. Теперь мы покажем примеры с использованием простого цикла for. Ознакомьтесь с документацией MDN, если вам нужно обновление.

 

Вывод на консоль

Вы можете проверить свои предположения по всему коду, используя инструкции console.log().

Допустим, у нас есть функция, предназначенная для получения массива учащихся и возврата нового массива, содержащего только учащихся, имена которых начинаются с ‘A’.

const allStudents = ["AndreyEx", "Max", "Alex", "Dasha", "Anna", "Dennis"];



function startsWithJ(array) {

  const aStudents = [];

  for (let i = 0; i < array.length; i++) {

    const currentStudent = array[i];

    const firstLetter = currentStudent[1];

    if (firstLetter === "A") {

      aStudents.push(currentStudent);

    }

  }

  return aStudents;

}



startsWithJ(allStudents); 

// => []


 

Когда мы запускаем нашу функцию с переданным массивом allStudents, она возвращает пустой массив. Это не то, чего мы ожидали — мы хотели, чтобы он возвращался ['AndreyEx', 'Alex', 'Anna']. Возможно, вы быстро поймете, где мы ошиблись, а возможно, и нет (и это нормально!). В любом случае, потерпите немного, пока мы добавим инструкции console.log() для отладки этой функции.

Одно из наших предположений относительно этого кода заключается в том, что он корректно обращается к каждому элементу в массиве allStudents. Мы можем использовать console.log() для печати имени каждого ученика в нашем исходном массиве, вот так:

const allStudents = ["AndreyEx", "Max", "Alex", "Dasha", "Anna", "Dennis"];



function startsWithJ(array) {

  const aStudents = [];

  for (let i = 0; i < array.length; i++) {

    const currentStudent = array[i];

    console.log(currentStudent); //ДОБАВЛЕНА СТРОКА

    const firstLetter = currentStudent[1];

    if (firstLetter === "A") {

      aStudents.push(currentStudent);

    }

  }

  return aStudents;

}



startsWithJ(allStudents);

// LOG: AndreyEx

//      Max

//      Alex

//      Dasha

//      Anna

//      Dennis 

// => []


 

Имя каждого учащегося корректно выводится на консоль, поэтому мы знаем, что наш цикл for настроен правильно. Давайте проверим другое предположение — что мы правильно проверяем первую букву имени каждого учащегося. Мы можем «видеть, о чем думает машина», когда получаем доступ к первой букве, печатая нашу переменную firstLetter.

const allStudents = ["AndreyEx", "Max", "Alex", "Dasha", "Anna", "Dennis"];



function startsWithJ(array) {

  const aStudents = [];

  for (let i = 0; i < array.length; i++) {

    const currentStudent = array[i];

    const firstLetter = currentStudent[1];

    console.log(firstLetter); //ДОБАВЛЕНА СТРОКА

    if (firstLetter === "A") {

      aStudents.push(currentStudent);

    }

  }

  return aStudents;

}



startsWithJ(allStudents);

// LOG: n

//      a

//      l

//      a

//      n

//      e 

// => []

 

Здесь мы видим, что наше предположение было неверным. Мы случайно проверяем вторую букву каждого имени, и поэтому firstLetter === 'A' это никогда не соответствует действительности. Нам нужно изменить firstLetter назначение на currentStudent[0] вместо currentStudent[1]. Вот наш окончательный результат:

const allStudents = ["AndreyEx", "Max", "Alex", "Dasha", "Anna", "Dennis"];



function startsWithJ(array) {

  const aStudents = [];

  for (let i = 0; i < array.length; i++) {

    const currentStudent = array[i];

    const firstLetter = currentStudent[0];

    if (firstLetter === "A") {

      aStudents.push(currentStudent);

    }

  }

  return aStudents;

}



startsWithJ(allStudents);

// => [ 'AndreyEx', 'Alex', 'Anna' ]


 

Хотя это довольно простой пример, использование console.log() для просмотра значений переменных, вызовов функций и т.д. Является допустимым способом отслеживания более сложного кода.

 

Отладчик узлов

Теперь мы переходим к инструментам отладки, которые позволяют нам «приостанавливать» наш код и внимательнее смотреть на то, что происходит на каждом шаге. Мы начнем с того, который предоставляется Node для терминала (убедитесь, что Node установлен!).

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

const allStudents = ["AndreyEx", "Max", "Alex", "Dasha", "Anna", "Dennis"];



function startsWithJ(array) {

  const aStudents = [];

  for (let i = 0; i <= array.length; i++) {

    const currentStudent = array[i];

    const firstLetter = currentStudent[0];

    if (firstLetter === "A") {

      aStudents.push(currentStudent);

    }

  }

  return aStudents;

}



startsWithJ(allStudents);


 

Когда мы запускаем это, мы получаем следующую ошибку:

const firstLetter = currentStudent[0];

TypeError: Cannot read properties of undefined (reading '0')

 

Аналогично использованию console.log(), мы выберем место в коде, куда мы хотим заглянуть внутрь и посмотреть, что происходит. В этом случае мы будем использовать debugger ключевое слово. Поскольку мы видим, что один из параметров currentStudent не определен, давайте поместим инструкцию debugger рядом с объявленной переменной currentStudent.

function startsWithJ(array) {

  const aStudents = [];

  for (let i = 0; i <= array.length; i++) {

    const currentStudent = array[i];

    debugger; //ДОБАВЛЕНА СТРОКА

    const firstLetter = currentStudent[0];

    if (firstLetter === "A") {

      aStudents.push(currentStudent);

    }

  }

  return aStudents;

}


 

Оттуда вы можете запустить отладчик с помощью команды node inspect index.js в вашем терминале (используйте имя вашего файла вместо index.js).

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

break in index.js:7

  5   for (let i = 0; i <= array.length; i++) {

  6     const currentStudent = array[i];

> 7     debugger;

  8     const firstLetter = currentStudent[0];

  9     if (firstLetter === "A") {

debug>


 

В приглашении debug давайте откроем REPL, выполнив команду repl. Оттуда мы можем проверить значения переменных, введя их имена в терминале. Мы начнем с проверки значения i и currentStudent.

debug> repl

Press Ctrl+C to leave debug repl

> i

0

> currentStudent

'AndreyEx'


 

В этом есть смысл! Мы находимся на нашей первой итерации цикла for, где i должно быть 0 и currentStudent должно быть ‘AndreyEx’ (первый ученик в нашем массиве allStudents). Пока все идет хорошо. Чтобы продолжить пошаговое выполнение кода к нашей следующей итерации, нажмите Ctrl + C для выхода из REPL и снова введите cont в приглашении debug.

Теперь, когда мы снова входим в REPL, мы должны быть на второй итерации нашего цикла for. Мы можем подтвердить это, снова проверив значения i и currentStudent.

debug> repl

Press Ctrl+C to leave debug repl

> i

1

> currentStudent

'Max'


 

Это тоже выглядит правильно. Мы собираемся быстро перейти к 6-й итерации нашего цикла for, где currentStudent должно быть ‘Dennis’.

debug> repl

Press Ctrl+C to leave debug repl

> i

5

> currentStudent

'Dennis'


 

Все i и currentStudent были такими, как ожидалось, на каждой итерации. Мы все еще не достигли undefined currentStudent. Если мы снова пройдемся по коду, мы бы ожидали, что функция завершится, когда мы дойдем до последнего пользователя в нашем массиве allStudents.

debug> cont

break in index.js:7

  5   for (let i = 0; i <= array.length; i++) {

  6     const currentStudent = array[i];

> 7     debugger;

  8     const firstLetter = currentStudent[0];

  9     if (firstLetter === "A") {

debug> repl

Press Ctrl+C to leave debug repl

> i

6

> currentStudent

undefined


 

Но это не то, что произошло. Здесь отладчик узла показал нам, что в нашем цикле for осталась еще одна итерация, из-за чего i of 6 вышел за пределы. Вот почему currentStudent[0] было не определено — потому что нет currentStudent индекса равного 6. Мы можем исправить наш код, удалив = из нашего условия цикла for .

const allStudents = ["AndreyEx", "Max", "Alex", "Dasha", "Anna", "Dennis"];



function startsWithJ(array) {

  const aStudents = [];

  for (let i = 0; i < array.length; i++) {

    const currentStudent = array[i];

    const firstLetter = currentStudent[0];

    if (firstLetter === "A") {

      aStudents.push(currentStudent);

    }

  }

  return aStudents;

}



startsWithJ(allStudents);

// => [ 'AndreyEx', 'Alex', 'Anna' ]


 

Отладчик узлов — отличный инструмент для проверки и отладки вашего кода, особенно если вы не хотите усложнять свой код инструкциями console.log().

 

Отладчик Chrome Developer Tools

Инструменты разработчика Chrome предлагают другой инструмент отладки, который вы можете использовать, если к вашему файлу JavaScript подключен HTML-файл. Вы можете создать базовый HTML-файл, единственной целью которого является вложение вашего JS-файла. Мы прикрепили файл JS, включив следующую строку в свой HTML-файл:

<script type="text/javascript" src="index.js"></script>.

 

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

const allStudents = ["AndreyEx", "Max", "Alex", "Dasha", "Anna", "Dennis"];



function startsWithJ(array) {

  {const aStudents = [];

    for (let i = 0; i < array.length; i++) {

      const currentStudent = array[i];

      const firstLetter = currentStudent[0];

      if (firstLetter === "A") {

        aStudents.push(currentStudent);

      }

    }

  }

  return aStudents;

}



startsWithJ(allStudents);


 

Мы собираемся открыть HTML-страницу в Chrome, затем получить доступ к инструментам разработчика, нажав F12.

У Dev tools есть своя консоль, которая сразу показывает нам ошибку: Uncaught ReferenceError: jStudents is not defined. Это происходит в конце нашего кода, куда мы пытаемся вернуться jStudents. Точно так же, как и в случае с инструментом отладки узла, я собираюсь поместить в свой код инструкцию debugger, где мы хотим сделать паузу и рассмотреть поближе. Мы поместим ее в начало моей функции.

function startsWithJ(array) {

  {const aStudents = [];

    debugger; //ДОБАВЛЕНА СТРОКА

    for (let i = 0; i < array.length; i++) {

      const currentStudent = array[i];

      const firstLetter = currentStudent[0];

      if (firstLetter === "A") {

        aStudents.push(currentStudent);

      }

    }

  }

  return aStudents;

}


 

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

Если вы посмотрите направо, вы должны увидеть значения ваших переменных и информацию в стеке вызовов. Мы можем заглянуть сюда, чтобы увидеть, как меняются значения наших переменных (например aStudent) по мере выполнения кода. Вместо ввода cont в командной строке debug терминала, приятный пользовательский интерфейс инструмента отладки Chrome позволяет нам нажимать кнопки для пошагового выполнения кода.

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

Быстрая переадресация к последней итерации, aStudents назначена правильно ['AndreyEx', 'Alex', 'Anna']. Мы знаем, что наш цикл for работает должным образом. Но когда мы продолжим пошаговое выполнение каждой строки и выйдем из цикла for, вы заметите, что aStudents это исчезло с нашей вкладки scope. aStudents ранее была указана как переменная уровня блока, что предполагает, что она могла быть случайно объявлена в области видимости, к которой у нас больше нет доступа.

При более внимательном рассмотрении нашего кода мы можем видеть, что наш оператор return находится за пределами блока кода ({}), где был объявлен aStudents. Чтобы решить нашу проблему, мы можем поместить объявление переменной и оператор return в одну область видимости, удалив ненужное {}.

function startsWithJ(array) {

  const aStudents = [];

  debugger; //ДОБАВЛЕНА СТРОКА

  for (let i = 0; i < array.length; i++) {

    const currentStudent = array[i];

    const firstLetter = currentStudent[0];

    if (firstLetter === "A") {

      aStudents.push(currentStudent);

    }

  }

  return aStudents;

}



startsWithJ(allStudents);

// => [ 'Alex', 'Anna', 'Dennis' ]


 

Подведение итогов

Отладчик Chrome — наш личный фаворит из этих опций. Мы ценим, что нам не нужно вычищать кучу console.log(), когда мы закончим, и мы думаем, что это намного более интуитивно понятно в использовании, чем отладчик Node. Любой из этих способов допустим для отладки вашего кода. Возможно, вы даже захотите изучить возможность использования отладчика, встроенного в вашу среду разработки IDE.

Теперь у вас есть инструменты для устранения ваших ошибок и тщательного изучения вашего кода. Спасибо за чтение и удачи!



2023-09-27T20:13:23
Программирование

Что необходимо учитывать перед походом к психологу

Обращение к психологу — важный шаг, который позволяет получить профессиональную консультацию и помощь в решении личных проблем. Записаться на консультацию к психологу в Перми https://natabykova.ru сегодня можно онлайн. Перед встречей со специалистом необходимо учесть несколько моментов, чтобы обеспечить максимальную эффективность сотрудничества. Читать

Как использовать ChatGPT для проверки кода

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

В этой статье мы рассмотрим, как использовать ChatGPT для проверки кода. Мы рассмотрим следующие темы:

  • Как получить доступ к ChatGPT
  • Как использовать ChatGPT для проверки кода
  • Преимущества и недостатки использования ChatGPT для проверки кода

 

Как получить доступ к ChatGPT

ChatGPT доступен в двух версиях: бесплатной и платной. Бесплатная версия ChatGPT доступна через веб-сайт OpenAI. Платная версия ChatGPT, ChatGPT Plus, доступна через подписку.

Чтобы получить доступ к бесплатной версии ChatGPT, выполните следующие действия:

  1. Перейдите на веб-сайт OpenAI.
  2. Нажмите кнопку «Начать».
  3. Создайте учетную запись OpenAI.
  4. Войдите в свою учетную запись.
  5. Нажмите кнопку «ChatGPT».

Чтобы получить доступ к платной версии ChatGPT, выполните следующие действия:

  1. Перейдите на веб-сайт OpenAI.
  2. Нажмите кнопку «ChatGPT Plus».
  3. Выберите план подписки.
  4. Оплатите подписку.

 

Как использовать ChatGPT для проверки кода

Чтобы использовать ChatGPT для проверки кода, выполните следующие действия:

1. Подготовьте свой код.

2. Скопируйте код в текстовое поле ChatGPT.

3. Нажмите кнопку «Проверить код».

ChatGPT выполнит следующие действия:

  •  Проанализирует ваш код на наличие синтаксических ошибок.
  •  Проверит ваш код на соответствие стандартам кодирования.
  •  Предложит улучшения вашего кода.

 

Преимущества и недостатки использования ChatGPT для проверки кода

Преимущества

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

Недостатки

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

 

Примеры использования ChatGPT для проверки кода

Вот несколько примеров того, как можно использовать ChatGPT для проверки кода:

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

 

Заключение

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

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



2023-09-27T18:08:05
Машинное обучение

Альтернативы Яндекс Метрике и Google Analytics

Самыми крупными системами веб-аналитики являются Яндекс Метрика и Google Analytics — по статистике, они занимают 7,1% и 85,2% мирового рынка соответственно. Но у этих популярных инструментов есть свои альтернативы, которые по функционалу могут не уступать, а в некоторых случаях и превосходить конкурентов. Читать

Подраздел «Недавно добавленные» в меню Пуск Windows 11 и как его включить

Меню кнопки «Пуск» содержит не только ярлыки приложений, но и ярлыки файлов, недавно просмотренных пользователем и расположенных в блоке «Рекомендуемые». Так вот, этот вид меню по умолчанию скоро изменится, недавно просмотренные документы из меню «Пуск» станут недоступны для просмотра с первого взгляда, будучи перенесенными в отдельный свернутый подраздел «Недавно добавленные». Читать

Загрузите предварительное обновление Windows 10 KB5030300 (сентябрь 2023 г.)

Это обновление содержит несколько исправлений для операционной системы Windows 10 22H2. Установите его с помощью предоставленных автономных установщиков.

Сегодня четвертый вторник месяца, и это означает, что для Microsoft пришло время выпустить дополнительное обновление типа D, не связанное с безопасностью, для поддерживаемых операционных систем Windows. Microsoft опубликовала КБ5030300 для Windows 10 22H2. Это необязательное обновление, то есть оно будет установлено только в том случае, если вы разрешите его вручную.

Если вы решите не устанавливать это обновление, большинство исправлений и улучшений, включенных в это обновление, будут применены автоматически при установке обновлений «Вторник исправлений» в следующем месяце. Однако если вы его установите, сборка вашей операционной системы будет обновлена ​​до 19045.3516.

KB5030300 представляет незначительные функции и улучшения операционной системы Windows 10. Изюминкой этого обновления является то, что оно возвращает улучшенный интерфейс поиска на панели задач. Если у вас есть верхняя, нижняя, обычная панель задач или панель задач с маленькими значками, вы увидите окно поиска. В этом обновлении также добавлена ​​анимация для нескольких значков на кнопке панели задач новостной рекламы.

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

Сводка выпуска KB5030300

  • Статья базы знаний: КБ5030300
  • Версия ОС: Windows 10 версия 22H2
  • Строить: 19045.3516
  • Размер: 767,8 МБ (64-бит)
  • Дата выпуска: 26 сентября 2023 г.

Исправления и улучшения в KB5029331

В этом выпуске реализован следующий список исправлений и улучшений:

  • Это обновление возвращает улучшенную работу с окном поиска на панели задач.
  • Это обновление добавляет анимацию к нескольким значкам на кнопке панели задач «Новости и интересы». Эти анимации возникают, когда:

    • Новое объявление появится на кнопке панели задач «Новости и интересы».
    • Вы наводите курсор мыши на значок или щелкаете его, пока объявление находится на панели задач.

  • Это обновление устраняет проблему, затрагивающую Microsoft Excel. Он перестает отвечать, когда вы пытаетесь поделиться файлом в формате PDF в Outlook.
  • Это обновление устраняет проблему, затрагивающую сенсорную клавиатуру. Иногда не открывается.
  • Это обновление завершает работу по обеспечению соответствия требованиям GB18030-2022. Он удаляет и переназначает символы для ввода Microsoft Wubi и ввода U-режима Microsoft Pinyin. Вы больше не можете вводить коды символов, которые не поддерживаются.
  • Это обновление поддерживает переход на летнее время (DST) в Гренландии.
  • Это обновление меняет написание столицы Украины с Киева на Киев.
  • Это обновление устраняет проблему, связанную с изменениями в пересылке событий.
  • Это обновление устраняет проблему, которая затрагивает среду виртуализации приложений (App-V). Операции копирования внутри него перестают работать. Это происходит после установки обновления за апрель 2023 г.
  • Это обновление устраняет проблему, которая затрагивает сертификат простого протокола регистрации сертификатов (SCEP). Система сообщает о сбое установки некоторых сертификатов SCEP. Вместо этого система должна сообщать о них как о ожидающих.
  • Это обновление устраняет проблему, которая затрагивает Microsoft Print to PDF. Он использует метаданные для имени, под которым вы входите в систему как автор печатного PDF-файла. Вместо этого следует использовать отображаемое имя.
  • Это обновление устраняет проблему, которая затрагивает некоторые USB-принтеры. Защитник Microsoft не позволяет им печатать.
  • Это обновление устраняет проблему, влияющую на работоспособность устройства. Некоторые устройства не могут подтвердить состояние своей безопасности.
  • Это обновление устраняет проблему, влияющую на управление приложениями Защитника Windows (WDAC). Политики тегирования AppID могут значительно увеличить время запуска вашего устройства.
  • Это обновление устраняет проблему, затрагивающую IMEPad. Он перестает работать. Это происходит при вводе символов, определяемых конечным пользователем (EUDC).
  • Это обновление устраняет проблему, влияющую на совместимость приложений. Это связано с Microsoft Defender для конечной точки.
  • Это обновление устраняет проблему, затрагивающую удаленные приложения. Отображение некоторых элементов выровнено неправильно.
  • Это обновление устраняет проблему, влияющую на всплывающие уведомления. Они могут не отображаться, когда вы используете для их чтения инструменты автоматизации пользовательского интерфейса.
  • Это обновление устраняет проблему, затрагивающую координатора распределенных транзакций Microsoft (DTC). Имеет течь ручки. Из-за этого системе не хватает памяти.
  • Это обновление устраняет проблему, которая может вызвать утечку памяти в пользовательском режиме. Это может произойти, когда вы позвоните Копировать файл() или ПереместитьФайл().
  • Это обновление устраняет проблему, из-за которой Windows может перестать отвечать на запросы. Это может произойти, если вы используете файлы Microsoft OneDrive, сжатые NTFS.
  • Это обновление устраняет проблему, влияющую на внешнюю привязку. Это терпит неудачу.
  • Это обновление устраняет известную проблему, которая влияет НажмитеOnce. Приложения, для развертывания которых вы использовали ClickOnce, могут начать запрашивать установку.

Благодаря этим исправлениям и улучшениям Windows 10 Microsoft в настоящее время не известно о каких-либо проблемах с этим выпуском.

Загрузите и установите Windows 10 KB5030300.

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

Ниже мы предоставили прямые ссылки для загрузки автономных установщиков, с помощью которых вы можете установить обновление на свой компьютер с Windows 10 версии 22H2 или просто обновиться до последней сборки с помощью Центра обновления Windows, следуя приведенному ниже руководству.

Автономные установщики

Скачать KB5030300 Предварительный накопительный пакет обновления для 64-разрядной версии Windows 10 22H2 (767,8 МБ)

Скачать КБ5030300 Предварительный накопительный пакет обновления для 32-разрядной версии Windows 10 22H2 (421,7 МБ)

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

Центр обновления Windows

Чтобы установить это обновление через Центр обновления Windows, вам необходимо использовать Windows 10 версии 22H2. Чтобы проверить свою версию операционной системы, введите «победитель» в поле «Выполнить команду» и нажмите Входить.

Убедившись, что у вас правильная версия ОС, выполните следующие шаги для установки KB5030300:

  1. Перейдите к следующему:

    Приложение «Настройки» >> «Обновление и безопасность» >> Центр обновления Windows.

  2. Здесь нажмите «Проверьте наличие обновлений».

    Проверьте наличие обновлений виндовс 10Проверьте наличие ожидающих обновлений

  3. Нажмите «Загрузить и установить» в рамках доступного дополнительного обновления.

    Загрузите и установите KB5030300.Загрузите и установите KB5030300.

    Вы увидите следующее обновление, доступное в разделе Доступно дополнительное обновление качества:

    2023-09 Предварительный накопительный пакет обновления для Windows 10 версии 22H2 для систем на базе x64/x86 (KB5030300)

  4. После загрузки и установки обновления нажмите «Перезагрузить сейчас».

    Перезагрузить компьютер 4Перезагрузить компьютер 4

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

KB5030300 установленKB5030300 установлен

Откат/удаление накопительного обновления Windows 10

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

Чтобы откатиться через 10 дней, вам нужно будет применить этот трюк.

Очистка после установки обновлений Windows

Если вы хотите сэкономить место после установки обновлений Windows, вы можете выполнить одну за другой следующие команды в командной строке с правами администратора:

dism.exe/Online/Cleanup-Image/AnalyzeComponentStore dism.exe/Online/Cleanup-Image/StartComponentCleanup

очистка DismОчистка Windows после установки Центра обновления Windows

Заблокировать установку KB5030300

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

  1. Загрузите инструмент «Показать или скрыть обновления» от Майкрософт.

  2. Запустите утилиту и нажмите Следующий чтобы начать процесс сканирования.

    Показать или скрыть обновленияПоказать или скрыть обновления

  3. Далее нажмите кнопку «Скрыть обновления” кнопка.

    Скрыть обновленияСкрыть обновления

  4. Выберите обновления, которые хотите заблокировать, и нажмите Следующий.

    список обновлений, которые нужно скрытьСписок обновлений, которые нужно скрыть

    Это автоматически скроет обновление из Центра обновления Windows и не будет установлено во время следующего процесса обновления.

  5. нажмите Закрывать кнопка.

Если вы хотите отобразить или показать скрытые обновления, запустите инструмент еще раз и выберите «Показать скрытые обновления” вместо “Скрыть обновления». В остальном процесс тот же.

Завершающие слова

Опубликованы дополнительные предварительные обновления, которые могут быть протестированы конечными пользователями. По отзывам Microsoft может внести или не внести изменения в обновление, прежде чем выпустить его для каждого пользователя Windows 10 22H2 в обновлении «Вторник исправлений» в следующем месяце.

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

История дополнительных обновлений Windows 10, не связанных с безопасностью

Журнал изменений для Windows 10 Дополнительные предварительные обновления, не связанные с безопасностью



2023-09-27T14:36:27
Tips and Tricks