Гипертекст - Глоссарий MDN Web Docs: определения веб-терминов

Гипертекст
==========

Гипертекст - это текст, содержащий ссылки на другие тексты.

Термин был придуман Теодором Нельсоном в 1965 году.

Изучите больше
--------------

### Общие знания

* Гипертекст в Wikipedia
### Техническое руководство

* Информационная база гипертекста


Спецификация - Глоссарий MDN Web Docs: определения веб-терминов

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

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

Узнайте больше
--------------

### Technical reference

* Open Web platform specifications


Псевдоэлемент - Глоссарий MDN Web Docs: определения веб-терминов

Псевдоэлемент
=============

Селектор псевдоэлемента в CSS применяет стили к частям содержимого вашего документа в тех случаях, когда нет конкретного HTML-элемента для выбора. Например, вместо того, чтобы помещать первую букву каждого абзаца в отдельный элемент, вы можете оформить их все с помощью `p``::first-letter`.

Смотрите также
--------------

### Техническая справка

* Pseudo-elements


Инструменты разработчика - Глоссарий MDN Web Docs: определения веб-терминов

Инструменты разработчика
========================

Инструменты разработчика (от англ. "development tools" или сокращённо "DevTools") - это программы, которые позволяют создавать, тестировать и отлаживать (debug) программное обеспечение.

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

### Technical reference

* Firefox Developer Tools on MDN
* Firebug (former developer tool for Firefox)
* Chrome DevTools on chrome.com
* Safari Web Inspector on apple.com
* Edge Dev Tools on microsoft.com


КЦД - Глоссарий MDN Web Docs: определения веб-терминов

КЦД
===

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


Аргумент - Глоссарий MDN Web Docs: определения веб-терминов

Аргумент
========

Аргумент - это значение (en-US), (примитив или объект), переданное в качестве входных данных в функцию.

Смотрите также
--------------

### Техническая документация

* Объект `arguments` в JavaScript


ASCII - Глоссарий MDN Web Docs: определения веб-терминов

ASCII
=====

**ASCII** (***A**merican **S**tandard **C**ode for **I**nformation **I**nterchange*) это один из самых известных методов кодирования, используемый компьютерами для превращения букв, чисел, знаков препинания и кодов управления в цифровую форму. С 2007, UTF-8 (en-US) заменил его в Web.


Компьютерное программирование - Глоссарий MDN Web Docs: определения веб-терминов

Компьютерное программирование
=============================

Компьютерное программирование - это процесс составления и организации набора инструкций. Они говорят компьютерной программе, что делать на языке, понятном компьютеру. Эти инструкции представлены в виде множества различных языков, таких как C++, Java, JavaScript, HTML, Python, Ruby и Rust.

Используя соответствующий язык, вы можете программировать / создавать все виды программного обеспечения. Например, программу, которая помогает учёным со сложными вычислениями, базу данных, которая хранит огромные объёмы данных, веб-сайт, который позволяет людям загружать музыку, или анимационное программное обеспечение, которое позволяет людям создавать анимированные фильмы.


Self-Executing Anonymous Function - Глоссарий MDN Web Docs: определения веб-терминов

Self-Executing Anonymous Function
=================================

JavaScript функция, которая выполняется сразу после определения. Также известна как IIFE (Immediately Invoked Function Expression).

См. страницу о IIFE для подробной информации.


Дерево доступности (AOM) - Глоссарий MDN Web Docs: определения веб-терминов

Дерево доступности (AOM)
========================

**Дерево доступности** содержит информацию для большинства HTML-элементов, связанную с доступностью.

Браузеры преобразуют разметку во внутреннее представление, называемое DOM-деревом (en-US). DOM-дерево содержит объекты для всех элементов разметки, атрибутов, текстовых узлов. После этого, на основе DOM-дерева, браузеры создают дерево доступности, которое используется платформозависимыми API специальных возможностей для вспомогательных технологий, таких как скринридеры.

В объекте дерева доступности есть четыре элемента:

**name**

Как к этому можно обратиться? Например, ссылка с текстом «Подробнее» будет иметь **name** «Подробнее» (больше о том, как вычисляются имена в Спецификации вычисления доступных имён и описаний).

**description**

Как мы описываем это, если хотим добавить что-нибудь к **name**? Описание таблицы может объяснить, какого рода информация хранится в ней.

**role**

Что это? Например, это кнопка, панель навигации или список элементов?

**state**

Имеет ли это состояние? Например «отмечен/не отмечен» для чекбоксов, или «свёрнуто/развёрнуто» для элемента <summary>.

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

Пока ещё в черновике Web Incubator Community Group, **Объектная модель доступности (AOM)** намерена внедрить API, которые упрощают выражение семантики доступности и потенциально разрешают доступ к вычисленному дереву доступности.

1. Глоссарий
    1. Доступность
    2. ARIA


Domain - Глоссарий MDN Web Docs: определения веб-терминов

Domain
======

**Домен** - это часть компьютерной сети, в которой один объект контролирует ресурсы обработки данных, например веб-сайт.

Узнать больше
-------------

* https://ru.wikipedia.org/wiki/Домен on Wikipedia


ARPA - Глоссарий MDN Web Docs: определения веб-терминов

ARPA
====

**.arpa** (Address and Routing Parameter Area) является доменом верхнего уровня (en-US), который используется в интернет-инфраструктуре, особенно в обратном DNS запросе (т.е., определить имя домена для заданного IP адреса).

Подробнее
---------

### Общие сведения

* Официальный веб-сайт


ECMAScript - Глоссарий MDN Web Docs: определения веб-терминов

ECMAScript
==========

**ECMAScript** - это скриптовый язык на котором основан JavaScript. Ecma International - организация отвечающая за стандартизацию ECMAScript.

Learn more
----------

### Technical reference

* ECMAScript


UI - Глоссарий MDN Web Docs: определения веб-терминов

UI
==

**Пользовательский Интерфейс** (UI) — это всё, что облегчает взаимодействие пользователя с компьютером. В мире компьютеров это может быть что угодно: клавиатура, джойстик, монитор, программа. Если мы рассматриваем компьютерное ПО - это ввод и вывод командной строки, веб-страница, форма ввода или интерфейс любого приложения.


Привилегированный код - Глоссарий MDN Web Docs: определения веб-терминов

Привилегированный код
=====================

**Привилегированный код (Privileged code**) - Javascript-код расширения, например, скриптов `content scripts`.

**Непривилегированный код** - обычный Javascript на веб-странице


ATAG - Глоссарий MDN Web Docs: определения веб-терминов

ATAG
====

ATAG (Authoring Tool Accessibility Guidelines) - это W3C рекомендации для создания общедоступных инструментов разработчика, которые создают общедоступный контент.

Подробнее
---------

### Общие сведения

* ATAG как часть Web Accessibility Initiative на Википедии
### Технические ссылки

* Обзор Authoring Tool Accessibility Guidelines (ATAG)
* Рекомендации ATAG 2.0


W3C - Глоссарий MDN Web Docs: определения веб-терминов

W3C
===

The *World Wide Web Consortium* (W3C) is an international body that maintains Web-related rules and frameworks.

W3C объединяет более 350 организаций-участников, присоединившихся для разработки стандартов Веба, run outreach programs, and maintain an open forum for talking about the Web. W3C координирует компании в индустрии, чтобы быть уверенными в едином понимании W3C стандартов.

Каждый стандарт проходит через 4 этапа of maturity: Working Draft (WD), Candidate Recommendation (CR), Proposed Recommendation (PR), and W3C Recommendation (REC).

Узнайте больше
--------------

### Основная информация

* W3C веб-сайт


JavaScript - Глоссарий MDN Web Docs: определения веб-терминов

JavaScript
==========

JavaScript (JS) это язык программирования, который в основном используется для создания динамических скриптов на веб-страницах, но он так же часто применяется на стороне сервера (en-US), используя пакеты, такие как Node.JS.

JavaScript не следует путать с Java. «Java» и «JavaScript» являются товарными знаками или зарегистрированными товарными знаками Oracle в США и других странах. Тем не менее, два языка программирования существенно различаются по синтаксису, семантике и использованию.

Задуманный Бренданом Эйхом (тогда работал в Netscape Corporation) как серверный язык, Javascript вскоре появился в Netscape Navigator 2.0 в сентябре 1995 года. JavaScript сразу же добился успеха и Internet Explorer 3.0 представил поддержку JavaScript под названием JScript в августе 1996 года.

В ноябре 1996 года Netscape начала сотрудничать с ECMA International, чтобы сделать JavaScript отраслевым стандартом. С тех пор стандартизированный JavaScript называется ECMAScript и изложен в ECMA-262, чьё последнее (девятое, ES2018) издание доступно с июня 2018 года.

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

В последнее время популярность JavaScript расширилась ещё больше благодаря успешной платформе Node.js - самой популярной кроссплатформенной среде выполнения JavaScript вне браузера. Node.js позволяет разработчикам использовать JavaScript в качестве языка сценариев для автоматизации работы на ПК и создания полнофункциональных HTTP и WebSockets серверов.

Узнай больше
------------

### Изучение JavaScript

* Руководство JavaScript на MDN
* The "javascripting" workshop on NodeSchool
* Курс JavaScript на codecademy.com
* John Resig's Learning Advanced JavaScript
### Технический справочник

* Последний стандарт ECMAScript
* Справочник по JavaScript на MDN
* The *Eloquent JavaScript* book


Сущности - Глоссарий MDN Web Docs: определения веб-терминов

Сущности
========

**HTML-сущности** — это части текста ("строки"), которые начинаются с символа амперсанда (`&`) и заканчиваются точкой с запятой (`;`). Сущности чаще всего используются для представления специальных символов (которые могут быть восприняты как часть HTML-кода) или невидимых символов (таких как неразрывный пробел). Также вы можете использовать их вместо символов, печать которых с обычной клавиатуры труднодоступна.

**Примечание:** Многие символы имеют запоминающиеся сущности (мнемоники). Например для символа копирайта (`©`) мнемоникой будет `©`. Для менее запоминающихся сущностей, таких как `—` или `—` вы можете воспользоваться таблицей символов или инструментом перекодирования.

Зарезервированные (специальные) символы
---------------------------------------

Некоторые специальные символы зарезервированы для использования в HTML. Это означает, что браузер может распознать их как часть HTML-кода. Например, если вы используете знак "меньше" (`<`), браузер может воспринять следующий за ним текст как тег.

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

