recursal/MDN huggingface dataset:
Flexbox
=======

Флексбокс (от англ. *flexbox*) — общепринятый термин спецификации CSS Flexible Box Layout Module, которая описывает модель отображения элементов в одном измерении — в виде строки или столбца.

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

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

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

### Описание свойств

* `align-content`
* `align-items`
* `align-self`
* `flex`
* `flex-basis`
* `flex-direction`
* `flex-flow`
* `flex-grow`
* `flex-shrink`
* `flex-wrap`
* `justify-content`
* `order`
### Дальнейшее чтение

* *CSS Flexible Box Layout Module Level 1 Specification*
* Руководство по CSS Flexbox:
    + Основные понятия о флексбоксе
    + Relationship of flexbox to other layout methods (en-US)
    + Выравнивание элементов во флекс-контейнере
    + Ordering flex items (en-US)
    + Controlling Ratios of flex items along the main axis (en-US)
    + Разбираемся с обёртыванием флекс-элементов
    + Typical use cases of flexbox (en-US)
IETF
====

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

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

### Основные сведения

* Официальный сайт
Codec
=====

Кодек (от англ. *codec* - "**co**der-**dec**oder") - это программа, алгоритм, или же устройство, которое позволяет кодировать и декодировать поток данных. Предоставленный codec знает, как работать со специфичной кодировкой или с технологией сжатия.

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

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

* Медиа форматы, поддерживаемые audio и video элементами HTML (en-US)
Grid Column
===========

Столбец сетки (**grid column)** — это вертикальный элемент в CSS Grid Layout, а также пространство между двумя вертикальными линиями сетки. Он определяется свойством `grid-template-columns`, либо в сокращённом виде `grid` или `grid-template`.

Кроме того, столбцы могут быть созданы в неявном виде (*implicit grid),* когда элементы расположены за пределами столбцов, созданных в явно-заданной сетке (*explicit grid)*. Размер этих столбцов будет подобран автоматически, либо задан с помощью свойства `grid-auto-columns` (en-US).

При работе с выравниванием в CSS Grid Layout, ось, идущая вниз, вдоль которой идут столбцы, также называется осью блоков или столбцов.

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

### Связанные свойства

* `grid-template-columns`
* `grid-auto-columns` (en-US)
* `grid`
* `grid-template`
### Дальнейшая информация

* CSS Grid Layout Guide: *Basic concepts of grid layout*
Массив
======

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

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

Пример массива на JavaScript:
```

var myArray = [1, 2, 3, 4];

var catNamesArray = ["Jacqueline", "Sophia", "Autumn"];

// Массивы в JavaScript могут содержать информацию различных типов, как представлено выше.
```

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

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

* JavaScript `Array` на MDN
Поднятие
========

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

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

### Пример

Одним из преимуществ помещения в память объявлений функций до выполнения кода является возможность использовать функцию до её объявления. Например:


```js
function catName(name) {
  console.log("Мою кошку зовут " + name);
}

catName("Тигр");
/\*
Результатом будет вывод строки: "Мою кошку зовут Тигр"
\*/
```


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


```js
catName("Раиса");

function catName(name) {
  console.log("Мою кошку зовут " + name);
}
/\*
Результатом будет вывод строки: "Мою кошку зовут Раиса"
\*/
```


Даже если мы вызываем функцию до её объявления, код работает. Это происходит благодаря тому, как работает контекст выполнения в JavaScript.

`Hoisting` хорошо работает и с другими типами данных и переменными. Переменные могут быть инициализированы и использованы до их объявления. Однако, они не могут быть использованы без инициализации.

### Пример:
```

num = 6;
num + 7;
var num;
/* не генерирует ошибку, так как num объявлен */
```


JavaScript "поднимает" только объявление, но не инициализацию. Если вы используете переменную, объявленную и проинициализированную после её использования, то значение будет `undefined`. Два примера ниже демонстрируют это поведение.
```

var x = 1; // Инициализируем x
console.log(x + " " + y);  // '1 undefined'
var y = 2;
//код выше и код ниже одинаковые

var x = 1; // Инициализируем x
var y; // Объявляем y
console.log(x + " " + y);  // '1 undefined'
y = 2; // Инициализируем y
```

