Bom код что это
Перейти к содержимому

Bom код что это

  • автор:

Браузерное окружение, спецификации

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

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

Окружение предоставляет свои объекты и дополнительные функции, в дополнение базовым языковым. Браузеры, например, дают средства для управления веб-страницами. Node.js делает доступными какие-то серверные возможности и так далее.

На картинке ниже в общих чертах показано, что доступно для JavaScript в браузерном окружении:

Как мы видим, имеется корневой объект window , который выступает в 2 ролях:

  1. Во-первых, это глобальный объект для JavaScript-кода, об этом более подробно говорится в главе Глобальный объект.
  2. Во-вторых, он также представляет собой окно браузера и располагает методами для управления им.

Например, здесь мы используем window как глобальный объект:

function sayHi() < alert("Hello"); >// глобальные функции доступны как методы глобального объекта: window.sayHi();

А здесь мы используем window как объект окна браузера, чтобы узнать его высоту:

alert(window.innerHeight); // внутренняя высота окна браузера

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

DOM (Document Object Model)

Document Object Model, сокращённо DOM – объектная модель документа, которая представляет все содержимое страницы в виде объектов, которые можно менять.

Объект document – основная «входная точка». С его помощью мы можем что-то создавать или менять на странице.

// заменим цвет фона на красный, document.body.style.background = "red"; // а через секунду вернём как было setTimeout(() => document.body.style.background = "", 1000);

Мы использовали в примере только document.body.style , но на самом деле возможности по управлению страницей намного шире. Различные свойства и методы описаны в спецификации:

  • DOM Living Standard на https://dom.spec.whatwg.org

DOM – не только для браузеров

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

Например, серверные скрипты, которые загружают и обрабатывают HTML-страницы, также могут использовать DOM. При этом они могут поддерживать спецификацию не полностью.

CSSOM для стилей

Правила стилей CSS структурированы иначе чем HTML. Для них есть отдельная спецификация CSSOM, которая объясняет, как стили должны представляться в виде объектов, как их читать и писать.

CSSOM используется вместе с DOM при изменении стилей документа. В реальности CSSOM требуется редко, обычно правила CSS статичны. Мы редко добавляем/удаляем стили из JavaScript, но и это возможно.

BOM (Browser Object Model)

Объектная модель браузера (Browser Object Model, BOM) – это дополнительные объекты, предоставляемые браузером (окружением), чтобы работать со всем, кроме документа.

  • Объект navigator даёт информацию о самом браузере и операционной системе. Среди множества его свойств самыми известными являются: navigator.userAgent – информация о текущем браузере, и navigator.platform – информация о платформе (может помочь в понимании того, в какой ОС открыт браузер – Windows/Linux/Mac и так далее).
  • Объект location позволяет получить текущий URL и перенаправить браузер по новому адресу.

Вот как мы можем использовать объект location :

alert(location.href); // показывает текущий URL if (confirm("Перейти на Wikipedia?")) < location.href = "https://wikipedia.org"; // перенаправляет браузер на другой URL >

Функции alert/confirm/prompt тоже являются частью BOM: они не относятся непосредственно к странице, но представляют собой методы объекта окна браузера для коммуникации с пользователем.

Спецификации

BOM является частью общей спецификации HTML.

Да, вы всё верно услышали. Спецификация HTML по адресу https://html.spec.whatwg.org не только про «язык HTML» (теги, атрибуты), она также покрывает целое множество объектов, методов и специфичных для каждого браузера расширений DOM. Это всё «HTML в широком смысле». Для некоторых вещей есть отдельные спецификации, перечисленные на https://spec.whatwg.org.

Итого

Говоря о стандартах, у нас есть:

Спецификация DOM описывает структуру документа, манипуляции с контентом и события, подробнее на https://dom.spec.whatwg.org. Спецификация CSSOM Описывает файлы стилей, правила написания стилей и манипуляций с ними, а также то, как это всё связано со страницей, подробнее на https://www.w3.org/TR/cssom-1/. Спецификация HTML Описывает язык HTML (например, теги) и BOM (объектную модель браузера) – разные функции браузера: setTimeout , alert , location и так далее, подробнее на https://html.spec.whatwg.org. Тут берётся за основу спецификация DOM и расширяется дополнительными свойствами и методами.

Кроме того, некоторые классы описаны отдельно на https://spec.whatwg.org/.

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

Когда вам нужно будет прочитать о каком-то свойстве или методе, справочник на сайте Mozilla https://developer.mozilla.org/ru/ тоже очень хороший ресурс, хотя ничто не сравнится с чтением спецификации: она сложная и объёмная, но сделает ваши знания максимально полными.

Для поиска чего-либо обычно удобно использовать интернет-поиск со словами «WHATWG [термин]» или «MDN [термин]», например https://google.com?q=whatwg+localstorage, https://google.com?q=mdn+localstorage.

А теперь давайте перейдём к изучению DOM, так как страница – это основа всего.

BOM-код (Хуавэй)

BOM-код в терминах компании «Хуавэй» представляет собой восьмизначное число, получаемое из серийного номера. Используется при оформлении заявок на ремонт/замену неисправных плат.

Формируется следующим образом:

  • если серийный номер состоит из 16 знаков и начинается с 03 или 02, то BOM-код будет составлен из цифр «03» и первых шести знаков серийного номера. Например, если серийный номер 03846110B7000744, то BOM-код — 03038461, где «03» — добавляемый префикс, «038461» — первые шесть цифр серийного номера;
  • если серийный номер состоит из 20 знаков и начинается с 21, тогда BOM-код — следующие после 21 восемь знаков серийного номера. Например, если серийный номер 21023185446TBC001311, то — BOM-код — 02318544.

