Архив автора: admin

4 способа обновления до Windows 11 23H2 (прямая загрузка, инструмент создания носителя, помощник по установке, Центр обновления Windows)

Не можете дождаться выхода Windows 11 23H2? Вот 4 способа обновить существующую ОС или загрузить ISO-образ для выполнения чистой установки.

    • Ожидается, что Windows 11 23H2 выйдет 10 октября 2023 года, после чего вы сможете перейти на нее.
    • Чтобы загрузить ISO-образ Windows 11 23H2, вы можете использовать метод прямой загрузки или MCT.
    • Чтобы выполнить обновления на месте, вы можете использовать Помощник по установке или выполнить обновление до Windows 11 23H2 на странице настроек Центра обновления Windows.

Windows 11 — новейшая клиентская операционная система от Microsoft на момент написания этой статьи. Однако Microsoft ежегодно выпускает новые версии одной и той же ОС, и в этом году настало время для Windows 11 версии 23H2, хотя Microsoft любит называть ее «Windows 11 версии 2023».

Если вы используете более старую версию Windows 11, например 22H2 или исходную версию, или Windows 10, или любую более старую ОС Windows, вы можете выполнить обновление до Windows 11 23H2 при условии, что ваш компьютер соответствует минимальным требованиям к оборудованию.

Вы также можете установить Windows 11 23H2, минуя требования TPM 2.0, безопасной загрузки и 4 ГБ ОЗУ.

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

Загрузите Windows 11 23H2 ISO напрямую с сайта Microsoft.

Один из способов обновления до Windows 11 23H2 — загрузить ISO-файл непосредственно с сайта Microsoft, а затем использовать его либо для обновления текущей ОС, либо для выполнения чистой установки. Вот шаги для загрузки Windows 11 23H2 напрямую от Microsoft:

Примечание: Этот метод позволит загрузить последнюю доступную версию Windows 11.

    1. Откройте Microsoft Страница загрузки Windows 11 в любом веб-браузере.
    1. Прокрутите страницу вниз и выберите «Windows 11 (многоиздание ISO)» из раскрывающегося меню под Загрузите образ диска Windows 11 (ISO) а затем нажмите Скачать.

       

      Выберите ISO для загрузкиВыберите ISO для загрузки

 

    1. Затем выберите язык, на котором вы хотите загрузить Windows 11, из раскрывающегося меню и нажмите Подтверждать.

       

      Выберите языкВыберите язык

 

    1. Теперь нажмите кнопку 64-битная загрузка Кнопка, и должна начаться загрузка ISO-образа Windows 11.

       

      начать загрузку 1Начать загрузку

 

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

  1. арабский
  2. бразильский португальский
  3. болгарский
  4. Китайский упрощенный
  5. Китайский традиционный
  6. хорватский
  7. Чешский
  8. датский
  9. Голландский
  10. Английский
  11. Английский международный
  12. эстонский
  13. финский
  14. французский канадец
  15. Немецкий
  16. Греческий
  17. иврит
  18. Венгерский
  19. итальянский
  20. Японский
  21. Корейский
  22. Латышский
  23. Литовский
  24. Норвежский
  25. Польский
  26. португальский
  27. румынский
  28. Русский
  29. Сербская латынь
  30. словацкий
  31. словенский
  32. испанский
  33. Испанский (Мексика)
  34. Шведский
  35. тайский
  36. турецкий
  37. украинец

Инструмент Microsoft Media Creation Tool (MCT) позволяет создавать загрузочные устройства и загружать автономные ISO-образы их операционных систем. Microsoft также представила инструмент создания мультимедиа для Windows 11, который вы можете использовать для загрузки ISO-файла Windows 11 23H2. Вот как:

Примечание: Этот метод автоматически загрузит последнюю версию Windows 11, доступную на данный момент.

  1. Загрузите инструмент создания мультимедиа Windows 11. а затем запустите файл.
  2. Теперь вы увидите новое окно для MCT. Принимать условия лицензии.

 

MCT принимаетПримите условия лицензирования

 

    1. Проверьте предварительно выбранные данные ISO и нажмите Следующий.

      Если вы загружаете файл ISO на другой компьютер, снимите флажок поле рядом с «Используйте рекомендуемые параметры для этого ПК.» и выберите язык, на котором вы хотите загрузить Windows 11 23H2.

       

      МСТ следующийПродолжить, нажав Далее

 

    1. Выберите ISO-файл переключатель, чтобы загрузить файл, а затем нажмите Следующий.

       

      МСТ ИСОВыберите ISO и продолжайте.

 

    1. Теперь вам нужно будет выбрать, где вы хотите загрузить ISO-образ. Выберите том с достаточным свободным/доступным пространством и нажмите Сохранять.

       

      Инструмент создания мультимедиа начнет загрузку.

       

      Загрузка MCTЗагрузка ISO

 

    1. После завершения загрузки нажмите Заканчивать чтобы закрыть инструмент.

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

       

      МСТ финиш 1Закройте инструмент

 

 

Теперь, когда вы загрузили ISO-образ Windows 11 23H2, вы можете перейти к следующему этапу: созданию загрузочного устройства.

Если вы не хотите использовать ISO-образ и выполнять обновление на месте, продолжайте использовать следующие два метода.

Обновление до Windows 11 23H2

Если вы не хотите выполнять чистую установку Windows 11 23H2 и загружать ISO, вы также можете обновить свою текущую ОС до последней версии Windows 11, доступной через Центр обновления Windows или с помощью Ассистента установки.

Обновление до Windows 11 23H2 с помощью Центра обновления Windows

Если вы хотите обновить свое устройство до Windows 11 с ПК с Windows 10, вы должны сначала удовлетворить минимальные системные требования. Если ваше устройство соответствует требованиям, вы можете проверить, получили ли вы возможность обновления до Windows 11, перейдя по следующему адресу (в Windows 10):

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

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

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

Здесь нажмите «Проверьте наличие обновлений». Когда сканирование завершится, проверьте, есть ли вверху уведомление о том, что Windows 11 версии 23H2 готова к установке. Нажмите «Загрузить и установить” под этим.

 

Загрузите и установите Windows 11 23H2 из Центра обновления Windows.Загрузите и установите Windows 11 23H2 из Центра обновления Windows.

 

Обновление до Windows 11 23H2 с помощью Ассистента установки

Другой способ обновить текущую ОС — через Помощник по установке. Этот инструмент необходимо запустить на компьютере, который вы хотите обновить. Обратите внимание, что помощник по установке Windows 11 не работает с компьютерами на базе ARM. Для устройств на базе ARM вы можете использовать метод ручной загрузки и установки, описанный выше.

Выполните следующие действия, чтобы обновить текущую ОС до Windows 11 23H2:

  1. Загрузите Помощник по установке Windows 11 и выполнить пакет.
  2. Сначала вам необходимо загрузить и установить приложение «Проверка работоспособности ПК», независимо от того, используете ли вы уже Windows 11. Нажмите «Установите приложение «Проверка работоспособности ПК»».

 

Установите приложение «Проверка работоспособности ПК»Установите приложение «Проверка работоспособности ПК»

 

  1. Приложение будет загружено. Установите приложение PC Health Check и проверьте, соответствует ли ваша система требованиям.
  2. После завершения вернитесь в Мастер установки и нажмите Обновить.

 

Загрузите приложение «Проверка работоспособности ПК» 1.Обновите приложение

 

    1. Теперь нажмите «Примите и установите».

       

      Примите и установитеПримите условия и начните загрузку

 

    1. Инструмент начнет загрузку Windows 11 23H2.

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

 

Создать загрузочный USB-накопитель Windows 11 23H2

Если вы загрузили ISO-образ любым из вышеперечисленных способов, вы можете создать с его помощью загрузочную USB-флешку, а также DVD-диск. Однако мы предлагаем вам создать USB-накопитель, так как это удобнее.

Вы можете использовать Руфус или Ventoy создать загрузочную флешку с помощью ISO-образа. Покажем, как создать загрузочную флешку для Windows 11 23H2:

    1. Подключите USB-накопитель (объемом не менее 8 ГБ) к компьютеру.

      Убедитесь, что все ваши данные на USB-накопителе заархивированы, поскольку требуется форматирование, при котором все данные, хранящиеся на USB-накопителе, теряются.

       

    1. Загрузите Rufus с его Веб-сайт и запустите его.

       

      Загрузите последнюю версию RufusЗагрузите последнюю версию Rufus

 

    1. В Rufus убедитесь, что USB-накопитель выбран в раскрывающемся меню под Устройство.

       

      Выберите USB-накопительВыберите USB-накопитель

 

    1. Нажмите Выбирать а затем выберите ISO-файл Windows 11 23H2.

       

      Выберите ISO-файл Windows 11 23H2.Выберите ISO-файл Windows 11 23H2.

 

    1. Для остальных настроек оставьте значения по умолчанию и нажмите кнопку Начинать.

       

      Нажмите «Пуск».Нажмите «Пуск».

 

    1. Выберите параметры настройки Windows 11 и нажмите Хорошо.

       

      Выберите параметры настройки Windows 11Выберите параметры настройки Windows 11

       

      Теперь ваш загрузочный USB-накопитель Windows 11 находится в процессе создания. Выполнение этого шага может занять несколько минут.

       

  1. Во всплывающем окне с предупреждением нажмите Хорошо.
  2. Как только оно будет закончено, «Готовый» будет отображаться с зеленой полосой. Вы можете тогда Закрывать приложение.

 

Закрыть Руфус2Закрыть Руфус

 

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

Установите Windows 11 23H2 с загрузочного USB.

Теперь, когда вы создали загрузочный диск с использованием файла ISO, вы можете начать установку Windows 11 23H2. Вот как:

  1. Убедитесь, что целевой компьютер соответствует минимальным требованиям Windows 11.
  2. Подключите загрузочный USB-накопитель Windows 11 к целевому компьютеру.
  3. Включите/перезагрузите компьютер и откройте меню однократной загрузки (обычно с помощью кнопки F12, F10 или Esc).
  4. Выберите внешний USB-накопитель для загрузки с USB.
  5. Теперь вы увидите меню, подобное приведенному ниже. Нажмите «Следующий».

 

установить дальшеПродолжить установку

 

    1. Нажмите «Установите сейчас».

       

      Установите сейчасУстановить Windows

 

    1. На следующем экране нажмите «У меня нет ключа продукта».

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

       

      установить ключ продуктаПродолжить без ввода ключа

 

    1. Выберите из списка редакцию Windows 11, которую вы хотите установить на это устройство. Когда выбрано, нажмите Следующий.

       

      Выберите выпуск Windows 11 для установкиВыберите выпуск Windows 11 для установки

 

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

       

      установить принятьПринять условия

 

    1. Выбирать “Выборочная: установка только Windows (дополнительно)».

      Теперь вас спросят, хотите ли вы обновить существующую ОС или выполнить выборочную установку. Поскольку это чистая и новая установка Windows 11, мы выберем «Обычай.

       

      установить кастомныйВыборочная установка

 

    1. Нажмите «Новый» и создайте разделы диска по своему усмотрению. Не забудьте иметь как минимум 40 ГБ свободного места на основном диске (C) для установки Windows.

       

      Создание разделов дискаСоздание разделов диска

       

      Нажмите «Новый», введите размер создаваемого раздела (в МБ), затем нажмите Применять.

    1. Если появится сообщение о создании дополнительного раздела, нажмите Хорошо.

       

      Подсказка автоматического создания дополнительных разделовПодсказка автоматического создания дополнительных разделов

 

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

       

      Выберите основной раздел для установки WindowsВыберите основной раздел для установки Windows

       

      Windows 11 начнет установку на ваше устройство. Этот шаг может занять несколько минут, и ваше устройство может перезагрузиться несколько раз.

Узнайте, как установить Windows 11 без подключения к Интернету или без учетной записи Microsoft.

Далее в процессе вам будет предложено настроить ваш компьютер через несколько экранов Out Of Box Experience (OOBE). Следуйте инструкциям на экране и настройте свой компьютер, и вы успешно установите Windows 11 версии 2023.

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

Завершение мыслей

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

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

Памятка по созданию Gitlab Pipelines

Шаблоны




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




1. Минимальный сценарий. Для небольших заданий, состоящих из пары заданий:




stages:
  - build

TASK_NAME:
  stage: build
  script:
    - ./build_script.sh




где:




  • stages — описание стадий нашего пайплайна. В данном примере, всего одна.



  • TASK_NAME — имя нашей задачи.

    • stage — стадия, к которой относится наше задание.



    • script — набор скриптов для выполнения.




2. Стандартный цикл при сборке. Обычно, процесс CI/CD включает следующие шаги:




  • Сборка пакета.



  • Тестирование.



  • Доставка.



  • Развертывание.




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




stages:
  - build
  - test
  - delivery
  - deploy

build-job:
  stage: build
  script:
    - echo "Start build job"
    - build-script.sh

test-job:
  stage: test
  script:
    - echo "Start test job"
    - test-script.sh

delivery-job:
  stage: delivery
  script:
    - echo "Start delivery job"
    - delivery-script.sh

deploy-job:
  stage: deploy
  script:
    - echo "Start deploy job"
    - deploy-script.sh




Задания




В данном разделе мы рассмотрим опции, которые могут применяться при описании задания. Общий синтаксис:




TASK_NAME>:
   OPTION1>: ...
   OPTION2>: ...




Мы перечислим лишь часто встречаемые опции. Полный список можно найти в официальной документации.




Stage





https://docs.gitlab.com/ee/ci/yaml/#stages




Опция указывает, к какой стадии относится задание. Например:




stages:
  - build
  - test

TASK_NAME:
  ...
  stage: build

TASK_NAME:
  ...
  stage: test




Сами же стадии описываются в общей директиве stages.




Также есть две стадии, которые не требуют предварительного определения в stages:




  • .pre — запускает до выполнения основных заданий конвейера.



  • .post — выполняется в конце, после выполнения основных заданий нашего пайплайна.




Например:




stages:
  - build
  - test

