recursal/MDN huggingface dataset:
Дерево доступности (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
======

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

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

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

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

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

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

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

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

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

### Technical reference

* ECMAScript
UI
==

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

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

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

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

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

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

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

* Обзор Authoring Tool Accessibility Guidelines (ATAG)
* Рекомендации ATAG 2.0
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
==========

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
Сущности
========

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

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

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

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

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

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

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

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

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

**Заголовок запроса** - 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 заголовков
Приведение типов
================

Приведение типов (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
====

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

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

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

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

1. Глоссарий
    1. Type
    2. Type coercion
Полиморфизм
===========

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

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

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

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

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

* Polymorphism на Википедии (англ.)
Прокси сервер
=============

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

* Официальная документация
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
Переменная
==========

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

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

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

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

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

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

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

### Technical reference

* `Promise` in the JavaScript Reference.
* Using promises
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
===

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

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

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

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

* Обзор протокола HTTP
Архитектура данных
==================

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

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

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

### General knowledge

* Prevention measures
* MDN security tutorial
Сертифицировано
===============

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

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

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

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

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

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

**Конструктор** принадлежит к определённому объекту, созданному с помощью класса. Конструктор инициализирует этот объект и может предоставлять доступ к его личной информации. Концепция конструктора может быть применена к большинству объектно-ориентированных языков программирования. По существу, конструктор в 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
Пробельные символы
==================

**Пробельные символы** — это множество символов использующихся для горизонтального или вертикального разделения остальных символов. Они используются для разделения токенов в 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. Символы