| Символ | Сущность | Примечание |
| --- | --- | --- |
| & | `&` | Может быть интерпретирован как начало последовательности-сущности. |
| < | `<` | Может быть интерпретирован как начало тега |
| > | `>` | Может быть интерпретирован как окончание тега |
| " | `"` | Может быть интерпретирован как обрамляющая значение атрибута кавычка. |

Узнать больше
-------------

### Техническая справка

* Официальный список представления символов в виде сущностей


Заголовок запроса - Глоссарий MDN Web Docs: определения веб-терминов

Заголовок запроса
=================

**Заголовок запроса** - HTTP header (en-US) который используется в HTTP-запросе и который не относится к содержимому сообщения. Заголовки запроса, такие как `Accept`, `Accept-*` или `If-*` позволяют выполнять условные запросы; другие, такие как `Cookie` (en-US), `User-Agent` или `Referer` уточняют контекст, чтобы сервер мог адаптировать ответ.

Не все заголовки, появляющиеся в запросе, являются *заголовками запроса*. Например, `Content-Length`, появляющийся в запросе `POST`, на самом деле является заголовки сущности, ссылающимся на размер тела сообщения запроса. Однако в таком контексте эти заголовки сущности часто называют заголовками запроса.

Кроме того, CORS определяет подмножество заголовков запросов как простой заголовок, заголовки запросов, которые всегда считаются авторизованными и не указаны явно в ответах на preflight (en-US) запросов.

Несколько заголовков запроса после запроса `GET`:
```

GET /home.html HTTP/1.1
Host: developer.mozilla.org
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:50.0) Gecko/20100101 Firefox/50.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Referer: https://developer.mozilla.org/testpage.html
Connection: keep-alive
Upgrade-Insecure-Requests: 1
If-Modified-Since: Mon, 18 Jul 2016 02:36:04 GMT
If-None-Match: "c561c68d0ba92bbeb8b0fff2a9199f722e3a621a"
Cache-Control: max-age=0
```

Строго говоря, заголовок `Content-Length` в этом примере является не заголовком запроса, как другие, а представляет заголовок сущности:
```

POST /myform.html HTTP/1.1
Host: developer.mozilla.org
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:50.0) Gecko/20100101 Firefox/50.0
Content-Length: 128
```

Узнать больше
-------------

### Технические знания

* Список всех HTTP заголовков


Приведение типов - Глоссарий MDN Web Docs: определения веб-терминов

Приведение типов
================

Приведение типов (type coercion) — это автоматическое или неявное преобразование значений из одного типа данных в другой (например, строки в число). *Type conversion* похоже на *приведение типа*, потому что они оба преобразуют значения из одного типа данных в другой с одним ключевым различием — *приведение типа* выполняется неявно, тогда как преобразование типа может быть неявным *или* явным.

Примеры
-------

```js
const value1 = "5";
const value2 = 9;
let sum = value1 + value2;

console.log(sum);
```

В приведённом выше примере JavaScript *приводит* число `9` к строке, а затем объединяет два значения вместе, в результате чего получается строка `59`. У JavaScript был выбор между строкой и числом, и в данном случае он решил приведение значение к строке.

В качестве альтернативного варианта, компилятор мог привести строку `5` к числу и вернуть сумму `14`. Чтобы получить подобный результат, нужно явным образом преобразовать строку `5` в число через метод `Number()` :

```js
sum = Number(value1) + value2;
```

Смотрите также
--------------

* Глоссарий
    + Type
    + Type conversion


Java - Глоссарий MDN Web Docs: определения веб-терминов

Java
====

Java — компилируемый, объектно-ориентированный и легко переносимый язык программирования.

Java статически типизирован и имеет C-подобный синтаксис. Содержит большую библиотеку полезных функций — инструменты разработчика Java (Java Software Development Kit, SDK).

Программы компилируются единоразово до запуска в проприетарный байт-код определённого формата, который выполняется в виртуальной машине Java (Java Virtual Machine, JVM). JVM существует для множества платформ, что позволяет программам на Java запускаться почти везде без необходимости перекомпиляции или пересборки. Благодаря этому Java широко используется в приложениях предприятий с гетерогенной средой, при этом часто считается тяжеловесным решением.


Gecko - Глоссарий MDN Web Docs: определения веб-терминов

Gecko
=====

**Gecko -** это движок обработки и рендеринга макетов веб-страниц, разработанный в рамках Mozilla Project и используемый многими приложениями и устройствами, включая Firefox (en-US) и Firefox OS (en-US).

Веб-браузеры нуждаются в программах, называемых "движками рендеринга" для того, чтобы обрабатывать HTML, CSS, JavaScript и другой встроенный контент (например, картинки) и всё это отрисовать на экране вашего монитора. Кроме того, Gecko создаёт чётко-связанные программные API, хорошо работающие в любой операционной системе (которая поддерживается Gecko), и это API разработано только для поддержки связанных с основными задачами целей. Это означает, что Gecko включает: сетевой стек, графический стек, рендеринг страниц, виртуальная машина JavaScript и другое.

Поскольку все приложения Firefox OS это веб-приложения, то Firefox OS использует Gecko как среду выполнения приложений.


Type conversion - Глоссарий MDN Web Docs: определения веб-терминов

Type conversion
===============

Преобразование типов (type conversion) означает передачу данных из одного типа данных в другой. *Неявное преобразование* происходит, когда компилятор автоматически присваивает (назначает) типы данных, но исходный код также может *явно* требовать преобразования для завершения. Например, в случае инструкции `5+2.0`, число с плавающей точкой `2.0` неявно преобразуется в целое число, но в случае инструкции `Number("0x11")` строка "0x11" явно преобразуется в типизированное число 17.

1. Глоссарий
    1. Type
    2. Type coercion


Полиморфизм - Глоссарий MDN Web Docs: определения веб-терминов

Полиморфизм
===========

**Полиморфизм** - это представление одного интерфейса для разных типов данных.

Например, целые числа (integers), числа с плавающей запятой (floats) и числа с плавающей запятой двойной точности (double) полностью полиморфны: независимо от их отличающихся типов, их можно складывать, вычитать, перемножать, и так далее.

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

Изучить больше
--------------

### Общие знания

* Polymorphism на Википедии (англ.)


Прокси сервер - Глоссарий MDN Web Docs: определения веб-терминов

Прокси сервер
=============

**Прокси-сервер** - это промежуточная программа или компьютер, используемый при навигации по разным сетям Интернета. Они облегчают доступ к контенту во всемирной паутине. Прокси-сервер перехватывает запросы и возвращает ответы; он может пересылать запросы или нет (например, в случае кеша), и он может изменять его (например, изменяя его заголовки на границе между двумя сетями).

Прокси-сервер может находиться на локальном компьютере пользователя или в любом месте между компьютером пользователя и конечным сервером в Интернете. Существует два основных типа прокси-серверов:

* Прямой прокси, который обрабатывает запросы из любой точки Интернета и в любую другую точку Интернета.
* Обратный прокси, принимающий запросы из Интернета и перенаправляющий их на серверы во внутренней сети.
Узнать подробнее
----------------

* Прокси сервера и туннелирование (en-US)
* Прокси сервер на Википедии


undefined - Глоссарий MDN Web Docs: определения веб-терминов

undefined
=========

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


Протокол - Глоссарий MDN Web Docs: определения веб-терминов

Протокол
========

**Протокол** - это система правил, определяющая, как данные обмениваются внутри или между компьютерами. Для связи между устройствами требуется согласование формата данных, которые будут использоваться для обмена. Набор правил, определяющих формат, называется протоколом.

Смотрите также
--------------

### Основная информация

* Communication\_protocol в Википедии
* RFC Official Internet Protocol Standards


CRLF - Глоссарий MDN Web Docs: определения веб-терминов

CRLF
====

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

* CR = **Возврат каретки (Carriage Return)** (`\r`, `0x0D` в шестнадцатеричной, 13 в десятичной системе счисления) — перемещает курсор в начало строки, не переходя на следующую строку.
* LF = **Перевод строки (Line Feed)** (`\n`, `0x0A` в шестнадцатеричной, 10 в десятичной системе счисления — перемещает курсор на следующую строку, не возвращаясь в начало строки.

CR, за которым сразу следует LF (CRLF, `\r\n`, или `0x0D0A`) перемещает курсор на следующую строку и затем перемещает его в начало строки.


URL (Единый указатель ресурса) - Глоссарий MDN Web Docs: определения веб-терминов

URL (Единый указатель ресурса)
==============================

*Единый указатель ресурса (Uniform Resource Locator,* **URL**) — строка, однозначно определяющая, где в интернете находится ресурс.

В контексте HTTP, URL называют "адрес" (web address)" или "ссылку" (link). В браузере URL отображается в адресной строке , например, `https://developer.mozilla.org`.

Кроме того, URL используют при передаче файлов через FTP , в электронной почте через (SMTP (en-US)) и других местах.

Смотрите также
--------------

### Узнайте об этом

* Понимание структуры URL на сайте MDN


Событие - Глоссарий MDN Web Docs: определения веб-терминов

Событие
=======

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

Подробнее
---------

### Техническая информация

* Документация по событиям на MDN
### Общая информация

* Официальная документация


HTML - Глоссарий MDN Web Docs: определения веб-терминов

HTML
====

**HTML** (от англ. HyperText Markup Language — «язык гипертекстовой разметки») — язык разметки, определяющий структуру веб-страниц.

Краткая история
---------------

В 1990 году, как часть видения о Вебе, Тим Бёрнс-Ли определил понятие гипертекста, которое он оформил с помощью разметки, главным образом основанной на приложении SGML. Группа IETF начала формировать спецификацию HTML в 1993, и после нескольких набросков выпустила версию 2.0 в 1995. В 1994 Бёрнс-Ли основал W3C для развития Веба. В 1996, W3C взяло на себя работу над HTML и опубликовало "HTML 3.2 Recommendation" годом позже. HTML 4.0 был выпущен в 1999 и стал стандартом ISO в 2000.

В настоящее время, W3C почти забросили работу над HTML в пользу XHTML, что побудило в 2004 году основание независимой группы, названной WHATWG. Благодаря WHATWG, работа над HTML5 продолжилась: две организации выпустили первый черновик в 2008 и финальный стандарт в 2014.

Концепция и синтаксис
---------------------

Документ HTML - это простой текст, поделённый на элементы. Элементы окружены одинаковыми открывающимися и закрывающимися тегами. Каждый тег начинается и заканчивается с угловых скобок (`<>`). Также есть теги, которые созданы не для добавления текста, например `<img>`.

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

![Detail of the structure of an HTML element](/ru/docs/Glossary/HTML/anatomy-of-an-html-element.png)

HTML принято сохранять с расширением `.htm` или `.html`, которые обслуживаются сервером (en-US), и могут воспроизводиться любым браузером.

Узнайте больше
--------------

### Изучаем HTML

* Наш учебник HTML
* Онлайн курс на codecademy.com
### Техническая справка

* Документация HTML на MDN
* Спецификация HTML


Переменная - Глоссарий MDN Web Docs: определения веб-терминов

Переменная
==========

**Переменная** — именованная часть памяти, в которую могут помещаться разные значения переменной. Причём в каждый момент времени переменная имеет единственное значение.

Подробнее
---------

* Переменная (программирование) на Википедии


Promise - Глоссарий MDN Web Docs: определения веб-терминов

Promise
=======

**`Promise`** - это Object, возвращаемый function, которая ещё не завершила свою работу. Промис буквально представляет собой "обещание", сделанное функцией, которая через объект промиса вернет результат.

Когда вызванная функция asynchronously завершает работу, вызывается функция объекта промиса, называемая обработчиком решения (или выполнения, или завершения) чтобы исходный объект вызова знал, что задача выполнена

Узнать больше
-------------

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

### Technical reference