### Technical reference

* JavaScript: Understanding the Weird Parts - Udemy.com Course
* var - объявление переменной - MDN
* Функция - MDN
Constant
========

Константа хранит значение, которое программист не хочет изменять, например числа (1, 2, 42). С другой стороны, у переменных программист может установить новое значение (en-US) к переменной, имя которой уже используется.

Как и переменные, константы привязываются к идентификаторам (именам). Например, идентификатор `pi` может быть привязан к значению 3.14…
Null
====

В информатике, значение **`null`** представляет ссылку, которая указывает, обычно намеренно, на несуществующий или некорректный объект или адрес. Смысл null-ссылки различается от языка к языку.

В JavaScript, null – это значение, специально обозначенное как примитив, так как по поведению это в самом деле видимый примитив. Но при этом от `null` унаследованы все остальные Объекты, поэтому, несмотря на то, что null возвращает примитивное значение, его тип это объект:


```js
typeof null === "object";
```

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

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

* Типы данных JavaScript и структуры данных
* Глобальный объект в JavaScript: `null`
Blink
=====

Blink - это браузерный движок с открытым исходным кодом разработанный Google как часть Chromium (и следовательно как часть Chrome). Конкретней, Blink - это ответвление WebCore библиотеки WebKit, поддерживающей макет, рендеринг, и DOM.

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

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

* Домашняя страница проекта Blink
* Blink на Википедии
* FAQ по Blink
Класс
=====

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

В объектно-ориентированном программировании класс описывает характеристики объекта. Класс описывает свойства и методы объекта. Он является шаблоном, с которого срисовываются конкретные экземпляры объектов.

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

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

* Языки, основанные на классах против прототипно-ориентированных (en-US)
* Использование функций как классов в JavaScript
* Класс-ориентированное программирование на Википедии (только английский)
* Объектно-ориентированное программирование на Википедии
JSON
====

*JavaScript Object Notation* (**JSON**) это формат обмена данными. Несмотря на то, что JSON не является строгим подмножеством, он напоминает синтаксис JavaScript. Хотя много языков программирования поддерживают JSON, он особенно полезен для JavaScript-приложений, таких как веб-сайты и расширения для браузера.

JSON может представлять числа, булевы значения, строки, `null`, массивы (упорядоченные последовательности значений) и объекты (состоят из пар ключ-значение). Ключом является строка, значением может выступать любой примитив, массив или объект. JSON изначально не предоставляет поддержки более сложных типов данных, таких как функции, регулярные выражения, даты и так далее. Объекты дат по умолчанию сериализируются в строки, содержащие дату в ISO-формате, поэтому данные не будут утеряны. Если вам нужен JSON для представления дополнительных типов данных, преобразуйте значения в строку в том формате, в котором вы позже хотите его десериализовать.

Как и XML, JSON имеет возможность хранить иерархические данные (в отличие от более традиционного CSV формата). Существует много инструментов для переходов между этими форматами. Например, конвертер JSON в CSV.

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

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

* JSON на Википедии
### Техническая информация

* JSON на MDN
Безопасный метод
================

Метод HTTP является **безопасным**, если он не меняет состояние сервера. Другими словами, безопасный метод проводит операции "только чтение" (read-only). Несколько следующих методов HTTP безопасные: `GET`, `HEAD` или `OPTIONS`. Все безопасные методы являются также идемпотентными, как и некоторые другие, но при этом небезопасные, такие как `PUT` или `DELETE`.

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

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

Правильная реализация безопасного метода - это ответственность **серверного приложения**, потому что сам веб-сервер, будь то Apache, nginx, IIS это соблюсти не сможет. В частности, приложение не должно разрешать изменение состояния сервера запросами `GET`.

Вызов *безопасного* метода, не меняющего состояния сервера:
```

GET /pageX.html HTTP/1.1
```