getVersion:
  stage: .pre
  script:
    - VERSION=$(cat VERSION_FILE")
    - echo "VERSION=${VERSION}" > variables.env
  artifacts:
    reports:
      dotenv: variables.env




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




Image







Задаем имя образа, если наше задание выполняется в контейнере docker:




TASK_NAME:
  ...
  image: debian:11




Before_script







Данная опция определяет список команд, которые должны выполняться перед опцией script и после получения артефактов.




TASK_NAME:
  ...
  before_script:
    - echo "Run before_script"




Script







Основная часть, где выполняются задания сценария, описана в опции script. Рассмотрим ее подробнее.




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




TASK_NAME:
  ...
  script:
    - command1
    - command2




2. Длинные команды, разбитые на несколько строк. Нам может потребоваться выполнить команды в виде скрипта (с операторами сравнения, например). В этом случае будет удобна многострочная запись. Ее можно указать разными способами.




Индикатор | :




TASK_NAME:
  ...
  script:
    - |
      command_line1
      command_line2




* для него каждая новая строка является переходом к новой команде или части оператора. По сути, это близко к логике скрипта shell.




Индикатор > :




TASK_NAME:
  ...
  script:
    - >
      command_line1
      command_line1_continue

      command_line2
      command_line2_continue




* данный индикатор интерпретирует новую команду после пустой строки.




After_script







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




TASK_NAME:
  ...
  script:
    ...
  after_script:
    - command1
    - command2




Artifacts







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




1. Например, так можно указать, какие файлы или каталоги будут артефактами:




TASK_NAME:
  ...
  artifacts:
    paths:
      - ${PKG_NAME}.deb
      - ${PKG_NAME}.rpm
      - *.txt
      - configs/




* в артефакты попадут все файлы, название которых заканчивается на txt, файлы ${PKG_NAME}.deb и ${PKG_NAME}.rpm, а также каталог configs. Где ${PKG_NAME} — переменная (подробнее о переменных ниже).




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




TASK_NAME_2:
  ...
  script:
    - cat *.txt
    - yum -y localinstall ${PKG_NAME}.rpm
    - apt -y install ./${PKG_NAME}.deb




2. Также мы можем передать системные переменные, которые были нами переданы в файл:




TASK_NAME:
  ...
  script:
    - echo -e "VERSION=1.1.1" > variables.env
  ...
  artifacts:
    reports:
      dotenv: variables.env




* в этом примере мы передадим системную переменную VERSION со значением 1.1.1 через файл variables.env.




3. При необходимости, мы можем исключить из списка определенные файлы по названию или маске:




TASK_NAME:
  ...
  artifacts:
    paths:
      ...
    exclude:
      - ./.git/**/*




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




Extends







Позволяет вынести часть сценария в отдельный блок и объединить его с заданием. Чтобы это лучше понять, рассмотрим конкретный пример:




.my_extend:
  stage: build
  variables:
    USERNAME: my_user
  script:
    - extend script

TASK_NAME:
  extends: .my_extend
  variables:
    VERSION: 123
    PASSWORD: my_pwd
  script:
    - task script




И так, в нашем задании TASK_NAME мы используем extends. В результате, задание примет такой вид:




TASK_NAME:
  stage: build
  variables:
    VERSION: 123
    PASSWORD: my_pwd
    USERNAME: my_user
  script:
    - task script




Что произошло:







Environment







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




TASK_NAME:
  ...
  environment:
    RSYNC_PASSWORD: rpass
    EDITOR: vi




Release







Публикует релиз на портале Gitlab для нашего проекта.




TASK_NAME:
  ...
  release:
    name: 'Release $CI_COMMIT_TAG'
    tag_name: '$CI_COMMIT_TAG'
    description: 'Created using the release-cli'
    assets:
      links:
        - name: "program-${VERSION}"
          url: "https://gitlab.com/master/project/-/jobs/${CI_JOB_ID}/artifacts/raw/program-${VERSION}.tar.gz"
  rules:
    - if: $CI_COMMIT_TAG




Директивы правил и ограничений




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




Rules







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




When







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




Needs







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




Правила и условия




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




Rules




Регламентирует различные правила, определенные с помощью:







1. Оператор if. Позволяем проверить условие, например, если переменная равна определенному значению:




TASK_NAME:
  ...
  rules:
    - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'




* в этом примере commit должен быть выполнен в branch по умолчанию.




2. Изменения затронули определенные файлы. Проверка выполняется с помощью опции changes.




В данном примере, файл script.sql:




TASK_NAME:
  ...
  rules:
    - changes:
        - script.sql




3. Несколько условий. Условий для начала выполнения задания может быть несколько. Рассмотрим несколько примеров.




а) При условии, что commit выполнен в branch по умолчанию И изменения затронули файл script.sql:




TASK_NAME:
  ...
  rules:
    - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
      changes:
        - script.sql




б) При условии, что commit выполнен в branch по умолчанию ИЛИ изменения затронули файл script.sql




TASK_NAME:
  ...
  rules:
    - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
    - changes:
        - script.sql




4. Проверка на существование файла. Определяется с помощью exists:




TASK_NAME:
  ...
  rules:
    - exists:
        - script.sql




* задание будет выполняться только в случае присутствия файла script.sql.




5. Разрешить сбой задания. Задается с помощью allow_failure:




TASK_NAME:
  ...
  rules:
    - allow_failure: true




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




6. Определение переменной в зависимости от условия. Для этого используются вместе if и variables:




TASK_NAME:
  ...
  rules:
    - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
      variables:
        DEPLOY_VARIABLE: "production"
    - if: '$CI_COMMIT_BRANCH =~ demo'
      variables:
        DEPLOY_VARIABLE: "demo"




When




Определяет условия запуска задания. Возможные значения:







Разберем примеры.




1. Manual:




TASK_NAME:
  ...
  when: manual




* задание не начнет выполняться, пока мы не нажмем кнопку запуска в GitLab CI/CD.




2. Always:




TASK_NAME:
  ...
  when: always




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




3. On_failure:




TASK_NAME:
  ...
  on_failure: always




* задание будет выполняться при наличии ошибки на ранних этапах. Можно использовать для отправки уведомления.




4. Delayed:




TASK_NAME:
  ...
  when: delayed
  start_in: 30 minutes




* запуск задания будет отложен на 30 минут.




5. Never:




TASK_NAME:
  ...
  when: never




* задание не будет выполняться.




6. Использование вместе с if:




TASK_NAME:
  ...
  rules:
    - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
      when: manual




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




Needs




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




Рассмотрим примеры.




1. Artifacts. Принимает значение true (по умолчанию) и false. Для запуска задания нужно, чтобы на предыдущих этапах были загружены артефакты. Запись:




TASK_NAME:
  ...
  needs:
    - artifacts: false




… позволяет начать выполнение задания без этого.




2. Job. Позволяет начать выполнение задачи только после завершения другого задания:




TASK_NAME:
  ...
  needs:
    - job: createBuild




* в нашем примере задача начнет выполняться не раньше завершения задачи с названием createBuild.




Переменные




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




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




Задаются с помощью директивы variables.




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




variables:
  PKG_VER: "1.1.1"




Или для конкретного задания:




TASK_NAME:
  ...
  variables:
    PKG_VER: "1.1.1"




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




  script:
    - echo ${PKG_VER}




Переменные Gitlab




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




ПЕРЕМЕННАЯОПИСАНИЕПРИМЕР
LOG_LEVELОпределяет уровень журнала. Варианты: debug, info, warn, error, fatal, и panic. Имеет более низкий приоритет, по сравнению с аргументами командной строки —debug, —log-level.LOG_LEVEL: warning
CI_DEBUG_TRACEВключение или отключение ведения журнала отладки. Принимает значения true или false.CI_DEBUG_TRACE: true
CONCURRENTОграничивает количество заданий, которые могут выполняться одновременно.CONCURRENT: 5
GIT_STRATEGYСпособ загрузки файлов из репозитория. Возможны варианты: clone, fetch, и none (не загружать).GIT_STRATEGY: none




Дополнительные параметры




В данном разделе мы рассмотрим различные опции, которые не вошли в другие разделы.




1. Workflow. Позволяем задать общие правила запуска для всего конвейера. Рассмотрим пример с официального сайта:




workflow:
  rules:
    - if: $CI_COMMIT_TITLE =~ /-draft$/
      when: never
    - if: $CI_PIPELINE_SOURCE == "merge_request_event"
    - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH




В данном примере конвейер:







2. Значения по умолчанию. Задаются в директиве default. Опции с данными значениями будут использоваться во всех заданиях или могут быть переопределены на уровне конкретного задания.




Пример:




default:
  image: centos:7
  tags:
    - ci-test