* `Promise` in the JavaScript Reference.
* Using promises


Round Trip Time (RTT) - Глоссарий MDN Web Docs: определения веб-терминов

Round Trip Time (RTT)
=====================

**Время приёма-передачи** (англ. Round Trip Time, RTT) - это время, которое требуется для отправки пакета данных в пункт назначения, плюс время, которое требуется для подтверждения того, что этот пакет был получен обратно. RTT между сетью и сервером может быть определён с помощью команды `ping`.

```shell
$ ping google.com
PING google.com (216.58.194.174): 56 data bytes
64 bytes from 216.58.194.174: icmp\_seq=0 ttl=55 time=25.050 ms
64 bytes from 216.58.194.174: icmp\_seq=1 ttl=55 time=23.781 ms
64 bytes from 216.58.194.174: icmp\_seq=2 ttl=55 time=24.287 ms
64 bytes from 216.58.194.174: icmp\_seq=3 ttl=55 time=34.904 ms
64 bytes from 216.58.194.174: icmp\_seq=4 ttl=55 time=26.119 ms
--- google.com ping statistics ---
5 packets transmitted, 5 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 23.781/26.828/34.904/4.114 ms
```

В приведённом выше примере среднее время приёма-передачи, как показано в последней строке, равно 26,8 мс.

Смотрите также
--------------

* Time to First Byte (TTFB)
* Latency (en-US)


TCP - Глоссарий MDN Web Docs: определения веб-терминов

TCP
===

**TCP (Протокол Управления Передачей)** - важный протокол сети интернет, который позволяет двум хостам создать соединение и обмениваться потоками данных. TCP гарантирует доставку данных и пакетов в том же порядке, в котором они были отправлены. Винт Серф и Боб Кан, которые в то время были учёными DARPA, разработали TCP в 1970-х годах.

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

Смотрите также
--------------

### Общая информация

* Обзор протокола HTTP


Архитектура данных - Глоссарий MDN Web Docs: определения веб-терминов

Архитектура данных
==================

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


CSRF - Глоссарий MDN Web Docs: определения веб-терминов

CSRF
====

**CSRF** (Cross-Site Request Forgery, рус. "Межсайтовая подделка запроса") - вид атаки, при которой вражеский сайт выдаёт себя за доверенного пользователя и отсылает на сайт нежелательные команды. Это может быть сделано, к примеру, с помощью отправки параметров в URL в конце ссылки с целью перехода куда-либо в другое место.

Learn more
----------

### General knowledge

* Prevention measures
* MDN security tutorial


Сертифицировано - Глоссарий MDN Web Docs: определения веб-терминов

Сертифицировано
===============

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

За подробностями о сертификации в Cryptography (en-US), просьба обратиться к Digital Certificate (en-US).

Подробнее
---------

### Основная информация

* Туториал по информационной безопасности
### Firefox OS

* Базовые приложения ОС Firefox иногда так же зовутся сертифицированными приложениями: за деталями, смотри Разрешения для приложений.


Конструктор - Глоссарий MDN Web Docs: определения веб-терминов

Конструктор
===========

**Конструктор** принадлежит к определённому объекту, созданному с помощью класса. Конструктор инициализирует этот объект и может предоставлять доступ к его личной информации. Концепция конструктора может быть применена к большинству объектно-ориентированных языков программирования. По существу, конструктор в JavaScript обычно объявляется в экземпляре class.

Синтаксис
---------

```js
// Это конструктор по умолчанию класса Default
function Default() {
}

// Это перегруженный конструктор класса Overloaded
// с аргументами параметров
function Overloaded(arg1, arg2, ..., argN){
}
```

Для вызова конструктора класса в JavaScript, используется оператор `new` чтобы присвоить переменной ссылку на объект (en-US).

```js
function Default() {}

// Новая ссылка объекта Default object назначена
// локальной переменной defaultReference
var defaultReference = new Default();
```

Смотреть также
--------------

### Техническая справка

* Конструктор в ООП для JavaScript (en-US) на MDN
* Оператор new в JavaScript на MDN


Пробельные символы - Глоссарий MDN Web Docs: определения веб-терминов

Пробельные символы
==================

**Пробельные символы** — это множество символов использующихся для горизонтального или вертикального разделения остальных символов. Они используются для разделения токенов в HTML, CSS, JavaScript и других компьютерных языках.

В HTML
------

Текущий стандарт HTML описывает как пробельные 5 символов из таблицы ASCII: U+0009 TAB, U+000A LF, U+000C FF, U+000D CR и U+0020 SPACE. В тексте они будут отображены как обычные пробелы, а последовательность пробельных символов, в большинстве случаев, будет схлопнута в один пробел (это поведение можно изменить CSS-свойством `white-space`). Они могут быть использованы как разделители между названием элемента и его атрибутами, между названиями классов и т. д.

1. Спецификация
    1. Пробельные символы ASCII
2. Ссылки
    1. Пробельные символы в модели DOM (en-US)
    2. `white-space`
3. Глоссарий
    1. Символы


Доступность - Глоссарий MDN Web Docs: определения веб-терминов

Доступность
===========

*Веб-доступность* (**A11Y**) — регламентирует лучшие практики обеспечения работоспособности и доступности сайта вне зависимости от физических и технических ограничений. Доступность описывается и обсуждается W3C в рамках Инициативы по обеспечению доступности (WAI).

Дополнительные ресурсы
----------------------

### Общие сведения

* Доступность на MDN
### Изучение доступности

* Изучение доступности на MDN
* Web Accessibility In Mind
### Технические материалы

* ARIA документация на MDN
* Инициатива по обеспечению доступности W3C
* WAI-ARIA рекомендации


Conditional (условное выражение) - Глоссарий MDN Web Docs: определения веб-терминов

Conditional (условное выражение)
================================

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

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

Узнать больше
-------------

### Техническая справка

* Control flow (en-US) on MDN
### Узнайте об этом

* Control flow and error handling in Javascript on MDN


Интернет-провайдер - Глоссарий MDN Web Docs: определения веб-терминов

Интернет-провайдер
==================

ISP (Интернет-провайдер) продаёт доступ к интернету, а иногда и электронную почту, веб-хостинг и VoIP, либо путём установления соединения по телефонной линии (которая раньше была распространена), либо через широкополосное соединение, такое как кабельный модем или DSL-сервис.

Узнайте больше
--------------

### Общие знания

* Как работает Интернет (объяснение для новичков)


Колбэк-функция - Глоссарий MDN Web Docs: определения веб-терминов

Колбэк-функция
==============

Колбэк-функция (или обратный вызов) - это функция, переданная в другую функцию в качестве аргумента, которая затем вызывается по завершению какого-либо действия.

Вот краткий пример:

```js
function greeting(name) {
  alert("Hello " + name);
}

function processUserInput(callback) {
  var name = prompt("Please enter your name.");
  callback(name);
}

processUserInput(greeting);
```

Выше приведён пример синхронного колбэка, поскольку функция `processUserInput` выполняется синхронно.

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

```js
async function pageLoader(callback) {
  const data = await fetch("/ru/docs/Glossary/Callback\_function");
  callback(data);
}

function onPageLoadingFinished(pageData) {
  console.log("Page was sucessfully loaded!");
  console.log("Response:");
  console.log(pageData);
}

pageLoader(onPageLoadingFinished);
```

Вот ещё один пример асинхронного обратного вызова: maps-example.html (живой пример). Он использует Google Maps API и Geolocation API для отображения карты текущего местоположения вашего устройства.

```js
// maps-example.html
// Вызов асинхронной функции getCurrentPosition
// с передачей callback функции принимающей координаты
// в качестве параметра
navigator.geolocation.getCurrentPosition(function (position) {
  var latlng = new google.maps.LatLng(
    position.coords.latitude,
    position.coords.longitude,
  );
  var myOptions = {
    zoom: 8,
    center: latlng,
    mapTypeId: google.maps.MapTypeId.TERRAIN,
    disableDefaultUI: true,
  };
  var map = new google.maps.Map(
    document.getElementById("map\_canvas"),
    myOptions,
  );
});
```

Поскольку получение координат устройства из его GPS является асинхронным (мы точно не знаем, когда данные будут возвращены), метод `Geolocation.getCurrentPosition()` принимает анонимную колбэк-функцию в качестве параметра, которая получает найденные данные координат. Эта функция выполняется только по возвращению данных координат.

Больше информации
-----------------

### Основное

* Колбэки и события на компонентах
* Ад обратных вызовов


IPv6 - Глоссарий MDN Web Docs: определения веб-терминов

IPv6
====

**IPv6** — это текущая версия протокола связи, лежащая в основе Интернета. Медленно IPv6 заменяет IPv4, среди прочего, потому что IPv6 допускает множество различных IP адресов.

Смотрите также
--------------

* IPv6 в Википедии


Оптимизация ваших страниц для рискованного парсинга - Глоссарий MDN Web Docs: определения веб-терминов

Оптимизация ваших страниц для рискованного парсинга
===================================================

Традиционно, HTML-парсер в браузерах работает на главной ветке и блокируется после тега `</script>`, пока скрипт не загрузится и не выполнится. HTML-парсер в Firefox 4 и новее поддерживает рискованный парсинг вне главной ветки. Он продолжает парсить, пока скрипты загружаются и выполняются. В Firefox 3.5 и 3.6 парсер начинает рискованную загрузку скриптов, стилей и изображений, когда он находит их. Однако, в Firefox 4 и новее HTML-парсер также рискованно загружает алгоритм постройки дерева HTML. С одной стороны, когда риск оправдался, нет необходимости в репарсинге части, которая уже была просканирована на скрипты, стили и изображения. С другой стороны, когда риск не оправдался, HTML-парсеру достаётся больше работы.

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

Делаем рискованную загрузку успешной
------------------------------------

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

* Если вы используете элемент `<base>`, чтобы заменить основной URI страницы, поместите этот элемент в часть страницы без скриптов. Не добавляйте его с помощью `document.write()` или `document.createElement()`.
Как избежать перестройки дерева страницы
----------------------------------------

Рискованное построение дерева терпит неудачу в случае, когда функция `document.write()` изменяет состояния построителя дерева так, что то рискованное состояние после тега `</script>` более не остаётся прежним после того, как весь контент, добавленный через `document.write(),` будет распарсен. Только несколько необычных применений `document.write()` вызывают эту проблему. Вот, чего необходимо избегать:

* Не пишите незаконченные древа. Вместо `<script>document.write("<div>");</script>` лучше написать `<script>document.write("<div></div>");</script>`.
* Не пишите незаконченные теги. Не стоит писать `<script>document.write("<div></div");</script>`.
* Не заканчивайте строку возрастной кареткой (`\r`). Вместо `<script>document.write("Hello World!\r");</script>` лучше написать `<script>document.write("Hello World!\n");</script>`.
* Заметьте, что написание законченных тегов может повлиять на другие теги так, что они станут незаконченными. В том числе, `<script>document.write("<div></div>");</script>` внутри `<head>` будет интерпретировано как `<script>document.write("</head><body><div></div>");</script>`, что повлияет на `<head>` так, что он станет незаконченным.
* Не форматируйте часть таблицы. Вместо `<table><script>document.write("<tr><td>Hello World!</td></tr>");</script></table>` лучше написать `<script>document.write("<table><tr><td>Hello World!</td></tr></table>");</script>`.