BOM или таинственный символ 

Сегодня речь пойдет об одной очень коварной штуке — символе , которая является Адом для верстальщиков. Это и «непонятный» перенос строки вверху страницы, и все содержимое head «переезжает» в body, а в инспекторе мы можем видеть следующее (рис. 1), самое «интересное», что если просмотреть код страницы в отдельной вкладке (обычно это CTRL+U) там все, как и должно быть. Виной всему BOM (Byte Order Mark) — символ, а точнее кодировка html документа UTF-8 BOM. Чтобы исправить это, нужно пересохранить документ в UTF-8 без BOM. Сделать это можно несколькими способами: — С помощью Notepad++ или иным редактором, который может изменять кодировку документа, нужно сохранить файл в кодировке UTF-8 без BOM (рис. 2) — Если неизвестно, в каком файле присутствует та самая метка BOM можно воспользоваться скриптом для поиска и удаления метки BOM из документов. Сохраните следующий скрипт в корне сайта под именем BOM.php и зайдите на http://you_site.com/BOM.php (!ВАЖНО перед выполнением сделать backup). И символ  должен исчезнуть. Удачи 🙂

Поделиться:

Комментарии

Виталий 22.04.2021, 08:50

Валентин 10.02.2020, 21:24

Расчет потребностей в материалах. MRP система и спецификация материалов.

В этой статье мы рассказываем, как правильно разложить план производства готовой продукции – (MPS) на его составляющие – сырьё и материалы (MRP). Расчёт представляет собой движение вниз – от спроса на готовую продукцию до начала обработки первоначальных компонентов. Если компоненты не повторяются в различных спецификациях, то задача каскадирования, конечно, не представляет труда. Например, в такой ситуации:

Компания производит только один вид готовой продукции – «П» и компоненты встречаются в спецификации лишь однажды. Сколько штук каждого компонента понадобится для производства тысячи штук «П»? Ответ считается за секунды:

Как быть, если компонент используется несколько раз, на разных этапах производства?

А если компонент используется ещё и в нескольких спецификациях?

Такой сложный случай мы сейчас и рассмотрим.

Для этого введем понятие низкоуровневого кода, или low-level code. Код компонента определяется самым низким уровнем планирования, на котором он появляется в спецификациях.

В нашем примере компонент «Н» используется и на первом и на втором уровнях планирования. Следовательно, мы назначаем low-level code для компонента «Н» — 2. Это важный шаг, он повлияет на очередность наших расчётов в дальнейшем. Все остальные компоненты в нашем примере располагаются в очевидном порядке.

Вернёмся к потребности. Для того, чтобы своевременно внести в MRP grid потребности на компоненты нам необходимо каскадировать их сверху вниз – от готовой продукции до первоначального компонента последовательно. Информация о потребности и графике производства готовой продукции А и Б (low-level code 0) хранится в MPS. Наша задача — рассчитать компоненты low-level code 1 (Д, Ж, Л) и следующий шаг – low-level code 2 (М, Н).

Допустим, наша потребность в производстве материалов А и Б выглядит следующим образом, см. илл.

Таблица построения MRP

Важно!: мы убрали все предварительные шаги (прогноз валовой потребности в готовой продукции, запланированные поступления, очищенную потребность и пр.) и показали итог расчёта MPS — план запуска партий ГП в производство (Planned Order Release).

Для расчёта потребности в компонентах low-level code 1: Д, Ж, Л нам понадобится:

  • Количество материалов из расчёта одной единицы ГП (этот коэффициент приводится в спецификациях)
  • План запуска партий ГП в производство (итоговая строка MPS)
  • Срок производства каждого компонента (в примере он равен 1 неделе для всех компонентов)

Как правильно трактовать расчёты? В нашем случае для запуска партии продукта А на 4-ой неделе (10 шт.) нам необходимо в начале 4-ой недели иметь на руках 10 шт. компонента Д (т.к. в спецификации указан коэффициент 1 к 1). Поскольку срок производства компонента равен 1 неделе, то отправить партию на переработку мы должны на неделю раньше, т.е. на 3-ей неделе.

Такой алгоритм расчётов используем для определения валовой потребности всех компонентов low-level code 1 на каждую неделю. Важное уточнение!: мы преднамеренно убрали из рассмотрения такие показатели, как: текущие остатки, запланированные поступления, независимый спрос на ЗиП. Для упрощения расчётов принимаем их равными нулю, и валовую потребность тем самым приравниваем к очищенной.

Только после того, как все компоненты low-level code 1 обсчитаны, переходим к low-level code 2. В нашем примере это компоненты М и Н. Уделите внимание точному определению источников спроса – они могут быть как из low-level code 1, так и из low-level code 0. Обратитесь к спецификациям материалов ещё раз.

В нашем случае компонент М является частью компонентов Д и Л (т.е. источниками спроса на компонент М служат компоненты Д и Л).

С компонентом Н, как и ожидалось в начале, всё сложнее. Последовательно перебирая все связи в спецификациях мы видим связь с компонентом Д, продуктом А, компонентом Л и продуктом Б. Эти связи и коэффициенты вносим в расчётную таблицу.

Результатом расчётов стала таблица MRP – с планом запуска всех компонентов и готовой продукции в производство. Именно эта информация и нужна производству для чёткой и слаженной работы. Таблицу MRP можно назвать мостом между главным календарным планированием и операционной работой непосредственно на производстве.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *