recursal/MDN huggingface dataset:
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
=====================

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

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

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

* Summary and resources (en-US)
* Pros and cons of going responsive (en-US)
* Responsive Web Design
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()` удаляется из очереди стека вызовов.


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

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

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

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

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

* Как работает Интернет (введение для начинающих)
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
=====

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

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

* Наше руководство по HTML5
Миксин
======

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

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

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

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

### General knowledge

* Mixin on Wikipedia
WebSockets
==========

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

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

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

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

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

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

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

(function () {
    statements
})();
```


Это тип выражений, также известный как Self-Executing Anonymous Function, который состоит из двух основных частей. Первая - это сама анонимная функция с лексической областью видимости, заключённым внутри `Оператора группировки` `()`. Благодаря этому переменные IIFE замыкаются в его пределах, и глобальная область видимости ими не засоряется.

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

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

Функция становится мгновенно выполняющимся функциональным выражением. Переменные внутри функции не могут быть использованы за пределами её области видимости.
```

(function () {
    var aName = "Barry";
})();
// Variable name is not accessible from the outside scope
aName // throws "Uncaught ReferenceError: aName is not defined"
```


Переменная, которой присвоено IIFE, хранит в себе результат выполнения функции, но не саму функцию.
```

var result = (function () {
    var name = "Barry";
    return name;
})();
// Immediately creates the output:
result; // "Barry"
```

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

### Материалы

* Ben Alman's blog post defining IIFEs
* Quick example (в конце абзаца "Functions", сразу после "Custom objects")
First input delay
=================

**Задержка первого ввода** (англ. First input delay, FID) - одна из метрик производительности веб-страниц, которая описывает время, которое прошло с момента, когда пользователь впервые начал взаимодействовать с веб-страницей, т.е. нажал на ссылку, кнопку или использует элемент управления на основе JavaScript, до момента, когда веб-браузер может ответить на данное взаимодействие. Таким образом, это промежуток времени в миллисекундах между первым взаимодействием пользователя с веб-страницей и ответом браузера на это взаимодействие. Прокрутка и масштабирование не включены в этот показатель.

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

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

* requestIdleCallback
* lazy loading (en-US)
Пустой элемент
==============

**Пустой элемент** — элемент HTML, SVG или MathML, который **не может** иметь дочерних узлов (т.е. вложенных элементов или текста внутри себя).

Спецификации HTML, SVG и MathML спецификации очень строго определяют, какой элемент что может содержать. Многие комбинации семантически не имеют смысла, например элемент `<audio>` внутри элемента `<hr>`.

В HTML использование закрывающего тега для пустого элемента обычно ошибочно. Например, `<input type="text"></input>` является недопустимым HTML.

Пустые элементы в HTML:

* `<area>`
* `<base>`
* `<br>`
* `<col>`
* `<embed>`
* `<hr>`
* `<img>`
* `<input>`
* `<link>`
* `<meta>`
* `<param>` (en-US)
* `<source>`
* `<track>`
* `<wbr>`
IANA
====

**IANA** (Internet Assigned Numbers Authority) является дочерней компанией ICANN, задача которой записывать и/или назначать доменные имена, IP-адреса, и другие имена и номера, используемые Интернет протоколами.

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

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

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

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

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

* Структура данных JavaScript: `BigInt`
* Глобальный объект JavaScript `BigInt`
SVG
===

*Масштабируемая векторная графика* ( **SVG** ) - это формат двумерного векторного изображения на основе синтаксиса XML.

W3C начал работу над SVG в конце 1990 - х годов, но SVG стал популярным, когда Internet Explorer 9 вышел с поддержкой SVG. Все основные, браузеры теперь поддерживают SVG.

На основе синтаксиса XML, SVG можно стилизовать с помощью CSS и сделать интерактивным с использованием JavaScript. HTML5 теперь позволяет прямое встраивание тегов SVG в HTML документ.

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

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

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

* W3.org's SVG Primer
### Техническая документация

* SVG documentation on MDN
* Latest SVG specification
First CPU idle
==============

Метрика **First CPU Idle** показывает, через какое время страница становится "минимально" интерактивной, или когда основной поток достаточно свободен, чтобы обработать пользовательский ввод. Это нестандартный показатель веб-производительности от компании Google. Он отражает момент, когда большинство (но не обязательно все) видимых элементов пользовательского интерфейса становятся интерактивными и доступными для взаимодействия с пользователем. В среднем для большинства видов пользовательского ввода это равно 50 мс.

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

* Метрики, которые были замещены First CPU Idle:
    + Время до интерактивности
    + Total blocking time
Блок (CSS)
==========

**Блок** на Веб-странице это HTML элемент, который начинается с новой строки, т.е. под предыдущим элементом и над следующим (обычно называется *блочным элементом*). Например, `<p>` по умолчанию блочный элемент, в то время как `<a>` — *строчной элемент*: можно разместить несколько ссылок (одну за другой) в вашем HTML-коде и они все будут выводиться на одной и той же строке.

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

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

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

* Visual formatting model
Блок (скриптинг)
================

В JavaScript блок это набор связанных инструкций заключённых в скобки `{}`. Например, можно поместить блок инструкций после блока `if (condition)`, чтобы интерпретатор выполнял код в блоке, если условие имеет значение true, или пропускал целый блок, если значение условия false.

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

### Почитай вот это

* Блок инструкций в JavaScript
SVG
===

**С чего начать**
 Этот урок поможет вам начать использовать SVG.