* мы определили опцию с именем образа (например, образа docker) и тег (теги могут быть необходимы для запуска некоторых runner).




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




а) подключение локального файла (local):




include:
  - local: .gitlab/ci/build.yml




б) коллекции шаблонов (template):




include:
  - template: Custom/.gitlab-ci.yml




* в данном примере мы подключим к нашему сценарию содержимое файла Custom/.gitlab-ci.yml.




в) внешний файл доступный по HTTP (remote):




include:
  - remote: 'https://gitlab.dmosk.ru/main/build.yml'




г) другой проект:




include:
  - project: 'public-project'
    ref: main
    file: 'build.yml'




4. !reference tags. Позволяет описать сценарий и повторно его использовать для разных стадий и задач нашего CI/CD.




Например:




.apt-cache:
  script:
    - apt update
  after_script:
    - apt clean all

install:
  stage: install
  script:
    - !reference [.apt-cache, script]
    - apt install nginx

update:
  stage: update
  script:
    - !reference [.apt-cache, script]
    - apt upgrade
    - !reference [.apt-cache, after_script]




* давайте разберемся, что происходит в нашем примере.







Источник: https://kuzevanov.ru/devops/памятка-по-созданию-gitlab-pipelines.html



Примеры запросов к метрикам Prometheus

Данную инструкцию можно использовать как шпаргалку для работы с Prometheus в части, касающейся выборки данных (использование PromQL). Мы попробуем описать процесс получения данных, а также будут приведены примеры извлечения наиболее значимых показателей.




Синтаксис запросов




Рассмотрим синтаксис некоторых функций, которые мы будем использовать в нашей инструкции. Проверять все наши запросы можно в веб-интерфейсе прометеуса на странице /graph.




irate или rate




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




irate(<запрос на выборку метрики>[интервал времени, на протяжении которого происходят изменения метрики])




avg by




Среднее значение по условию, например:




avg by (instance)




… среднее для каждого инстанса.




avg_over_time




Среднее значение всех значений для метрик в указанном интервале.




avg_over_time(<запрос на выборку метрики>[интервал])




sum




Функция суммирует полученные результаты:




sum(<запрос на получение значений>)




time




Отображает время в формате UNIX TIME.




time()




count




Считает количество значений:




count(<запрос на получение значений>)




Вместе с by значения могут фильтроваться:




count(<запрос на получение значений>) by (<по какому показателю>)




Арифметические операции




1. С полученными числовыми данными можно выполнять различные математические операции. Например, если мы получим значения времени в секундах, то можно его перевести в часы:




<полученное время> / 60




Или наоборот




<полученное время> * 60




2. Полученный остаток от процентного показателя вычистяется по формуле:




100 - <полученный процент>




Системная информация




Для начала рассмотрим примеры получения общих системных показателей.




Время работы системы (uptime)




Расчет ведется относительно показателя node_boot_time_seconds (время последнего включения системы).




1. Общее время для всех узлов:




sum(time() - node_boot_time_seconds{})




sum(time() - node_boot_time_seconds{}) / 60




* первый запрос в секундах, второй — в минутах.




2. Для некоторых узлов:




sum(time() - node_boot_time_seconds{instance=~"192.168.0.15:9100|192.168.0.20:9100"})




* в данном примере мы получим сумму значений для узлов 192.168.0.15 и 192.168.0.20.




3. Для всех узлов по отдельности:




time() - node_boot_time_seconds{}




* данный запрос выведет на экран несколько значений для каждого из узлов.




Температура




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




1. Для всех нод:




node_hwmon_temp_celsius




2. Для конкретных:




node_hwmon_temp_celsius{instance=~'192.168.0.15:9100|192.168.0.20:9100'}




Процессор




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




Количество процессоров




1. Общее количество всех процессоров всех узлов:




sum(count(node_cpu_seconds_total{mode='system'}) by (cpu))




2. Для некоторых инстансов:




sum(count(node_cpu_seconds_total{instance=~'192.168.0.15:9100|192.168.0.20:9100',mode='system'}) by (cpu))




* для 192.168.0.15 и 192.168.0.20.




3. По отдельности:




count(node_cpu_seconds_total{mode='system'}) by (instance)




Нагрузка




1. На все ядра всех узлов:




(irate(node_cpu_seconds_total{job="node_exporter_clients",mode="idle"}[5m])) * 100




100 - ((irate(node_cpu_seconds_total{job="node_exporter_clients",mode="idle"}[5m])) * 100)




* первый запрос для отображения процента свободного процессорного времени, второй — процент утилизации.




Пример ответа:




{cpu="0", instance="192.168.0.15:9100", job="node_exporter_clients", mode="idle"} 0.6000000238418579
{cpu="0", instance="192.168.0.20:9100", job="node_exporter_clients", mode="idle"} 0.9999999403953552
{cpu="1", instance="192.168.0.15:9100", job="node_exporter_clients", mode="idle"} 0.6000000238418579
{cpu="1", instance="192.168.0.20:9100", job="node_exporter_clients", mode="idle"} 1.5999999642372131
{cpu="2", instance="192.168.0.15:9100", job="node_exporter_clients", mode="idle"} 0.8000000193715096
{cpu="2", instance="192.168.0.20:9100", job="node_exporter_clients", mode="idle"} 0.8000001311302185
{cpu="3", instance="192.168.0.15:9100", job="node_exporter_clients", mode="idle"} 1.0000000149011612
{cpu="3", instance="192.168.0.20:9100", job="node_exporter_clients", mode="idle"} 0.6000000238418579
{cpu="4", instance="192.168.0.15:9100", job="node_exporter_clients", mode="idle"} 0.19999999552965164
{cpu="4", instance="192.168.0.20:9100", job="node_exporter_clients", mode="idle"} 0.2000001072883606
{cpu="5", instance="192.168.0.15:9100", job="node_exporter_clients", mode="idle"} 0.40000002831220627
{cpu="5", instance="192.168.0.20:9100", job="node_exporter_clients", mode="idle"} 0.3999999165534973
{cpu="6", instance="192.168.0.15:9100", job="node_exporter_clients", mode="idle"} 0.6000000238418579
{cpu="6", instance="192.168.0.20:9100", job="node_exporter_clients", mode="idle"} 0.2000001072883606
{cpu="7", instance="192.168.0.15:9100", job="node_exporter_clients", mode="idle"} 0.19999999552965164
{cpu="7", instance="192.168.0.20:9100", job="node_exporter_clients", mode="idle"} 0.3999999165534973




2. Средняя величина по ядрам для всех узлов:




avg by (instance)(irate(node_cpu_seconds_total{job="node_exporter_clients",mode="idle"}[5m])) * 100




100 - (avg by (instance)(irate(node_cpu_seconds_total{job="node_exporter_clients",mode="idle"}[5m])) * 100)




* первый запрос для отображения процента свободного процессорного времени, второй — процент утилизации.




Пример ответа:




{instance="192.168.0.15:9100"} 0.7999999960884452
{instance="192.168.0.20:9100"} 0.9500000253319598




3. Средняя величина по ядрам для конкретного узла:




avg by (instance)(irate(node_cpu_seconds_total{instance="192.168.0.15:9100",job="node_exporter_clients",mode="idle"}[5m])) * 100




100 - (avg by (instance)(irate(node_cpu_seconds_total{instance="192.168.0.15:9100",job="node_exporter_clients",mode="idle"}[5m])) * 100)




* первый запрос для отображения процента свободного процессорного времени, второй — процент утилизации.




Пример ответа:




{instance="192.168.0.15:9100"} 1.100000003352747




Время ожидания




Запрос показывает значение в процентном эквиваленте для времени ожидания процессора. На практике, идеально, когда он равен нулю.