Вызов *небезопасного* метода, который может поменять состояние сервера:
```

POST /pageX.html HTTP/1.1
```


Вызов идемпотентного, но небезопасного метода:
```

DELETE /idX/delete HTTP/1.1
```

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

### Общие

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

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

Последовательность символов в коде, которые определяют **переменную, функцию или свойство**.

В JavaScript, идентификаторы могут содержать только буквы, цифры (0-9), «`$`» и «`_`», и не могут начинаться с цифры. Идентификатор отличается от строки (string) в том, что строка — это данные, в то время как идентификатор является частью кода. В JavaScript нет способа сконтвертировать идентификаторы в строки, но иногда можно преобразовать (парсить) строки в идентификаторы.
DoS атака
=========

DoS (отказ в обслуживании) - это сетевая атака, которая препятствует обычному использованию ресурсов server (en-US), нагружая сервер "ложными", "фиктивными" запросами.

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

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

### Типы DoS атак

DoS-атаки - это больше категория, чем определённый вид атак. Вот неполный список типов DoS-атак:

* Атака пропускной способности
* Поток запросов на обслуживание
* SYN flooding attack
* ICMP flood attack
* peer-to-peer attack
* permanent DoS attack
* application level flood attack
Learn more
----------

* Denial-of-service on OWASP
* DDoS (en-US)
Number (Числовой тип данных)
============================

В JavaScript, **Number** - числовой тип данных в формате 64-битного числа двойной точности с плавающей запятой. В других языках программирования может существовать несколько числовых типов данных, например: Integer, Float, Double или Bignum.

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

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

* Число двойной точности на Wikipedia
* Число с плавающей запятой на Wikipedia
### Техническая справка

* Числовой тип данных JavaScript: Number
* Глобальный объект JavaScript: `Number`
FTP
===

**FTP** (англ. file transfer protocol — протокол передачи файлов) — стандартный сетевой протокол для передачи файлов с одного хоста на другой через Интернет по протоколу TCP.

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

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

* Руководство по загрузке файлов через FTP для новичка (англ.).
* FTP в Википедии.
Crawler
=======

Поисковый робот(паук, краулер) часто называемый просто "бот" или "робот" это программа, систематически обходящая Web для сбора данных со страниц веб-сайтов. Обычно поисковые сервисы (напр. Google, Bing, и пр.) используют поисковых роботов для индексирования сайтов.

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

* Поисковый робот на Википедии

1. MDN Web Docs Glossary
    1. Search engine (en-US)
Инкапсуляция
============

Инкапсуляция - это упаковка данных и функций в один компонент (например, класс) и последующий контроль доступа к этому компоненту, создавая тем самым "чёрный ящик" из объекта. По этой причине, пользователю необходимо знать только интерфейс этого класса (то есть данные и функции, предоставляемые для взаимодействия с классом извне), а не то, как он реализован внутри.
IPv4
====

IPv4 — это четвертая версия протокола связи, лежащая в основе Интернета и первая широко распространенная версия.

Впервые формализованный в 1981 году, IPv4 восходит к начальным разработкам ARPAnet(Advanced Research Projects Agency Network). IPv4 — это протокол без установления соединения, который используется в сетях канального уровня с коммутацией пакетов (ethernet). IPv6 постепенно заменил IPv4 из-за проблем с безопасностью IPv4 и ограничений поля адреса. (Версия номер 5 была присвоена в 1979 году экспериментальному Интернет протоколу реального времени(Internet Stream Protocol), который, однако, никогда не назывался IPv5.)

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

* IPv4 в Википедии
ISO
===

**ISO** (Международная организация по стандартизации) - это глобальная ассоциация, которая разрабатывает единые критерии, координирующие деятельность компаний в каждой крупной отрасли.

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

### Основные сведения

* Официальный сайт
Adobe Flash
===========

Flash — устаревшая технология, разработанная Adobe, для создания веб-приложений с богатой функциональностью, просмотра мультимедиа контента и потокового медиа. Для использования Flash необходимо установить соответствующий плагин в ваш браузер.