Функция - Глоссарий MDN Web Docs: определения веб-терминов

Функция
=======

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

Имя функции это идентификатор, объявленный как часть объявления функции или выражения функции. Имя функции scope (en-US) зависит от того является ли имя функции объявлением или выражением.

### Различные типы функций

**Анонимная функция** это функция без имени:

```js
function () {}
```

**Именованная функция** это функция с именем:

```js
function foo() {}
```

**Внутренняя функция** это функция внутри другой функции (`square` в данном случае). **Внешняя функция** это функция содержащая функцию (`addSquares` в данном случае):

```js
function addSquares(a, b) {
  function square(x) {
    return x \* x;
  }
  return square(a) + square(b);
}
```

**Рекурсивная функция** это функция которая вызывает саму себя. См recursion (en-US).

```js
function loop(x) {
  if (x >= 10) return;
  loop(x + 1);
}
```

**Immediately Invoked Function Expressions** (IIFE) это функция которая вызывается прямо после того как функция загружена в компилятор браузера. Способ объявления IIFE это путём размещения левых и правых круглых скобок в конце объявления функции. В этом типе выражении функций много преимуществ, но это выходит за рамки курса. Если вы хотите узнать больше об IFFE, проверьте следующую страницу на Википедии.

https://en.wikipedia.org/wiki/Immediately-invoked\_function\_expression

```js
// Примеры:

function foo(){
 console.log('Здравствуй Foo');
}();

(function foo() {
 console.log('Здравствуй Foo');
}());

(function food(){
    console.log('Здравствуй Foo');
})();
```

Узнайте больше
--------------

### Технический справочник

* Функции


Свойство - Глоссарий MDN Web Docs: определения веб-терминов

Свойство
========

Термин **свойство** может иметь разное значение, в зависимости от контекста. Он может указывать на:


Type (тип) - Глоссарий MDN Web Docs: определения веб-терминов

Type (тип)
==========

**Тип** является характеристикой значения (en-US), влияющей на то, какой вид данных или структур оно может хранить — например, в JavaScript `Boolean` (en-US) содержит только значения `true`/`false`, тогда как `String` содержит текстовые строки, а `Number` содержит числа любого типа и т.д. При этом для Структурных типов мы в целом можем опираться на то, какой конструктор был использован для создания данной структуры.

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

Узнать больше
-------------

### Общие сведения

* Типы данных в JavaScript


WebRTC - Глоссарий MDN Web Docs: определения веб-терминов

WebRTC
======

**WebRTC** (*Web Real-Time Communication*) — это API, который может использоваться в видео- и аудио-чатах, а также для обмена файлов через одноранговую сеть (P2P).

WebRTC в основном состоит из следующих частей:

`getUserMedia()`

Получает доступ к камере и/или микрофону пользователя для передачи данных в RTC-подключение.

`RTCPeerConnection`

Интерфейс для настройки видеочата или голосовых вызовов.

`RTCDataChannel` (en-US)

Метод, позволяющий установить одноранговый (peer-to-peer (en-US)) канал связи между браузерами.

Узнать больше
-------------

* WebRTC API на MDN
* Поддержка WebRTC браузерами


Символ - Глоссарий MDN Web Docs: определения веб-терминов

Символ
======

**Символ** (англ. **Character** или **Symbol**) - буква, цифра, знак препинания, непечатаемый символ (например возврат каретки). UTF-8 (en-US) - самый распространённый стандарт кодировки символов, содержащий большое количество графем популярных языков людей.


Baseline - Глоссарий MDN Web Docs: определения веб-терминов

Baseline
========

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

Потомки символов типа g и p простираются ниже этой строки. Глифы (en-US) с закруглёнными нижними и верхними окончаниями типа C или 3 слегка простираются под ним.

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

Смотрите также
--------------

### Общие сведения

* Базовая линия на Wikipedia
### Техническая документация

* CSS Box Alignment на MDN


Контейнер выравнивания - Глоссарий MDN Web Docs: определения веб-терминов

Контейнер выравнивания
======================

**Контейнер выравнивания** — это прямоугольник, в котором выровнен объект выравнивания (en-US). Это определяется макетом: обычно это блок, содержащий объект выравнивания, учитывая режим письма, установленный для контейнера.

Дополнительные ресурсы
----------------------

* Выравнивание блоков в CSS


Хеш - Глоссарий MDN Web Docs: определения веб-терминов

Хеш
===

Хеш-функция получает на вход текстовое сообщение произвольной длины и выдаёт хеш фиксированной длины. Как правило, в форме 128-битного "отпечатка пальцев" или "дайджеста сообщения". Хеши очень полезны для криптографии (en-US) — они обеспечивают целостность передаваемых данных. Это служит основой для HMAC (en-US), которые обеспечивают аутентификацию сообщений.


Источник - Глоссарий MDN Web Docs: определения веб-терминов

Источник
========

**Источник** веб-содержимого определяется частями URL, который был использован для доступа к ресурсу: *схема* (протокол), *имя хоста* (домен), и *порт*. Два документа имеют одинаковый источник только когда схема, имя хоста и порт полностью совпадают.

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

Примеры
-------

Источники одинаковы, потому что имеют одинаковую схему (`http`) и имя хоста (`example.com`), а путь к файлу не имеет значения:

* `http://example.com/app1/index.html`
* `http://example.com/app2/index.html`

Источники одинаковы, потому что сервер по умолчанию отправляет содержимое HTTP через порт 80:

* `http://example.com:80`
* `http://example.com`

Источники не одинаковы, потому что используют разные схемы:

* `http://example.com/app1`
* `https://example.com/app2`

Источники не одинаковы, потому что у них разные имена хостов:

* `http://example.com`
* `http://www.example.com`
* `http://myapp.example.com`

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

* `http://example.com`
* `http://example.com:8080`
Смотрите также
--------------

* Политика одинакового источника
* Site (en-US)
* Спецификация HTML: origin


Дешифрование - Глоссарий MDN Web Docs: определения веб-терминов

Дешифрование
============

В криптографии (en-US), **дешифрование** это конвертация шифротекста (en-US) в открытый текст (en-US).

Расшифровка это криптографическая основа: это трансформация кодированного текста в простой текст при помощи криптографического алгоритма под названием шифр (en-US). Шифрование, как и дешифрование в современных способах кодирования осуществляется благодаря определённому алгоритму и секретному элементу (ключу (en-US)). Если алгоритм обычно доступен публично, то по соображениям безопасности, ключ должен оставаться в тайне.

![The decryption primitive.](/ru/docs/Glossary/Decryption/decryption.png)

Дешифрование это обратный процесс шифрования (en-US) и если ключ остаётся в тайне, дешифрование становиться математически сложным. Степень сложности зависит от уровня безопасности действующих криптографических алгоритмов и эволюционирует с развитием криптоанализа (en-US).


Абстракция - Глоссарий MDN Web Docs: определения веб-терминов

Абстракция
==========

Абстракция в программировании — это способ снизить сложность и повысить эффективность проектирования и реализации программного обеспечения за счёт сокрытия технической сложности за более простым API.

Преимущества абстракции
-----------------------

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

```js
class ImplementAbstraction {
  // метод присваивает значения внутренним свойствам
  set(x, y) {
    this.a = x;
    this.b = y;
  }

  display() {
    console.log("a = " + this.a);
    console.log("b = " + this.b);
  }
}

const obj = new ImplementAbstraction();
obj.set(10, 20);
obj.display();
// a = 10
// b = 20
```


Полифил - Глоссарий MDN Web Docs: определения веб-терминов

Полифил
=======

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

Например, полифил можно использовать, чтобы эмулировать функциональность `text-shadow` в IE7 с помощью нативных фильтров браузера, или рем и медиавыражения, динамически меняя стилизацию в нужных случаях с помощью JavaScript, или что-либо еще, что вам потребуется.

Из-за меньшей производительности и ограниченной функциональности нельзя использовать исключительно полифилы. Нативная реализация API быстрее и с ней можно сделать больше, чем с помощью полифила. Например, полифил Object.create может эмулировать только то, что доступно для ненативной реализации Object.create.

В других случаях полифилы нужны, чтобы разрешить ситуации, когда браузеры реализуют одни и те же возможности разными способами. Тогда полифил использует нестандартные возможности конкретного браузера, чтобы в результате определенная функциональность была совместима с действующими стандартами JavaScript. Хотя такое применение полифилов и редкость сейчас, во времена IE6 и Netscape, когда каждый браузер реализовывал JavaScript очень по-разному, оно было широко распространено. Первая версия JQuery была ранним примером полифила. Она представляла собой компиляцию из обходных путей, специфических для определенных браузеров, которая предоставляла JavaScript-разработчикам единый API для всех браузеров. В то время одной из наибольших проблем было заставить сайт работать на всех устройствах: браузеры настолько существенно различались, что порой код приходилось писать совершенно по-разному и разрабатывать разные пользовательские интерфейсы, исходя из используемого пользователем браузера. Таким образом, у JavaScript-разработчиков был доступ только к очень лимитированному количеству JavaScript API, которые работали более или менее одинаково во всех браузерах. Сейчас использование полифилов для взаимодействия со специфичными для браузера реализациями возможностей менее распространено, так как современные браузеры в большинстве своем имеют большой набор стандартизированных API.

Узнать больше
-------------

### Общая информация

* Что такое полифил? (перевод статьи Реми Шарпа, создателя термина «полифил»)


Содержимое встроенного уровня - Глоссарий MDN Web Docs: определения веб-терминов

Содержимое встроенного уровня
=============================

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

Во встроенной раскладке смешанный поток из текста, замещаемых элементов и других встроенных контейнеров представляется в виде набора строчных контейнеров. Внутри каждого строчного контейнера встроенные контейнеры выравниваются относительно друг друга по вертикали или по горизонтали, в зависимости от применяемого режима письма (writing mode). Обычно они выравниваются по своей базовой линии текста. Это можно настроить с помощью CSS.

![inline layout](/ru/docs/Glossary/Inline-level_content/inline_layout.png)

**Примечание:** HTML-элементы исторически делятся на "блочные" и "встроенные". Поскольку это характеристика представления, то теперь это определяется в CSS.

Примеры
-------

```html
<p>
  Этот span является
  <span class="highlight">элементом встроенного уровня</span>. Его фон
  подсвечен, чтобы показать начало и конец действия элемента. Элементы ввода,
  такие как <input type="radio" /> и <input type="checkbox" />, тоже являются
  содержимым встроенного уровня.
</p>
```

В этот примере элемент `<p>` содержит текст. В этом тексте есть элемент `<span>` и два элемента `<input>`, все они являются элементами встроенного уровня. Если `<span>` занимает две строки, то создаются два строчных контейнера. Поскольку эти элементы встроенные, абзац отображается корректно, без разделения на отдельные строки:
```

body {
  margin: 0;
  padding: 4px;
  border: 1px solid #333;
}

.highlight {
  background-color: #ee3;
}
```