1. Среднее значение за 30 минут для всех узлов:




avg(irate(node_cpu_seconds_total{mode="iowait"}[30m])) * 100




2. Для конкретного узла:




avg(irate(node_cpu_seconds_total{instance=~"192.168.0.15:9100|192.168.0.20:9100",mode="iowait"}[30m])) * 100




3. Отдельно по каждой ноде:




irate(node_cpu_seconds_total{mode="iowait"}[30m]) * 100




Оперативная память




Для наших запросов мы будем использовать метрики:




  • node_memory_MemTotal_bytes.



  • node_memory_MemFree_bytes.



  • node_memory_Cached_bytes.



  • node_memory_Buffers_bytes.




Рассмотрим примеры.




Объем памяти




1. Для всех узлов:




sum(node_memory_MemTotal_bytes{})




2. Для некоторых:




sum(node_memory_MemTotal_bytes{instance=~"192.168.0.15:9100|192.168.0.20:9100"})




3. По отдельности:




node_memory_MemTotal_bytes{}




Использование памяти




1. Свободно:




100 * (1 - ((avg_over_time(node_memory_MemFree_bytes[5m]) + avg_over_time(node_memory_Cached_bytes[5m]) + avg_over_time(node_memory_Buffers_bytes[5m])) / avg_over_time(node_memory_MemTotal_bytes[5m])))




2. Занято:




100 * ((avg_over_time(node_memory_MemFree_bytes[5m]) + avg_over_time(node_memory_Cached_bytes[5m]) + avg_over_time(node_memory_Buffers_bytes[5m])) / avg_over_time(node_memory_MemTotal_bytes[5m]))




Пример ответа:




{instance="192.168.0.15:9100", job="node_exporter_clients"} 41.96494651116369
{instance="192.168.0.20:9100", job="node_exporter_clients"} 10.573695601658944




Сеть




Мы будем использовать метрики:




  • node_network_receive_bytes_total



  • node_network_transmit_bytes_total




Примеры ниже.




Передача данных




1. Входящий трафик за последние 5 минут:




rate(node_network_receive_bytes_total[5m]) * 8 / 1024 / 1024




2. Иcходящий трафик за последние 5 минут:




rate(node_network_transmit_bytes_total[5m]) * 8 / 1024 / 1024




Дисковый накопитель




Используемые метрики:




  • node_filesystem_size_bytes.



  • node_filesystem_avail_bytes.



  • node_filesystem_free_bytes.



  • node_disk_read_bytes_total.



  • node_disk_written_bytes_total.




Переходим к примерам.




Объемы




1. Объем разделов:




node_filesystem_size_bytes{instance=~'192.168.0.15:9100|192.168.0.20:9100',fstype=~"ext4|xfs"}




node_filesystem_size_bytes{fstype=~"ext4|xfs"}




* для конкретных нод или всех.




2. Объем доступного пространства:




node_filesystem_avail_bytes {fstype=~"ext4|xfs"}




3. Объем в процентах.




Используется:




1 - (node_filesystem_free_bytes{fstype=~"ext4|xfs"} / node_filesystem_size_bytes{fstype=~"ext4|xfs"})




Свободно:




node_filesystem_free_bytes{fstype=~"ext4|xfs"} / node_filesystem_size_bytes{fstype=~"ext4|xfs"}




Нагрузка




1. Чтение в килобайтах:




rate(node_disk_read_bytes_total{instance="Server10:9100", device="sda"}[5m]) / 1024




irate(node_disk_read_bytes_total{}[30m]) / 1024




* для конкретного сервера / диска и для всех серверов и всех дисков.




2. Запись в килобайтах:




rate(node_disk_written_bytes_total{instance="Server10:9100", device="sda"}[5m]) / 1024




irate(node_disk_written_bytes_total{}[30m]) / 1024




* для конкретного сервера / диска и для всех серверов и всех дисков.




Источник: https://www.dmosk.ru/miniinstruktions.php?mini=prometheus-request



2023-09-04T23:27:41
Software

Функция Onclick на Javascript

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

 

Что такое функция onClick Javascript?

Функция onclick — это обработчик событий в JavaScript, который используется для реагирования на конкретное событие — щелчок мышью по определенному HTML-элементу. Это событие может запускаться, когда пользователь нажимает на кнопку, ссылку, изображение или практически любой другой интерактивный элемент на веб-странице. Когда происходит событие onclick, выполняется связанный код JavaScript, позволяющий разработчикам определять пользовательские действия или поведение в ответ на взаимодействие пользователя.

 

Базовое использование и синтаксис функции onClick на Javascript

Синтаксис функции onclick предполагает ассоциирование ее с HTML-элементом в качестве атрибута. Вот простой пример

<button onclick="myFunction()">Кликни меня</button>

 

В этом примере при нажатии на кнопку будет вызвана функция myFunction(). Сама функция может содержать любой код JavaScript, начиная от простых предупреждающих сообщений и заканчивая сложными операциями, которые управляют содержимым, стилем или структурой веб-страницы.

 

Определение функций для события onclick в Javascript

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

<script>

function myFunction() {

    alert("Кнопка нажата!");

}

</script>

<button onclick="myFunction()">Кликни меня</button>

 

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

 

Динамическая обработка событий функции onClick на Javascript

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

<button id="myButton">Кликни меня</button>

<script>

document.getElementById("myButton").onclick = function() {

    alert("Кнопка нажата!");

};

</script>

Различные способы использования функции onClick Javascript

Различные методы использования функции onClick Javascript раскрывают каждый из этих различных методов обработки события onclick Javascript с более подробными объяснениями и примерами

1. Встроенная обработка событий (атрибут HTML)

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

<button onclick="alert('Кнопка нажата!')">Кликни меня</button>

2. Встроенная обработка событий с помощью вызова функции (атрибут HTML)

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

<button> onclick="myFunction()"> Нажмите меня</button>

<script>

function myFunction() {

alert("Кнопка нажата!");

}

</script>

3. Использование свойства onclick в JavaScript

Здесь JavaScript используется для прямой установки свойства onclick элемента в функцию. Этот метод позволяет вам в некоторой степени разделить ваш HTML-код и JavaScript-код.

<button id="myButton">Кликни меня</button>

<script>

document.getElementById("myButton").onclick = function() {

    alert("Кнопка нажата!");

};

</script>

4. Использовать метод addEventListener

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

<button id="myButton">Кликни меня</button>

<script>

document.getElementById("myButton").addEventListener("click", function() {

    alert("Кнопка нажата!");

});

</script>

 

5. Использование именованной функции с addEventListener

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

<button id="myButton">Кликни меня</button>

<script>

function myFunction() {

    alert("Кнопка нажата!");

}

document.getElementById("myButton").addEventListener("click", myFunction);

</script>

6. Использование объекта Event

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

<button id="myButton">Кликни меня</button>

<script>

document.getElementById("myButton").addEventListener("click", function(event) {

    alert("Кнопка нажата! Event type " + event.type);

});

</script>

Рекомендации и рекомендации по использованию функции onClick в Javascript

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

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

Производительность Чрезмерное использование встроенных атрибутов onclick может загромождать ваш HTML-код и привести к снижению эффективности кода. Централизация обработки событий с помощью сценариев может сделать вашу кодовую базу более организованной и ее легче оптимизировать.

 

Заключение

Функция onClick Javascript служит шлюзом для интерактивной веб-разработки. Используя этот обработчик событий, разработчики могут динамически реагировать на клики пользователя, способствуя привлекательному взаимодействию с пользователем. От простых предупреждающих сообщений до сложных взаимодействий с контентом и дизайном функция onclick является основополагающим инструментом, который позволяет веб-разработчикам создавать насыщенные и интерактивные веб-страницы. Однако, хотя ее простота и удобство могут быть заманчивыми, важно соблюдать баланс между интерактивностью, удобством сопровождения и доступностью для полноценного пользовательского интерфейса.

 