1. Официальный сайт
2. Shumway, свободная реализация от Mozilla
3. Gnash, свободная реализация от GNU
4. Ruffle, свободная реализация
5. Глоссарий
    1. браузер
CSS препроцессор
================

CSS препроцессор (**CSS preprocessor**) - это программа, которая имеет свой собственный синтаксис (syntax (en-US)), но может сгенерировать из него CSS код . Существует множество препроцессоров. Большинство из них расширяет возможности чистого CSS, добавляя такие опции как: примеси, вложенные правила, селекторы наследования и др. Эти особенности облегчают работу с CSS: упрощают чтение кода и его дальнейшую поддержку.

Для использования CSS препроцессора нужно установить CSS компилятор на ваш веб-сервер (server (en-US)).

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

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

Несколько самых популярных CSS препоцессоров:

* SASS
* LESS
* Stylus
* PostCSS
Доменное имя
============

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

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

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

* Understanding domain names
Ложноподобное значение
======================

**Ложноподобное** (**falsy**) значение — значение, которое становится `false` в булевом контексте.

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

В следующей таблице приведен полный список ложноподобных значений JavaScript:

| Значение | Описание |
| --- | --- |
| `false` | Ключевое слово `false`. |
| `0` | Ноль `Number` (к нему также относятся `0.0`, `0x0` и т.д.). |
| `-0` | Отрицательный ноль типа `Number` (к нему также относятся `-0.0`, `-0x0` и т.д.). |
| `0n` | Ноль типа `BigInt` (также `0x0n`). Обратите внимание, что не может быть негативного нуля типа `BigInt` — отрицательный `0n` равняется `0n`. |
| `""`, `''`, ```` | Значение, содержащее пустую строку . |
| null | null — отсутствие какого-либо значения. |
| undefined | undefined — примитивное значение. |
| NaN (en-US) | NaN — значение, не являющиеся числом. |
| `document.all` | Объекты считаются ложноподобными тогда и только тогда, когда у них есть внутренний слот [[IsHTMLDDA]]. Этот слот есть только в объекте `document.all`, и его нельзя задать через JavaScript. |

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

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


```js
if (false)
if (null)
if (undefined)
if (0)
if (-0)
if (0n)
if (NaN)
if ("")
```

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

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


```js
false && "dog";
// ↪ false

0 && "dog";
// ↪ 0
```

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

* Truthy
* Type\_coercion
* Boolean
SGML
====

Стандартный обобщённый язык разметки (**SGML**) это спецификация ISO для определения декларативных языков разметки.

В вебе, HTML 4, XHTML, и XML популярные языки SGML-типа. Стоит отметить, что с момента своего пятого издания HTML больше не основан на SGML и имеет свои собственные правила синтаксического анализа.

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

* Введение в SGML
XML
===

eXtensible Markup Language (XML) - расширяемый язык разметки, рекомендованный Консорциумом Всемирной паутины (W3C). В отрасли информационных технологий (ИТ) используется множество языков на основе XML в качестве языков описания данных.

Тэги XML напоминают тэги HTML, но XML гораздо более гибкий, поскольку он позволяет пользователям определять свои собственные тэги. Таким образом, XML действует как мета-язык, то есть его можно применить для определения других языков, например RSS (en-US). Кроме того, HTML является языком презентации, тогда как XML является языком описания данных. Это означает, что XML имеет гораздо более широкое применение, чем просто веб-интерфейс. Например, веб-службы могут использовать XML для обмена запросами и ответами.

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

* XML Введение
CMS
===

CMS (Content Management System, рус. "Система управления содержимым") - это программа, которая позволяет пользователям публиковать, организовывать, изменять или удалять различные виды контента: не только текст, но и встроенные картинки, видео, аудио, и интерактивный код.
Гипертекст
==========

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

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

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

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

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

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

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

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

### Technical reference

* Open Web platform specifications
Псевдоэлемент
=============

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

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

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

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

Инструменты разработчика (от англ. "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
КЦД
===

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

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

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

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

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

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

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

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

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

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