Смотрите также
--------------

* Содержимое блочного уровня
* Встроенный контекст форматирования (en-US)
* `display`


Асинхронный - Глоссарий MDN Web Docs: определения веб-терминов

Асинхронный
===========

Термин *асинхронный* относится к двум или более объектам или событиям, которые не существуют или не происходят одновременно, то есть они **не являются** синхронными. Когда происходит несколько связанных событий, не зависящих от завершения предыдущих, они асинхронны.

Смотрите также
--------------

* Получение данных с сервера
* Синхронный


First Meaningful Paint - Глоссарий MDN Web Docs: определения веб-терминов

First Meaningful Paint
======================

**Первое значимое отображение** (англ. First Meaningful Paint, FMP) - метрика, которая показывает, за какое время контент на странице становится виден пользователю. Это метрика включает в себя время от начала загрузки страницы до момента, когда на сайте отобразился основной контент.

Смотрите также
--------------

* First contentful paint


Прототипно-ориентированное программирование - Глоссарий MDN Web Docs: определения веб-терминов

Прототипно-ориентированное программирование
===========================================

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


Флекс-элемент - Глоссарий MDN Web Docs: определения веб-терминов

Флекс-элемент
=============

Непосредственные дочерние элементы флекс-контейнера (элемент для которого установлено `display: flex` или `display: inline-flex`) становятся **флекс-элементами**.

Непрерывные фрагменты текста внутри флекс-контейнера также становятся флекс-элементами.

Изучать далее
-------------

### Ссылки на свойства

* `align-self`
* `flex-basis`
* `flex-grow`
* `flex-shrink`
* `order`
### Читать далее

* Руководство по флексбоксу: Основные понятия флексбокса.
* Руководство по флексбоксу: *Ordering flex items (en-US)*
* Руководство по флексбоксу: Управление соотношением элементов вдоль главной оси


HTTP/2 - Глоссарий MDN Web Docs: определения веб-терминов

HTTP/2
======

**HTTP/2** это старшая версия сетевого протокола HTTP. Основным назначением HTTP/2 является снижение задержки (en-US) путём реализации полного мультиплексирования запросов и ответов, уменьшения перегруженности протокола при помощи эффективного сжатия заголовков HTTP, а также добавления поддержки приоритетов запроса и "server push"("серверное проталкивание" - сервер имея правила, может проявить инициативу, которые инициируют отправку контента до его запроса, зная о том, что может поступить запрос на их отправку).

HTTP/2 никоим образом не изменяет семантику применяемую HTTP. Все основные концепции HTTP 1.1, такие как методы HTTP, коды статусов, URI, и поля заголовков останутся прежними. Вместо этого HTTP/2 изменит порядок (форму) данных и способ их передачи между клиентом и сервером, которые управляют всем процессом, и скроет сложность применения в новом обрамляющем слое. Это позволит использовать существующие приложения без изменений.

1. Основные сведения
    1. HTTP на MDN
2. Справка
    1. HTTP
    2. Latency (en-US)


Пропускная способность - Глоссарий MDN Web Docs: определения веб-терминов

Пропускная способность
======================

**Пропускная способность** (скорость передачи данных) - мера количества информации, которая может быть передана по каналу связи за заданный промежуток времени. Обычно измеряется в величинах, кратных битам в секунду (бит/с), например в мегабитах (Мбит/с) или гигабитах (Гбит/с) в секунду.


Loop - Глоссарий MDN Web Docs: определения веб-терминов

Loop
====

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

Примеры
-------

### Цикл for

#### Синтаксис
```

for (statement 1; statement 2; statement 3){
 execute code block
}
```

* Statement 1 выполняется один раз до запуска блока кода.
* Statement 2 определяет условие, необходимое для выполнения блока кода.
* Statement 3 выполняется каждый раз, когда выполняется блок кода.

#### Пример

```js
for (var i = 0; i < 10; i++) {
  console.log(i);
}
//Этот цикл будет печатать числа 0-9 и остановится, когда условие будет выполнено (i = 10)
```

Для приведённого выше примера синтаксис выглядит следующим образом:

* Statement 1 устанавливает переменную для цикла (var i = 0).
* Statement 2 устанавливает условие цикла (i < 10).
* Statement 3 увеличивает значение i (i ++) при каждом запуске блока кода.
### Цикл while

#### Синтаксис
```

while (condition){
 execute code block
}
```

* Блок кода будет продолжать цикл до тех пор, пока условие выполняется (true).

#### Пример

```js
var i = 0;
while (i < 5) {
  console.log(i);
  i++;
}
//Этот цикл выведет числа 0-4 и остановится, когда условие станет ложным (i >=5)
```

Для приведённого выше примера синтаксис выглядит следующим образом:

* Блок кода будет продолжать работать, пока переменная (i) меньше 5.

1. MDN Web Docs Glossary
    1. Loop


ECMA - Глоссарий MDN Web Docs: определения веб-терминов

ECMA
====

**Ecma International**, ранее известная как European Computers Manufactures Association (Европейская Ассоциация Производителей Компьютеров) — некоммерческая организация, утверждающая и развивающая стандарты в областях аппаратного обеспечения компьютеров, коммуникационных технологий и языков программирования.

В интернете она прежде всего известна, как организация, утвердившая спецификацию ECMA-262 (она же ECMAScript), являющуюся основной спецификацией языка JavaScript.

Узнать больше
-------------

* Официальный сайт Ecma International


MIME-тип - Глоссарий MDN Web Docs: определения веб-терминов

MIME-тип
========

**MIME-тип** (называемый "media type", а иногда "content type") - это строка, отправляемая вместе с файлом, которая указывает тип файла. (например, передаваемый аудиофайл может быть помечен как `audio/ogg` тип, а изображение - `image/png`). MIME-тип играет точно такую же роль, как и расширение файла в системе Windows. Когда HTTP-сообщение содержит `Content-type` заголовок, тело запроса будет парситься в соответствии с MIME-типом, указанным в заголовке.

Узнать больше
-------------

### Основная информация

* Список MIME-типов
### Технические справки

* List of MIME types
* Properly Configuring Server MIME Types (en-US)
* Детальная информация об использовании MIME Types в контексте Веб.


DNS - Глоссарий MDN Web Docs: определения веб-терминов

DNS
===

**DNS** (*Система доменных имён*, англ. **Domain Name System**) — это иерархическая децентрализованная система именования для интернет-ресурсов подключённых к Интернет, которая ведёт список доменных имён вместе с их числовыми IP-адресами или местонахождениями. DNS позволяет перевести простое запоминаемое имя хоста в IP-адрес. **DNS lookup** (Поиск DNS) — это процесс с помощью которого от DNS-сервер возвращается DNS запись, необходимая для нахождения конкретного компьютерного сервиса в Интернет или частной сети.

Взаимосвязанные компьютеры, сервера и смартфоны должны знать как преобразовать email адреса и доменные имена, которые используют люди, в значимые числовые адреса. Эту функцию выполняет DNS lookup.

**Reverse DNS lookup** (rDNS, *обратный просмотр DNS*) — это метод запроса к DNS для определения доменного имени по его IP-адресу.

Узнать больше
-------------

### Общие знания

* Что такое доменные адреса


Cookie - Глоссарий MDN Web Docs: определения веб-терминов

Cookie
======

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

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

Файлы Cookie могут быть установлены и изменены на уровне сервера с помощью заголовка Set-Cookie HTTP или с помощью JavaScript, используя `document.cookie`.

Узнать больше
-------------

### Общие знания

* HTTP cookie в Википедии


CSS - Глоссарий MDN Web Docs: определения веб-терминов

CSS
===

**CSS** (Cascading Style Sheets, или каскадные таблицы стилей) - это декларативный язык, который отвечает за то, как страницы выглядят в веб браузере. CSS стили содержат свойства и их значения, которые и определяют, как будет выглядеть сайт.

CSS одна из ключевых Web технологий, наряду с HTML и JavaScript. Как правило CSS используется для определения стилей HTML-элементов, но также может быть применён совместно с другими языками разметки, такими как SVG или XML.

CSS-правило состоит из селектора и набора свойств (en-US) с их значениями. В этом примере все HTML параграфы будут иметь текст жёлтого цвета на чёрном фоне:

```css
/\* Селектор "p" означает, что данное правило будет применено ко всем параграфам в документе \*/
p {
  /\* Свойство "color" определяет цвет текста, в данном случае желтый. \*/
  color: yellow;

  /\* Свойство "background-color" определяет цвет фона элемента, в данном случае черный. \*/
  background-color: black;
}
```

"Каскадность" CSS - это правила, которые регулируют приоритет селекторов при отображении внешнего вида элементов страницы. Это очень важная особенность, поскольку сложный веб-сайт может иметь тысячи CSS-селекторов.

Смотрите также
--------------

### Базовые знания

* Изучение CSS
### Техническая документация

* CSS документация на MDN
* Рабочая группа CSS по текущей работе
### Веб-курсы CSS

* Веб курсы на codecademy.com
* Веб курсы на W3Schools


Идемпотентный метод - Глоссарий MDN Web Docs: определения веб-терминов

Идемпотентный метод
===================

Метод HTTP является идемпотентным, если повторный идентичный запрос, сделанный один или несколько раз подряд, имеет один и тот же эффект, не изменяющий состояние сервера. Другими словами, идемпотентный метод не должен иметь никаких побочных эффектов (side-effects), кроме сбора статистики или подобных операций. Корректно реализованные методы `GET`, `HEAD`, `PUT` и `DELETE` **идемпотентны**, но не метод `POST`. Также все безопасные методы являются идемпотентными.

Для идемпотентности нужно рассматривать только изменение фактического внутреннего состояния сервера, а возвращаемые запросами коды статуса могут отличаться: первый вызов `DELETE` вернёт код `200`, в то время как последующие вызовы вернут код `404`. Из идемпотентности `DELETE` неявно следует, что разработчики не должны использовать метод `DELETE` при реализации RESTful API с функциональностью ***удалить последнюю запись***.

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

`GET /pageX HTTP/1.1` идемпотентен. Вызвавший несколько раз подряд этот запрос, клиент получит тот же результат:
```

GET /pageX HTTP/1.1
GET /pageX HTTP/1.1
GET /pageX HTTP/1.1
GET /pageX HTTP/1.1
```

`POST /add_row HTTP/1.1` не идемпотентен; если его вызвать несколько раз, то он добавит несколько строк:
```

POST /add_row HTTP/1.1
POST /add_row HTTP/1.1   -> Adds a 2nd row
POST /add_row HTTP/1.1   -> Adds a 3rd row
```

`DELETE /idX/delete HTTP/1.1` идемпотентен, даже если возвращаемый код отличается:
```

DELETE /idX/delete HTTP/1.1   -> Returns 200 if idX exists
DELETE /idX/delete HTTP/1.1   -> Returns 404 as it just got deleted
DELETE /idX/delete HTTP/1.1   -> Returns 404
```

Материалы для изучения
----------------------

### Общие

* Определение идемпотентности в спецификации HTTP.
### Технические

* Описание общих идемпотентных методов: `GET`, `HEAD`, `PUT`, `DELETE`, `OPTIONS`
* Описание общих неидемпотентных методов: `POST`