Часто задаваемые вопросы (FAQs)

Вот некоторые из часто задаваемых вопросов о функции onClick Javascript.

Q1. Что такое событие onclick в JavaScript?

Событие onclick — это событие JavaScript, которое возникает, когда пользователь нажимает на определенный HTML-элемент, такой как кнопка, ссылка или изображение. Она позволяет разработчикам определять пользовательские действия или поведение, которые должны выполняться при нажатии на элемент.

Q2. Как работает событие onclick?

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

Вопрос 3. Каковы преимущества использования addEventListener по сравнению со встроенным onclick?

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

Q4. Могу ли я прикрепить несколько прослушивателей событий к одному и тому же элементу?

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

Q5. Как объекты событий работают с событием onclick?

Когда происходит событие, подобное onclick, объект event автоматически создается и передается функции-обработчику событий. Этот объект содержит информацию о событии, такую как тип события, целевой элемент и любые дополнительные данные, связанные с событием. Вы можете получить доступ к этому объекту в качестве параметра в функции обработчика событий, чтобы получить представление о контексте события.



2023-09-04T20:00:08
Программирование

2 способа установки Windows 11 23H2 в обход требований TPM + безопасной загрузки

  • По умолчанию для установки Windows 11 23H2 требуется TPM 2.0, безопасная загрузка, не менее 4 ГБ ОЗУ и 64 ГБ встроенной памяти.
  • Чтобы обойти эти требования и установить Windows 11 23H2, вы можете использовать последнюю версию утилиты Rufus или внести изменения в реестр Windows еще до установки ОС.

Когда Microsoft выпустила исходную версию Windows 11, она установила некоторые очень специфические системные требования, которым необходимо было соответствовать для установки или обновления до Windows 11 с любой предыдущей ОС. Эти требования включают TPM 2.0, безопасную загрузку, более 4 ГБ ОЗУ, минимум 2 ядра ЦП и т. д. Однако не каждый компьютер может соответствовать этим требованиям, особенно если у вас ограниченный бюджет.

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

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

Системные требования Windows 11 23H2

Windows 11 23H2 имеет те же системные требования, что и исходная версия. Прежде чем вы планируете обновить свою текущую ОС до Windows 11 23H2, рекомендуется проверить, поддерживает ли ее оборудование по умолчанию или вам нужно обойти требования.

Это список основных системных требований Windows 11 23H2:

  • Процессор: Процессор с тактовой частотой 1 ГГц или выше или система на кристалле (SoC) с двумя или более ядрами.
  • БАРАН: Минимум 4 ГБ.
  • Жесткий диск: 64 ГБ или больше.
  • Прошивка системы: UEFI, поддержка безопасной загрузки.
  • ТПМ: Доверенный платформенный модуль (TPM) версии 2.0.
  • Графика: Совместим с DirectX 12 или более поздней версии с драйвером WDDM 2.0.
  • Разрешение экрана: Дисплей высокой четкости (720p) с диагональю более 9 дюймов, 8 бит на цветовой канал.
  • Сеть: Учетная запись Microsoft и подключение к Интернету.

Эти характеристики означают, что не на все компьютеры можно будет установить Windows 11 23H2 «как есть». Им придется либо воспользоваться этим, обновить свое оборудование, либо обойти эти требования. Последнее кажется лучшим выбором, если у вас нет средств на обновление оборудования, а безопасность системы не является вашей главной заботой (в случае тестовых сред).

Однако, если вы хотите обновить свое оборудование, вам понадобится один из следующих поддерживаемых процессоров:

  • (Процессоры, поддерживаемые Intel) (полный список здесь)

    • 8-е поколение (Кофейное озеро).
    • 9-е поколение (Coffee Lake Refresh).
    • 10-е поколение (Кометное озеро и Ледяное озеро).
    • 11-е поколение (Рокет-Лейк и Тайгер-Лейк).
    • 12-й генерал (Ольховое озеро).
    • 13-е поколение (Озеро Раптор).
    • Пентиум – золото и серебро.
    • Xeon — Skylake-SP, Cascade Lake-SP, Cooper Lake-SP, Ice Lake-SP

  • (Процессоры, поддерживаемые AMD) (полный список здесь)

    • Ryzen 2000, 3000, 4000, 5000, 6000, 7000 (включая чипы 3D V-кэша).
    • Ryzen Threadripper Pro 59xxWX.
    • Ryzen Embedded V25xx и V27xx.
    • EPYC 2-го и 3-го поколения.
    • Атлон — золото, серебро, 3ххх, 300х.

  • (Процессоры с поддержкой Qualcomm) (полный список здесь)

    • Snapdragon 850.
    • Snapdragon 7c.
    • Snapdragon 8c.
    • Snapdragon 8cx.
    • Snapdragon 8cx (Gen2).
    • Microsoft SQ1.
    • Майкрософт SQ2.

Помимо этих требований, существуют и другие ограничения Microsoft, которые вам необходимо преодолеть, чтобы иметь возможность установить Windows 11 23H2 обычными методами, например, минимум 4 ГБ ОЗУ и не менее 64 ГБ свободного места на жестком диске. . Однако TPM 2.0 и безопасная загрузка — это два требования, которые нельзя нарушить.

Проверьте, доступен ли TPM 2.0.

Начните с проверки наличия на вашем компьютере набора микросхем TPM 2.0, выполнив следующие действия:

  1. нажмите Клавиша Windows + Р чтобы открыть окно «Выполнить команду».

  2. Введите “tpm.msc» и нажмите Входить чтобы открыть консоль управления TPM.

  3. Здесь найдите статус TPM в Положение дел раздел. Вы также найдете его версию в Информация производителя TPM.

    Проверьте состояние и версию TPM с консоли TPM.Проверьте состояние и версию TPM в консоли TPM.

Если вы обнаружите, что Положение дел говорит: «TPM готов к использованию», это означает, что он доступен и включен. Однако, если вы обнаружите надпись «Совместимый TPM не найден.Это означает, что либо TPM недоступен, либо присутствует, но отключен в настройках встроенного ПО BIOS/UEFI системы.

Узнайте о других методах проверки доступности TPM.

Включить доверенный платформенный модуль

Если вы обнаружите, что TPM отключен, вам необходимо включить его в настройках UEFI. Вот как:

  1. нажмите Ключ Windows + я чтобы открыть приложение настроек Windows.

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

    Система >> Восстановление

  3. Нажмите «Перезагрузить сейчас” перед “Расширенный запуск».

    Перезагрузите компьютер для расширенного запуска.Перезагрузите компьютер для расширенного запуска.

  4. Во всплывающем окне подтверждения нажмите «Перезагрузить сейчас” снова.

    Подтвердите перезагрузку для расширенного запускаПодтвердите перезагрузку для расширенного запуска

    Компьютер запустится, а затем загрузится в среду восстановления Windows (WinRE).

  5. Нажмите Устранение неполадок.

    Нажмите Дополнительные параметры.Нажмите Дополнительные параметры.

  6. Затем нажмите «Расширенные настройки».

    Нажмите Дополнительные параметры.Нажмите Дополнительные параметры.

  7. Нажмите «Настройки прошивки UEFI».

    Введите настройки прошивки UEFIВведите настройки прошивки UEFI

  8. Теперь нажмите Перезапуск.

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

    Компьютер снова перезагрузится.

  9. Теперь перейдите к любому Передовой, Безопасностьили Ботинок настройки. Это зависит от того, какая у вас материнская плата.

  10. Выберите ТРМ 2.0 вариант и выберите «Включено» и «TPM включен” параметры.

    Включить TPM из прошивкиВключить TPM из прошивки