**Масштабируемая векторная графика (Scalable Vector Graphics — SVG)** является языком разметки расширенным из XML (en-US) для описания двухмерной векторной графики. SVG по существу является графикой, так же, как XHTML — текстом.

SVG по своим возможностям приближается к запатентованной технологии Adobe Flash, но отличается от неё тем, что SVG является рекомендацией W3C (то есть, стандартом), и тем, что это формат, основанный на XML, в противовес закрытому двоичному формату Flash. Он явно спроектирован для работы с другими стандартами W3C, такими, как CSS, DOM (en-US) и SMIL.

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

SVG — открытый стандарт, разработанный World Wide Web консорциумом (W3C) с 1999 года.

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

Справочник по элементам SVG

Подробная информация о каждом элементе SVG.

Справочник по атрибутам SVG

Подробная информация о каждом атрибуте SVG.

Справочник по интерфейсу SVG DOM

Подробная информация по всему SVG DOM API.

Применение эффектов SVG к содержимому HTML

 SVG работает вместе с HTML, CSS и JavaScript.
 Используйте SVG для улучшения обычной страницы HTML или веб-приложения..


SVG в Mozilla

Замечания и информация о том, как SVG реализован в Mozilla.

* Полнота реализации SVG в Firefox
* SVG - учебное руководство
* SVG в XHTML

Инструменты
-----------

* Набор для тестирования SVG
* Валидатор SVG (уже не работает)
* Больше инструментов…
* Другие ресурсы: XML (en-US), CSS, DOM (en-US), Canvas
Примеры
-------

* Карты Google (маршруты поверх карты) и Документы Google (диаграммы в электронных таблицах)
* Меню из пузырьков на SVG
* Рекомендации по составлению SVG
* Обзор Проекта Mozilla SVG
* Часто задаваемые вопросы, касающиеся SVG и Mozilla
* Слайды и демонстрации с обсуждения SVG и Mozilla, проходившего на SVG Open 2009
* Использование SVG в качестве изображения (en-US)
* SVG анимация при помощи SMIL (en-US)
* Художественная галерея SVG
* Больше примеров (примеры SVG с carto.net)
### Анимация и взаимодействие

Как и HTML, SVG имеет объектную модель документа (DOM) и события и всё это может быть доступно через JavaScript. Это позволяет разработчикам создавать роскошные анимации и интерактивные изображения.

* Некоторые захватывающие работы с использованием SVG на svg-wow.org
* Расширение Firefox (Grafox) для добавления поддержки анимации с использованием SMIL
* Интерактивное управление фотографиями
* Использование `foreignObject` из SVG для изменения HTML
* Анимация SVG спидометр
### Карты, диаграммы, игры и эксперименты с 3D

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

* Тетрис
* Connect 4
* Популяционная карта США
* jVectorMap (интерактивные карты для визуализации данных)
Прогрессивные веб-приложения
============================

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

![](/ru/docs/Web/Progressive_web_apps/discoverable.svg)

**Заметные** (en-US)

Приложения замечаются поисковыми системами.

![](/ru/docs/Web/Progressive_web_apps/installable.svg)

**Продвинутые (en-US)**

Доступные на любых устройствах без нужды в магазине приложений.

![](/ru/docs/Web/Progressive_web_apps/linkable.svg)

**Доступные (en-US)**

Легко поделиться ими через ссылку.

![](/ru/docs/Web/Progressive_web_apps/network-independent.svg)

**Независимые (en-US)**

Работают в офлайне или на низкоскоростных соединениях.

![](/ru/docs/Web/Progressive_web_apps/progressive.svg)

**Передовые (en-US)**

Работают для любого пользователя.

![](/ru/docs/Web/Progressive_web_apps/responsive.svg)

**Отзывчивые (en-US)**

Помещаются на любой экран: настольный компьютер, смартфон, планшет и т.д.

![](/ru/docs/Web/Progressive_web_apps/safe.svg)

**Безопасные (en-US)**

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

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

* Передовые веб-приложения (англ.) на Google Developers
Доступность
===========

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

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

«Термин "специальные возможности" часто применяется для описания возможности использования или удобства использования системы людьми с ограниченными возможностями, например, инвалидами на креслах-колясках. Это понятие следует понимать более широко, например, оно охватывает шрифт Брайля, пандусы для инвалидов на креслах-колясках, аудио-сигналы на пешеходных переходах, оборудованные рифлёной тактильной плиткой пешеходные дорожки, разработку веб-сайтов и так далее." Статья Accessibility в английской Википедии

"**Интернет принципиально создан для всех людей на Земле,** независимо от их аппаратных, программных, языковых, культурных, территориальных, физических или умственных способностей." W3C - Accessibility

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

Веб-разработка (en-US)

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

ARIA (en-US)

Набор статей о том, как сделать HTML-файлы доступнее с помощью ARIA.

Разработка вспомогательных технологий (технических средств реабилитации, ТСР)

Набор статей для разработчиков ТСР.

Mobile accessibility checklist

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

Инструменты для веб-разработчиков
---------------------------------

* Fangs, эмулятор программы экранного доступа
* Claws - эмулятор программы экранного доступа
Другие полезные сайты
---------------------

* Список программ экранного доступа
Веб-безопасность
================

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

Same-origin policy**Политика одинакового источника** (same-origin policy) определяет как документ или скрипт, загруженный из одного источника (origin), может взаимодействовать с ресурсом из другого источника. Это помогает изолировать потенциально вредоносные документы, снижая количество возможных векторов атак.