Метод - Глоссарий MDN Web Docs: определения веб-терминов

Метод
=====

**Метод** это функция, являющаяся свойством объекта. Существует два типа методов: *Методы Экземпляра* которые являются встроенными задачами, выполняемыми экземпляром объекта, или *Статические Методы (en-US)* которые являются задачами, вызываемыми непосредственно в конструкторе объекта.

**Примечание:** В JavaScript функции сами по себе являются объектами, поэтому в этом контексте метод фактически является ссылкой на объект (en-US) для функции.

Узнать больше
-------------

### Узнайте об этом

* Определение методов в JavaScript (сравнение традиционного синтаксиса и нового короткого)
### Техническая информация

* Список встроенных методов JavaScript

* Глоссарий MDN
    + Функция
    + Объект
    + Свойство
    + Статический метод (en-US)
* Определение методов в JavaScript


Синхронный - Глоссарий MDN Web Docs: определения веб-терминов

Синхронный
==========

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

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

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

Больше информации
-----------------

### Техническая документация

* Asynchronous
* Синхронные и асинхронные запросы с использованием XMLHttpRequest() API


CORS - Глоссарий MDN Web Docs: определения веб-терминов

CORS
====

**CORS** (Cross-Origin Resource Sharing, рус. "Совместное использование ресурсов между разными источниками") - это система, состоящая из отправки HTTP заголовков, которые определяют: заблокировать или выполнить запрос к ограниченному ресурсу на веб-странице из другого домена, отличного от домена происхождения запрашиваемого ресурса.

The same-origin security policy (рус. "правило ограничения домена") по умолчанию запрещает междоменные запросы. CORS предоставляет веб-серверам возможность контролировать междоменные запросы и позволяет производить безопасный обмен данными между разными доменами.

Узнать больше
-------------

### Основная база знаний

* HTTP access control (CORS) (en-US) на MDN
### CORS заголовки

`Access-Control-Allow-Origin`

Указывает, разрешён ли такой запрос для ресурсов из данного источника.

`Access-Control-Allow-Credentials` (en-US)

Указывает, разрешён ли ответ на запрос в случае, если credentials flag выставлен в `true`.

`Access-Control-Allow-Headers`

Используется в ответе на запрос в случае "предполётной проверки"(preflight request (en-US)) - проверки, какие из HTTP заголовков могут быть использованы для запроса.

`Access-Control-Allow-Methods`

Указывает метод или методы, которые разрешены для доступа к ресурсу в ответ на "предполётный запрос"(preflight request (en-US)).

`Access-Control-Expose-Headers` (en-US)

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

`Access-Control-Max-Age`

Указывает, как долго могут быть закешированы результаты "предполётного запроса"(preflight request (en-US)).

`Access-Control-Request-Headers` (en-US)

Используется для исполнения "предполётного запроса"(preflight request (en-US)), чтобы указать серверу, какие из HTTP заголовков будут использоваться во время реального запроса.

`Access-Control-Request-Method` (en-US)

Используется для исполнения "предполётного запроса"(preflight request (en-US)), чтобы указать серверу, какие HTTP методы будут использоваться во время реального запроса.

`Origin`

Указывает, откуда производится запрос.

### Техническая документация

* Fetch specification


SDP - Глоссарий MDN Web Docs: определения веб-терминов

SDP
===

**SDP** (Session Description Protocol - протокол описания сессии) - это текстовый формат для описания peer-to-peer (en-US)-соединения. SDP содержит описание кодеков, адрес источника и информацию для синхронизации аудио и видео.

Here is a typical SDP message:
```

   v=0
   o=alice 2890844526 2890844526 IN IP4 host.anywhere.com
   s=
   c=IN IP4 host.anywhere.com
   t=0 0
   m=audio 49170 RTP/AVP 0
   a=rtpmap:0 PCMU/8000
   m=video 51372 RTP/AVP 31
   a=rtpmap:31 H261/90000
   m=video 53000 RTP/AVP 32
   a=rtpmap:32 MPV/90000
```

SDP is never used alone, but by protocols like RTP (en-US) and RTSP (en-US). SDP is also as component of WebRTC, which uses SDP as a way of describing a session.

Learn more
----------

### General knowledge

* WebRTC protocols (en-US)


CDN - Глоссарий MDN Web Docs: определения веб-терминов

CDN
===

CDN (Content Delivery Network - сеть доставки контента) - это группа серверов, расположенных во многих местах. Эти сервера хранят дубликаты данных, чтобы сервера могли выполнять запросы данных на основе того, какие сервера ближе всего к конечным пользователям. CDN увеличивают скорость доступа к сервису уменьшая влияние высокого трафика.

CDN широко используются для доставки таблиц стилей и файлов Javascript (статических ресурсов) библиотек, таких как Bootstrap, jQuery и т. д. Использование CDN для статических библиотечных файлов предпочтительно по ряду причин:

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


Простой заголовок - Глоссарий MDN Web Docs: определения веб-терминов

Простой заголовок
=================

*Простой заголовок (или заголовок запроса с поддержкой безопасности CORS*) - это один из следующих HTTP заголовков:

* `Accept`,
* `Accept-Language`,
* `Content-Language`,
* `Content-Type` с MIME-типом, найденным в этом значении (исключая параметры), либо `application/x-www-form-urlencoded`, `multipart/form-data` или `text/plain`.

Или один из этих клиентских заголовков:

* `DPR` (en-US)
* `Downlink` (en-US)
* `Save-Data` (en-US)
* `Viewport-Width` (en-US)
* `Width` (en-US)

Если они содержат только простые заголовки, запросы считаются простыми и не нужно отправлять preflight request (en-US) в контексте CORS.

Смотрите также
--------------

* HTTP заголовки
* Simple response header (en-US)
* Forbidden header name
* Request header


HTTP - Глоссарий MDN Web Docs: определения веб-терминов

HTTP
====

Протокол передачи гипертекста (HTTP) является базовым сетевым протоколом, который позволяет передавать гипермедиа документы в Web, обычно между браузером и сервером, таким образом, что бы люди могли их читать. Текущая версия спецификации HTTP называется HTTP/2.

Как часть URI, `http://` называется `scheme` (схема) и обычно стоит в начале адреса, например, в `https://developer.mozilla.org`, чтобы указать браузеру запросить документ с использованием протокола HTTP. HTTPS в этом случае относится к защищённой версии протокола HTTP, SSL (en-US) (также называемый TLS).

HTTP является текстовым (все сообщения осуществляются в виде простого текста), без запоминания состояния (нет информации о предыдущих сообщениях). Это свойство делает его идеальным для чтения людьми документов (веб-сайтов) во всемирной паутине. Однако HTTP также можно использовать в качестве основы веб-сервисов REST для передачи сообщений от сервера к серверу или запросов AJAX на веб-сайтах, чтобы сделать их более динамичными.

Изучите больше
--------------

* HTTP на сайте MDN


Кешируемые методы - Глоссарий MDN Web Docs: определения веб-терминов

Кешируемые методы
=================

**Кешируемые** ответы - это HTTP-ответы, которые могут быть закешированы, то есть сохранены для дальнейшего восстановления и использования позже, тем самым снижая число запросов к серверу. Не все HTTP-ответы могут быть закешированы. Вот несколько ограничений:

* Метод, используемый в запросе, кешируемый, если это `GET` или `HEAD`. Ответ для `POST` или `PATCH` запросов может также быть закеширован, если указан признак "свежести" данных и установлен заголовок `Content-Location` (en-US), но это редко реализуется. (Например, Firefox не поддерживает это согласно https://bugzilla.mozilla.org/show\_bug.cgi?id=109553.) Другие методы, такие как `PUT` и `DELETE` не кешируемые, и результат их выполнения не кешируется.
* Коды ответа, известные системе кеширования, которые рассматриваются как кешируемые: `200`, `203`, `204`, `206`, `300`, `301`, `404`, `405`, `410`, `414`, `501`.
* Отсутствуют специальные заголовки в ответе, которые предотвращают кеширование: например, `Cache-Control`.

Обратите внимание, что некоторые некешируемые запросы-ответы к определённым URI могут сделать недействительным (инвалидируют) предыдущие закешированные ответы на тех же URI. Например, `PUT` к странице pageX.html инвалидируют все закешированные ответы `GET` или `HEAD` запросов к этой странице.

Когда и метод запроса и статус ответа кешированы, то ответ к запросу тоже может быть закеширован:
```

GET /pageX.html HTTP/1.1
(…)

200 OK
(…)
```

Запрос `PUT` не может быть закеширован. Более того, он инвалидирует закешированные данные запросов к тому же URI, сделанных через `HEAD` или `GET`:
```

PUT /pageX.html HTTP/1.1
(…)

200 OK
(…)
```

Специальный заголовок `Cache-Control` в ответе может предотвратить кеширование:
```

GET /pageX.html HTTP/1.1
(…)

200 OK
Cache-Control: no-cache
(…)
```

Материалы для изучения
----------------------

### Основные

* Определение кешируемых методов в спецификации HTTP.
### Технические

* Описание общих кешируемых методов: `GET`, `HEAD`
* Описание общих некешируемых методов: `PUT`, `DELETE`, often `POST`


World Wide Web - Глоссарий MDN Web Docs: определения веб-терминов

World Wide Web
==============

Всемирная сеть — сокращённо: **WWW**, **W3**, или **Web; Сеть**, **паутина** или **веб** — всемирная система публичных веб-страниц в сети Интернет. Сеть не является Интернетом: Сеть лишь использует Интернет как среду передачи информации и данных.

Тим Бернерз-Ли предложил архитектуру, которая стала известна под названием World Wide Web. В 1990 году в ЦЕРН (в своей лаборатории физ. исследований) он создал первый веб-сервер (en-US), браузер и веб-страницу на своём компьютере. В 1991 году он объявил про своё творение в группе новостей alt.hypertext, тем самым, обозначив момент, когда Web стал достоянием общества.

Система, которую мы называем Web состоит из нескольких компонентов:

* Протокол **HTTP** обеспечивает обмен данными между сервером и клиентом.
* Отсылая запрос серверу на определённый ресурс, клиент предоставляет неповторимый идентификатор, который зовётся **URL** (унифицированное расположение ресурсов) или URI (en-US) (унифицированный идентификатор ресурса).
* **HTML** (язык гипертекстовой разметки) - самый распространённый формат веб-документов.

Связь страниц с помощью гиперссылок (en-US) является главной концепцией Web.

Незадолго после создания Web, Тим Бернерз-Ли основал W3C (World Wide Web Consortium) для стандартизации и последующего развития интернета. Этот консорциум состоит из: разработчиков браузеров, гос. учреждения, исследователи и университеты. Его цель - образование и распространение.

Узнать больше
-------------

### Обучение

* Изучение веб-разработки
* Web literacy map (знания и умения, необходимые для веб-разработки)
### Общие ведомости

* Сайт международного сообщества W3C


Copyleft - Глоссарий MDN Web Docs: определения веб-терминов

Copyleft
========

Copyleft — это термин, обычно относящийся к лицензии, который используется для обозначения того, что такая лицензия требует, что бы распространение данного продукта подчинялось той же лицензии, что и оригинал. Примерами лицензий с copyleft являются лицензии GNU GPL (en-US) (для программного обеспечения) и лицензии Creative Commons SA (Share Alike) (для рисунков, фотографий и т.д.).


Обёртка - Глоссарий MDN Web Docs: определения веб-терминов

Обёртка
=======

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


Атрибут - Глоссарий MDN Web Docs: определения веб-терминов

Атрибут
=======

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

Узнать подробнее
----------------

### Техническая информация

* Справочник атрибутов HTML
* Информация о глобальных атрибутах HTML


Строка - Глоссарий MDN Web Docs: определения веб-терминов

Строка
======

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

В JavaScript, String - это один из примитивных типов и `String` объект - это wrapper над примитивной строкой.

Смотрите также
--------------

### Общие сведения

* JavaScript data types and data structures


Pixel - Глоссарий MDN Web Docs: определения веб-терминов

Pixel
=====

Пиксель (англ. Pixel) - маленький строительный блок графического дисплея экрана компьютера.

Разрешение дисплея выражено в пикселях, например: "800 x 600" пикселей, значит, что дисплей может отображать 800 пикселей в ширину и 600 пикселей в высоту.

Узнайте больше
--------------

### Технические ссылки

* Pixel в Wikipedia


IP-адрес - Глоссарий MDN Web Docs: определения веб-терминов

IP-адрес
========

IP-адрес — это номер, присваиваемый каждому устройству, подключенному к сети, которая использует протокол Интернет.

Термин "IP-адрес" обычно означает 32-разрядные IPv4 адреса, но до тех пор, пока IPv6 не получит более широкое применение.

Смотрите также
--------------

* IP-адрес в Википедии


Запрещённое имя заголовка - Глоссарий MDN Web Docs: определения веб-терминов

Запрещённое имя заголовка
=========================

**Запрещённое имя заголовка** (Forbidden header name) – это имя какого-либо HTTP заголовка, который нельзя изменить программно.

Изменение этих заголовков запрещено, потому что пользовательский агент (браузер) удерживает полный контроль над ними. Заголовки, чьи имена начинаются с `Sec-`, зарезервированы для создания новых заголовков, безопасных (отделённых) от APIs, используемого Fetch, которое даёт разработчику контроль над заголовками. Утверждение также верно и для `XMLHttpRequest`.

Запрещённые имена заголовков начинаются с `Proxy-` или `Sec-`, или содержат следующие имена:

* `Accept-Charset`
* `Accept-Encoding`
* `Access-Control-Request-Headers`
* `Access-Control-Request-Method`
* `Connection`
* `Content-Length`
* `Cookie`
* `Cookie2`
* `Date`
* `DNT`
* `Expect`
* `Host`
* `Keep-Alive`
* `Origin`
* `Proxy-`
* `Sec-`
* `Referer`
* `TE`
* `Trailer`
* `Transfer-Encoding`
* `Upgrade`
* `Via`

**Примечание:** Заголовок `User-Agent` более не запрещён, как указано в спецификации — посмотрите список запрещённых заголовков (он был реализован в Firefox 43,) так что `User-Agent` может быть установлен через в объект Headers (en-US) под Fetch через вызов метода setRequestHeader().


Кодирование и декодирование в формате Base64 - Глоссарий MDN Web Docs: определения веб-терминов

Кодирование и декодирование в формате Base64
============================================

**Base64** - это группа схожих binary-to-text encoding схем, которые представляют двоичные данные в ASCII-формате методом перевода в radix-64 представление. Термин *Base64* происходит от a specific MIME content transfer encoding.

Кодирование Base64 широко используется в случаях, когда требуется перекодировать двоичные данные для передачи по каналу приспособленному для передачи текстовых данных. Это делается с целью защиты двоичных данных от любых возможных повреждений при передаче. Base64 широко используется во многих приложениях, включая электронную почту (MIME), и при сохранении больших объёмов данных в XML (en-US).

В языке JavaScript существуют две функции, для кодирования и декодирования данных в/из формат Base64 соответственно:

* `btoa()`
* `atob()` (en-US)

`Функция atob()` декодирует Base64-кодированную строку. В противоположность ей, функция `btoa()` создаёт Base64 кодированную ASCII строку из "строки" бинарных данных.

Обе функции `atob()` и `btoa()` работают со строками. Если вам необходимо работать с `ArrayBuffers`, обратитесь к этому параграфу.

Документация
------------

`data` URIs (en-US)

`data` URIs, описанные в RFC 2397, позволяют создателям контента встроить в документ маленькие файлы в виде строки (инлайном).

Base64

Wikipedia article about Base64 encoding.

`atob()` (en-US)

Decodes a string of data which has been encoded using base-64 encoding.

`btoa()`

Creates a base-64 encoded ASCII string from a "string" of binary data.

The "Unicode Problem"

In most browsers, calling `btoa()` on a Unicode string will cause a `Character Out Of Range` exception. This paragraph shows some solutions.

URIScheme

List of Mozilla supported URI schemes

`StringView`

In this article is published a library of ours whose aims are:

* creating a C-like interface for strings (i.e. array of characters codes — `ArrayBufferView` (en-US) in JavaScript) based upon the JavaScript `ArrayBuffer` (en-US) interface,
* creating a collection of methods for such string-like objects (since now: `stringView`s) which work **strictly on array of numbers** rather than on immutable JavaScript strings,
* working with other Unicode encodings, different from default JavaScript's UTF-16 `DOMString`s,

Tools
-----

* Rewriting `atob()` and `btoa()` using `TypedArray`s and UTF-8
* `StringView` – a C-like representation of strings based on typed arrays
Related Topics
--------------

* `ArrayBuffer` (en-US)
* Typed arrays
* `ArrayBufferView` (en-US)
* `Uint8Array` (en-US)
* `StringView` – a C-like representation of strings based on typed arrays
* `DOMString`
* `URI` (en-US)
* `encodeURI()`
The "Unicode Problem"
---------------------

Since `DOMString`s are 16-bit-encoded strings, in most browsers calling `window.btoa` on a Unicode string will cause a `Character Out Of Range` exception if a character exceeds the range of a 8-bit byte (0x00~0xFF). There are two possible methods to solve this problem:

* the first one is to escape the whole string (with UTF-8, see `encodeURIComponent`) and then encode it;
* the second one is to convert the UTF-16 `DOMString` to an UTF-8 array of characters and then encode it.

Here are the two possible methods.

### Solution #1 – escaping the string before encoding it

```js
function b64EncodeUnicode(str) {
  // first we use encodeURIComponent to get percent-encoded UTF-8,
  // then we convert the percent encodings into raw bytes which
  // can be fed into btoa.
  return btoa(
    encodeURIComponent(str).replace(
      /%([0-9A-F]{2})/g,
      function toSolidBytes(match, p1) {
        return String.fromCharCode("0x" + p1);
      },
    ),
  );
}

b64EncodeUnicode("✓ à la mode"); // "4pyTIMOgIGxhIG1vZGU="
b64EncodeUnicode("\n"); // "Cg=="
```

To decode the Base64-encoded value back into a String:

```js
function b64DecodeUnicode(str) {
  // Going backwards: from bytestream, to percent-encoding, to original string.
  return decodeURIComponent(
    atob(str)
      .split("")
      .map(function (c) {
        return "%" + ("00" + c.charCodeAt(0).toString(16)).slice(-2);
      })
      .join(""),
  );
}

b64DecodeUnicode("4pyTIMOgIGxhIG1vZGU="); // "✓ à la mode"
b64DecodeUnicode("Cg=="); // "\n"
```

Unibabel implements common conversions using this strategy.

### Solution #2 – rewrite the DOMs `atob()` and `btoa()` using JavaScript's `TypedArray`s and UTF-8

Use a TextEncoder (en-US) polyfill such as TextEncoding (also includes legacy windows, mac, and ISO encodings), TextEncoderLite, combined with a Buffer and a Base64 implementation such as base64-js.

When a native `TextEncoder` implementation is not available, the most light-weight solution would be to use TextEncoderLite with base64-js. Use the browser implementation when you can.

The following function implements such a strategy. It assumes base64-js imported as `<script type="text/javascript" src="base64js.min.js"/>`. Note that TextEncoderLite only works with UTF-8.

```js
function Base64Encode(str, encoding = "utf-8") {
  var bytes = new (TextEncoder || TextEncoderLite)(encoding).encode(str);
  return base64js.fromByteArray(bytes);
}

function Base64Decode(str, encoding = "utf-8") {
  var bytes = base64js.toByteArray(str);
  return new (TextDecoder || TextDecoderLite)(encoding).decode(bytes);
}
```


Time to first byte - Глоссарий MDN Web Docs: определения веб-терминов

Time to first byte
==================

**Время до первого байта** (англ. Time to First Byte, TTFB) - одна из метрик производительности веб-страниц, которая описывает время, которое прошло с момента отправления браузером запроса страницы до момента, когда он получил первый байт информации с сервера. Это время включает в себя поиск DNS-сервера и установление соединения с использованием TCP-рукопожатия и SSL (en-US)-рукопожатия, если запрос выполняется через https.

TTFB - время между началом запроса и началом ответа в миллисекундах:
```

TTFB = responseStart - requestStart
```

Смотрите также
--------------

* A typical HTTP session
* PerformanceResourceTiming (en-US)
* PerformanceTiming (en-US)


OpenGL - Глоссарий MDN Web Docs: определения веб-терминов

OpenGL
======

**OpenGL** (**Open Graphics Library**) - Это кроссплатформеный программный интерфейс, использующийся разными языками для обработки векторной (2D, 3D) графики.Обычно используется для взаимодействия с графическим процессором (GPU), чтобы добиться аппаратно-ускоренного рендеринга.


Кеш - Глоссарий MDN Web Docs: определения веб-терминов

Кеш
===

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


Истинноподобное значение - Глоссарий MDN Web Docs: определения веб-терминов

Истинноподобное значение
========================

В JavaScript **истинноподобное (truthy)** значение — это значение, рассматривающиеся как `true` в булевом контексте. К истинноподобным значениям относятся все значения кроме ложноподобных значений. То есть все значения **истинноподобны** кроме `false`, `0`, `-0`, `0n`, `""`, `null`, `undefined` и `NaN`.

В булевых контекстах JavaScript использует механизм приведения типов.

Примеры *истинноподобных* значений в JavaScript (которые будут принудительно приведены к `true` в булевых контекстах, выполняя таким образом содержимое блока `if`):

```js
if (true)
if ({})
if ([])
if (42)
if ("0")
if ("false")
if (new Date())
if (-42)
if (12n)
if (3.14)
if (-3.14)
if (Infinity)
if (-Infinity)
```

### Оператор логического И, &&

Если первый операнд истинноподобен, то оператор логического И вернёт второй операнд:

```js
true && "dog"
// возвращает "dog"

[] && "dog"
// возвращает "dog"
```

Смотрите также
--------------

* Falsy
* Приведение типов
* Boolean


First contentful paint - Глоссарий MDN Web Docs: определения веб-терминов

First contentful paint
======================

**Первое существенное отображение** (англ. First Contentful Paint, FCP) - время, за которое пользователь увидит какое-то содержимое веб-страницы, например, текст или картинку.

Эта метрика показывает, какое время потребуется браузеру для отображения части DOM после того, как пользователь перешёл на веб-страницу. Контентом в данном случае считаются любой текст, изображения, не пустой canvas и SVG. Данный показатель не учитывает загрузку контента в iframe, но учитывает текст, шрифт которых ещё загружается.

Смотрите также
--------------

* First Meaningful Paint
* Paint Timing specification


Статическая типизация - Глоссарий MDN Web Docs: определения веб-терминов

Статическая типизация
=====================

**Статически типизированный** язык — это язык, где типы переменных известны во время компиляции (н-р Java, C, C++). В большинстве таких языков типы переменных должны быть явно заданы разработчиком. В остальных статически типизированных языках вывод типов (type inference) позволяет не задавать их (н-р OCaml).


Microsoft Internet Explorer - Глоссарий MDN Web Docs: определения веб-терминов

Microsoft Internet Explorer
===========================

Internet Explorer (или IE) - это бесплатный графический браузер, созданный Microsoft для использования внутри компании. Microsoft Edge (en-US) - на данный момент Windows браузер по умолчанию.

Microsoft впервые выпустила IE в сборке вместе с Windows в 1995 как часть пакета "Microsoft Plus!". Примерно в 2002 году Internet Explorer стал самым используемым браузером в мире, но с тех пор утратил свои популярность, уступив свои позиции Chrome, Firefox, Edge и Safari.

IE прошёл через огромное количество релизов, и сейчас его текущая версия 11.0.12. Он доступен на персональных компьютерах, телефонах и консоле Xbox. Прежде был доступен на Mac и UNIX, но Microsoft прекратили поддержку этих версий в 2003 и 2001 соответственно.

Смотрите также
--------------

### Изучение Internet Explorer

* http://windows.microsoft.com/en-us/internet-explorer/download-ie
* http://windows.microsoft.com/en-us/windows7/getting-started-with-internet-explorer-9
* http://windows.microsoft.com/en-us/internet-explorer/internet-explorer-help
* http://windows.microsoft.com/en-us/internet-explorer/make-ie-default-browser#ie=ie-11
### Технические ссылки

* http://windows.microsoft.com/en-us/internet-explorer/products/ie-8/system-requirements
* http://windows.microsoft.com/en-us/internet-explorer/products/ie-9/system-requirements
* http://support.microsoft.com/kb/969393


Responsive web design - Глоссарий MDN Web Docs: определения веб-терминов

Responsive web design
=====================

*Адаптивный веб-дизайн* ( **RWD** ) - это концепция веб-разработки, направленная на то, чтобы сайты выглядели и вели себя оптимально на всех персональных вычислительных устройствах, от настольных компьютеров до мобильных.

Смотрите также
--------------

### Общая информация

* Summary and resources (en-US)
* Pros and cons of going responsive (en-US)
* Responsive Web Design


Call stack - Глоссарий MDN Web Docs: определения веб-терминов

Call stack
==========

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

* Когда скрипт вызывает функцию, интерпретатор добавляет её в стек вызовов и потом начинает её обработку.
* Любые функции, вызванные этой функцией, добавляются в стек вызовов и выполняются, как только происходит их вызов.
* Когда выполнение основной функции завершено, интерпретатор снимает её со стека вызовов и возобновляет выполнение кода в списке основного кода с той точки, где остановился до этого.
* Если стек занимает больше места, чем ему было присвоено, это приводит к ошибке переполнения стека ("stack overflow" error).
Пример
------

```js
function greeting() {
  // [1] Some code here
  sayHi();
  // [2] Some code here
}
function sayHi() {
  return "Hi!";
}

// Invoke the `greeting` function
greeting();

// [3] Some code here
```

Код выше будет выполнен следующим образом:

1. Игнорирование всех функций, пока не будет достигнуто место вызова функции `greeting()`.
2. Вызывается функция `greeting().`
3. Функция "greeting" помещается в очередь стека вызовов.

**Примечание:** Очередь стека вызовов:
 - greeting
4. Выполняется код внутри функции `greeting`.
5. Вызывается функция `sayHi()`.
6. Функция `sayHi()` помещается в очередь стека вызовов.

**Примечание:** Очередь стека вызовов:
 - greeting
 - sayHi
7. Выполняется весь код внутри функции `sayHi()` до самого конца.
8. Возврат выполнения кода с места вызова функции `sayHi()` и продолжение выполнения оставшегося кода функции `greeting()`.
9. Выполненная функция `sayHi()` удаляется из очереди стека вызовов.

**Примечание:** Очередь стека вызовов:
 - greeting
10. Когда весь код внутри функции `greeting()` выполнен, происходит возврат выполнения оставшейся части основного скрипта JS с места вызова функции `greeting()`.
11. Выполненная функция `greeting()` удаляется из очереди стека вызовов.

**Примечание:** Очередь стека вызовов:
 ПУСТО

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


Буфер - Глоссарий MDN Web Docs: определения веб-терминов

Буфер
=====

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


Интернет - Глоссарий MDN Web Docs: определения веб-терминов

Интернет
========

Интернет — это всемирная сеть сетей, использующая набор интернет-протоколов (называемый также TCP/IP по двум наиболее важным протоколам).

Смотрите также
--------------

* Как работает Интернет (введение для начинающих)


AJAX - Глоссарий MDN Web Docs: определения веб-терминов

AJAX
====

Асинхронный JavaScript и XML (**Ajax** или **AJAX**) — это подход к разработке, при котором веб-приложения запрашивают данные с сервера с помощью асинхронных HTTP-запросов и обновляют только необходимые части документа, без полной перезагрузки страницы. Это может сделать страницу более отзывчивой, потому что запрашиваются только необходимые для обновления части.

Ajax можно использовать для создания одностраничных приложений (en-US), которые состоят из одного документа, использующего Ajax для обновления содержимого.

Изначально для реализации Ajax использовался интерфейс `XMLHttpRequest`, но на данный момент для создания современных веб-приложений больше подходит `fetch()` API: он более мощный, гибкий и лучше интегрируется с фундаментальными веб-технологиями, такими как Service Worker API. Современные веб-фреймворки также предоставляют абстракции для использования Ajax.

Эта техника настолько широко распространена в современной веб-разработке, что сам термин «Ajax» сейчас используется редко.

Смотрите также
--------------

* Получение данных с сервера
* `Fetch API`
* Single-page application (en-US)
* `XMLHttpRequest`
* AJAX на Википедии


HTML5 - Глоссарий MDN Web Docs: определения веб-терминов

HTML5
=====

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

Узнайте больше
--------------

* Наше руководство по HTML5


Миксин - Глоссарий MDN Web Docs: определения веб-терминов

Миксин
======

Миксин (дословно: "примесь) - класс (class) или интерфейс, в котором некоторые или все его методы (methods) и/или свойства (properties) не реализованы, требуя, чтобы другой класс или интерфейс обеспечивал недостающие реализации. Новый класс или интерфейс затем включает в себя как свойства и методы из миксина, так и те, которые он определяет сам. Все методы и свойства используются совершенно одинаково, независимо от того, реализованы ли они в миксине, интерфейсе или классе, реализующем миксин.

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

Например, миксин `WindowOrWorkerGlobalScope` используется для предоставления методов и свойств, которые должны быть доступны как в интерфейсах `Window`, так и в интерфейсах `WorkerGlobalScope` (en-US). Миксин осуществляется с помощью обоих этих интерфейсов.

Узнать больше
-------------

### General knowledge

* Mixin on Wikipedia


WebSockets - Глоссарий MDN Web Docs: определения веб-терминов

WebSockets
==========

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

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

Узнать больше
-------------

### Техническая справка

* WebSocket на MDN
### Примеры использования

* Создание клиентского приложения WebSocket
* Создание сервера с использованием WebSocket (en-US)


Блочные элементы - Глоссарий MDN Web Docs: определения веб-терминов

Блочные элементы
================

Исторически HTML-элементы было принято делить на блочные и строчные. Блочные элементы занимают всю ширину своего родителя (контейнера), формально создавая «блок» (отсюда и название).

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

Блочные элементы
----------------

### HTML

```html
<p>
  Этот абзац — блочный элемент; его цвет фона покрашен, чтобы показать
  родительский элемент абзаца.
</p>
```

### CSS

```css
p {
  background-color: #8abb55;
}
```

Использование
-------------

* Блочные элементы могут отображаться только внутри элемента `<body>` и его потомков.
Блочные против строчных
-----------------------

Существует несколько ключевых отличий между блочными и строчными элементами:

Содержание

Как правило, блочные элементы могут содержать строчные элементы и другие блочные элементы. Неотъемлемой частью этого структурного различия является идея, что блочные элементы создают «более крупную» структуру, чем встроенные элементы.

Форматирование по умолчанию

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

Разделение элементов на блочные и строчные использовалось в спецификации HTML до версии 4.01. В HTML5 это противопоставление заменено более сложным набором категорий контента. Категория «строчных» элементов примерно соответствует категории текстового контента, а для «блочных» элементов прямого соответствия нет, но «блочные» и «строчные» элементы вместе примерно соответствуют категории потокового контента в HTML5 (т.е., грубо говоря, «блочные» элементы — это потоковый контент минус текстовый контент). Кроме того, есть и другие категории, например, интерактивный контент.

Элементы
--------

Ниже приведён полный список всех блочных элементов (хотя формально понятие «блочный» не применяется к новым элементам в HTML5).

`<address>`

Контактная информация.

`<article>`

Содержание статьи.

`<aside>`

Побочное содержание.

`<blockquote>`

Длинная («блочная») цитата.

`<details>`

Раскрывающийся блок с подробностями.

`<dialog>`

Диалоговое окно.

`<dd>`

Описание определения.

`<div>`

Фрагмент документа.

`<dl>`

Список определений.

`<dt>`

Термин в списке определений.

`<fieldset>`

Группирование элементов формы.

`<figcaption>`

Описание для тега `<figure>`.

`<figure>`

Группирование медиа-контента с подписью (см. `<figcaption>`).

`<footer>`

Нижняя часть («подвал») раздела или страницы.

`<form>`

Форма ввода.

`<h1>` (en-US), `<h2>` (en-US), `<h3>` (en-US), `<h4>` (en-US), `<h5>` (en-US), `<h6>` (en-US)

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

`<header>`

Верхняя часть («шапка») раздела или страницы.

`<hgroup>`

Группирование заголовков раздела или страницы.

`<hr>`

Горизонтальная разделительная линия.

`<li>`

Пункт списка.

`<main>`

Содержит основной контент, уникальный для страницы.

`<nav>`

Содержит навигационные ссылки.

`<ol>`

Упорядоченный список.

`<p>`

Текстовый абзац.

`<pre>`

Предварительно форматированный текст.

`<section>`

Раздел веб-страницы.

`<table>` (en-US)

Таблица.

`<ul>`

Неупорядоченный список.

### Смотрите также

* Строчные элементы