Если вы обнаружите, что опция TPM 2.0 отсутствует или не может быть включена, скорее всего, она недоступна на вашей материнской плате. Однако, если проблема в чем-то другом, попробуйте эти методы устранения неполадок TPM.

Проверьте безопасную загрузку

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

  1. нажмите Клавиша Windows + Р чтобы открыть окно «Выполнить команду».

  2. Введите “msinfo23» и нажмите Входить.

  3. в Обзор системы вкладку, проверьте информацию перед «Состояние безопасной загрузки».

    Проверьте состояние безопасной загрузки в разделе «Информация о системе».Проверьте состояние безопасной загрузки в разделе «Информация о системе».

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

Если вы подтвердили, что и TPM 2.0, и безопасная загрузка доступны и включены, только тогда вы сможете приступить к установке Windows 11 23H2 обычными методами. Однако если какой-либо из вариантов недоступен или включен, вам необходимо установить Windows 11 23H2, минуя системные требования, используя методы, описанные ниже.

Установка Windows 11 23H2 на неподдерживаемое оборудование

Если вы попытаетесь установить Windows 11 23H2 или любую версию Windows 11 на компьютер, который не соответствует системным требованиям, вы не сможете установить или обновить ее обычными методами. Вместо этого при попытке установки вы увидите сообщение об ошибке, подобное следующему:

На этом компьютере не поддерживается Windows 11. Этот компьютер не соответствует минимальным системным требованиям для установки этой версии Windows.

Windows 11 23H2 не устанавливаетсяWindows 11 23H2 не устанавливается

Если это так, вы можете выполнить одно из следующих решений, чтобы обойти эти системные требования и продолжить установку Windows 11 23H2 без обновления оборудования.

Обход ограничений установки Windows 11 23H2

Обход требований TPM и безопасной загрузки из реестра Windows

Чтобы обойти системные требования TPM 2.0 и Secure Boot при установке Windows 11 23H2, выполните следующие действия:

  1. Начните с загрузки ISO-образа Windows 11 23H2.

  2. Продолжайте создавать загрузочный USB-накопитель или используйте Ventoy для создания мультизагрузочного USB-накопителя.

  3. Загрузитесь с загрузочной флешки и нажмите Следующий на первом экране установки Windows.

    Приступаем к установке Windows 11 23H2.Приступаем к установке Windows 11 23H2.

  4. Нажмите «Установите сейчас».

    Установить WindowsУстановить Windows

  5. Нажмите «У меня нет ключа продукта».

    Продолжить без ключа продуктаПродолжить без ключа продукта

    Даже если у вас есть ключ продукта, вы можете использовать его для активации Windows позже.

  6. Выберите одну из редакций Windows и нажмите Следующий.

    Выберите изданиеВыберите издание

  7. На экране ошибки нажмите кнопку Шифт + Ф10 клавиши одновременно, чтобы открыть командную строку.

    Откройте командную строку на экране ошибкиОткройте командную строку на экране ошибки.

  8. Введите “regedit» и нажмите Входить чтобы открыть редактор реестра.

    Откройте редактор реестраОткройте редактор реестра

  9. В редакторе реестра перейдите по следующему пути на левой панели:

    КомпьютерHKEY_LOCAL_MACHINESYSTEMSetup

  10. Щелкните правой кнопкой мыши «Настраивать,” расширять Новыйи нажмите Ключ. Назовите этот ключ «ЛабКонфиг».

    Создайте ключ LabConfig в разделе «Настройка».Создайте ключ LabConfig в разделе «Настройка».

  11. Щелкните правой кнопкой мыши «ЛабКонфиг,” расширять Новыйи нажмите «Значение DWORD (32-битное)». Назовите это DWORD «ОбходTPMCheck«.

  12. Повторите шаги еще раз и создайте еще один DWORD в ЛабКонфиг ключ с именем «Обход SecureBootCheck».

    Создайте DWORD для обхода проверок Secure Boot и TPM.Создайте DWORD для обхода проверок Secure Boot и TPM.

  13. Дважды щелкните оба этих DWORD и измените их. Данные о значении к “1«.

    Измените значение данных для DWORD на 1.Измените значение данных для DWORD на 1.

  14. Закройте редактор реестра и окна командной строки.

  15. Нажмите кнопку «Назад» в мастере установки Windows.

    Вернитесь к выбору редакции Windows.Вернитесь к выбору редакции Windows

  16. Теперь снова выберите версию Windows и нажмите Следующий.

    Выберите издание еще разВыберите издание еще раз

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

Примечание: Остальные шаги типичны для всех современных установок Windows.

Обход требований TPM и безопасной загрузки с помощью Rufus

Руфус, полное имя которого «The рнадежный тыСБ Фформатирование тыплитка, с СOurce» — это утилита с открытым исходным кодом для операционной системы Windows, которая позволяет изменять и создавать ISO-образы операционной системы Windows. Этот инструмент теперь также включает параметры, которые вы можете выбрать, которые создадут загрузочный USB-накопитель, на котором системные требования Windows 11 23H2 уже обойдены.

Выполните следующие действия, чтобы обойти требования TPMm Secure to и RAM с помощью Rufus:

  1. Открой сайт Руфуса и нажмите на последнюю версию Rufus, чтобы загрузить ее.

    Загрузите последнюю версию RufusЗагрузите последнюю версию Rufus

  2. Подключите USB-накопитель к ПК и запустите Rufus.

  3. В Rufus убедитесь, что USB-накопитель выбран в раскрывающемся меню под Устройство.

    Выберите USB-накопительВыберите USB-накопитель

  4. Нажмите Выбирать а затем выберите ISO-файл Windows 11 23H2.

    Выберите ISO-файл Windows 11 23H2.Выберите ISO-файл Windows 11 23H2.

  5. Убедитесь, что остальные настройки следующие:

    • Вариант изображения: Стандартная установка Windows
    • Схема раздела: GPT
    • Целевая система: UEFI (не CSM)
    • Файловая система: NTFS
    • Размер кластера: значение по умолчанию
    • Выбирать: «Быстрое форматирование» и «Создание расширенных файлов этикеток и значков»

  6. Нажмите Начинать.

    Нажмите «Пуск».Нажмите «Пуск».

  7. Во всплывающем окне выберите следующие параметры и отмените выбор всех остальных:

    • Удалите требование к 4 ГБ+ ОЗУ, безопасной загрузке и TPM 2.0.
    • Удалить требование наличия онлайн-учетной записи Microsoft

    После выбора нажмите Хорошо.

    Обход системных требований Windows 11 23H2 с помощью RufusОбход системных требований Windows 11 23H2 с помощью Rufus

  8. Во всплывающем окне с предупреждением нажмите Хорошо.

Теперь Rufus отформатирует USB-накопитель и создаст загрузочный диск Windows 11 23H2, который будет автоматически обходить требования TPM 2.0, Secure Boot и RAM. Когда вы приступите к установке Windows с помощью этого диска, никаких дополнительных действий не потребуется.

Заключение

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

Таким образом, вы можете безопасно обойти требования TPM 2.0 и Secure Boot, используя любой из двух методов, описанных выше. Обход минимальных требований Windows 11 с использованием метода реестра Windows позволяет вам обойти только безопасную загрузку и требования TPM, тогда как с помощью Rufus вы можете обойти оба этих требования, а также ограничения по минимальному объему оперативной памяти.



2023-09-04T16:28:18
Tips and Tricks

Алгоритм Blowfish с примерами на Java

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

 

Что такое алгоритм Blowfish?

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

Алгоритм Blowfish с примерами

 

Особенности алгоритма Blowfish

Вот некоторые особенности алгоритма Blowfish.

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

2. Блочный шифр: Blowfish работает с блоками данных фиксированного размера. Стандартный размер блока составляет 64 бита, но он может работать и с блоками меньшего размера. Если входные данные не кратны размеру блока, к данным обычно применяется дополнение перед шифрованием.

3. Ключ переменной длины: Одной из уникальных особенностей Blowfish является его способность принимать ключи шифрования переменной длины, что делает его адаптируемым к различным требованиям безопасности. Длина ключа может варьироваться от 32 до 448 бит, и она расширяется во время шифрования для генерации серии подразделов.

4. Структура сети Фейстеля. В Blowfish используется структура сети Фейстеля, в которой данные разделяются на две половины, подвергаются серии раундов операций, а затем рекомбинируются. Эта структура обеспечивает эффективные процессы шифрования и дешифрования.

5. F-функция: F-функция является основным компонентом алгоритма Blowfish. Он включает в себя комбинацию операций XOR (исключающее ИЛИ), подстановки и перестановки, которые вносят вклад в надежность и безопасность алгоритма.

6. Расширение ключа: Перед фактическим процессом шифрования Blowfish генерирует серию подразделов на основе предоставленного ключа. Эти подразделы используются во время раундов шифрования и дешифрования для повышения сложности и безопасности.

7. Сложность и безопасность: Blowfish разработан с высокой степенью защиты от различных криптографических атак. Сложная F-функция и процесс расширения ключа делают его устойчивым к грубой силе и дифференциальному криптоанализу.

 

Как работает алгоритм Blowfish?

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

1. Генерация ключа и создание подраздела

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

Инициализация массива P и блоков S:

Blowfish использует комбинацию pi (шестнадцатеричных цифр числа π) и серию блоков S (полей подстановки) для инициализации своих внутренних структур данных.

Расширение ключа:

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

2. Шифрование данных

Как только подразделы сгенерированы, алгоритм переходит к шифрованию блока данных. Блок данных разделяется на две 32-битные половины, L (слева) и R (справа). Для обеспечения надежного шифрования на этих половинах выполняется серия раундов (обычно 16).

Сетевые раунды Фейстеля:

Алгоритм использует структуру сети Фейстеля, которая включает в себя применение серии операций к таймам L и R в каждом раунде. Эти операции включают в себя XOR (исключающее ИЛИ) с текущим подразделом, применение функции F к R и замену L и R.

Работа функции F

Функция F принимает 32-битную R половину и применяет несколько шагов

к подразделу X для того, чтобы текущий подраздел xorировался с R.

Подстановка R делится на четыре 8-битные четверти. Каждый квартал используется для индексации определенного S-блока, и результирующие значения объединяются.

Перестановка Результаты из S-блоков объединяются и преобразуются с использованием массива P.

Алгоритм Blowfish с примерами

 

Этот шаг вносит путаницу и диффузию, важнейшие компоненты криптографической безопасности.

Заключительный раунд После выполнения всех раундов результирующие L и R половины меняются местами в последний раз.

3. Расшифровка данных

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

 

Раунды сети Фейстеля (расшифровка)

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

  1. Операция с функцией F (расшифровка) Функция F применяется в обратном порядке, при этом шаги подраздела XOR и блока S инвертируются. Эта обратная операция успешно расшифровывает блок данных.
  2. Заключительный раунд (дешифрование) После всех раундов дешифрования расшифрованные половинки L и R объединяются для получения исходного блока данных.

 

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

 

Кодовая реализация алгоритма Blowfish на Java

Ниже приведен простой фрагмент кода Java, демонстрирующий алгоритм шифрования и дешифрования Blowfish.

import javax.crypto.*;

import java.security.*;



public class BlowfishExample {

    public static void main(String[] args) throws Exception {

        String keyString = "mySecretKey";

        String data = "Hello, Blowfish!";



        SecretKeySpec secretKey = new SecretKeySpec(keyString.getBytes(), "Blowfish");

        Cipher cipher = Cipher.getInstance("Blowfish");



        cipher.init(Cipher.ENCRYPT_MODE, secretKey);

        byte[] encryptedData = cipher.doFinal(data.getBytes());

        System.out.println("Encrypted " + new String(encryptedData));



        cipher.init(Cipher.DECRYPT_MODE, secretKey);

        byte[] decryptedData = cipher.doFinal(encryptedData);

        System.out.println("Decrypted " + new String(decryptedData));

    }

}

 

Вывод:

Encrypted: ����Y�����^�ݞ

Decrypted: Hello, Blowfish!

 

Объяснение:

Вот подробное объяснение приведенного выше Java-кода.

Инициализация ключа:

Переменная KeyString содержит секретный ключ шифрования в виде строки, которая является «mySecretKey». Этот ключ используется для создания объекта SecretKeySpec с именем SecretKey с использованием алгоритма Blowfish.

Инициализация шифрования:

Объект Cipher с именем cipher инициализируется для работы в режиме шифрования (Cipher.ENCRYPT_MODE) с использованием секретного ключа для шифрования и дешифрования.

Шифрование:

Теперь объект cipher настроен для шифрования. Метод doFinal вызывается для байтового представления входной строки «Hello, Blowfish!». Результирующие зашифрованные данные сохраняются в массиве байтов EncryptedData.

Вывод зашифрованных данных:

Зашифрованные данные выводятся на консоль с помощью System.out.println(«Encrypted: » + new String(EncryptedData));.

Расшифровка:

Объект cipher повторно инициализируется, на этот раз для режима дешифрования (Cipher.DECRYPT_MODE). Используется тот же секретный ключ.

Процесс расшифровки:

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

Вывод расшифрованных данных:

Расшифрованные данные, полученные путем преобразования массива байтов decryptedData в строку, выводятся на консоль с помощью System.out.println(«Decrypted : » + new String(decryptedData));

 

Заключение

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

 

Часто задаваемые вопросы (FAQs)

Вот некоторые из часто задаваемых вопросов об алгоритме blowfish с примерами.

Q1. Что такое алгоритм Blowfish?

Алгоритм Blowfish представляет собой блочный шифр с симметричным ключом, предназначенный для шифрования и дешифрования данных. Он был разработан Брюсом Шнайером в 1993 году и известен своим ключом переменной длины, эффективной структурой сети Фейстеля и сложной F-функцией. Blowfish работает с блоками данных фиксированного размера и широко используется для защиты конфиденциальной информации.

Q2. Как работает алгоритм Blowfish?

Blowfish работает путем разделения входных данных на блоки фиксированного размера, обычно 64 бита. Он использует серию раундов, которые включают сложные операции, такие как F-функция, XOR, подстановка и перестановка. Алгоритм использует ключ переменной длины для генерации подразделов, которые используются в раундах для обеспечения безопасности и конфиденциальности.

В3. В чем преимущество ключа переменной длины в Blowfish?

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

Q4. Какова структура сети Фейстеля в Blowfish?

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

Q5. По-прежнему ли Blowfish считается безопасным для современных приложений?

Хотя Blowfish исторически считался безопасным и выдерживал различные криптографические атаки, современные стандарты шифрования, такие как AES (Advanced Encryption Standard), приобрели большую известность благодаря своим более высоким уровням безопасности и производительности. Меньший размер блока Blowfish и потенциальные уязвимости к определенным атакам привели к снижению его использования в пользу более надежных алгоритмов.



2023-09-04T11:59:19
Java