recursal/MDN huggingface dataset:
Glossaire MDN : définitions des termes du Web
=============================================

Les technologies Web font l'objet d'un important jargon et utilisent des abréviation utilisées dans la documentation et le code. Ce glossaire fournit une définition des mots et abréviations qui vous seront nécessaires pour pouvoir comprendre et utiliser le Web.

Vous pouvez parcourir les termes du glossaire en utilisant la barre latérale.

**Note :** Le glossaire et sa traduction en français sont en constante évolution. Vous pouvez aider en traduisant les pages correspondantes depuis l'anglais ou en améliorant les pages existantes.
Le projet MDN
=============

Le **Mozilla Developer Network** (MDN) est un wiki sur lequel sont documentés le Web ouvert, les technologies Mozilla, Firefox OS et d'autres sujets intéressant les développeurs. Nous accueilllons tout le monde pour modifier et ajouter du contenu. Nul besoin d'être un développeur ou de connaître très bien ces technologies. De nombreuses actions sont possibles, des plus simples (comme des relectures et corrections) aux plus complexes (documentation des API).

Le but du projet MDN est de documenter le Web ouvert, les technologies Mozilla et les projets Mozilla. Nous vous invitons à nous aider !

Nous avons besoin de votre aide ! C'est facile. Ne vous souciez pas de demander permission ou d'avoir peur de faire des erreurs. D'autre part, n'hésitez pas à connaître la communauté MDN, nous sommes là pour aider ! La documentation ci-dessous vous aidera à débuter.

* Pour commencer
 Vous êtes nouveau sur MDN et voulez apprendre comment le rendre meilleur ? Commencez par là !
* Je suis un utilisateur avancé
 Accédez à notre guide complet pour les contributeurs de MDN afin d'en apprendre plus une fois que vous êtes à l'aise.
* Faites passer le mot
 Si vous aimez MDN, faites le savoir ! Vous trouverez ici des outils et guides pour promouvoir MDN.
Voir aussi
----------

* Rejoindre la communauté MDN
Technologies web pour développeurs
==================================

Le Web fournit d'incroyables opportunités aux développeuses et développeurs. Pour tirer le meilleur parti de ces technologies, il est nécessaire de savoir comment les utiliser. Voici différents liens qui vous permettront de naviguer dans la documentation de ces technologies web.

Documentation pour le développement web
---------------------------------------

Références

Une liste de l'ensemble des références sur les technologies web dont celles sur HTML, CSS, etc.

Guides

Cette page fournit différents tutoriels pour vous aider à manipuler les technologies web afin de réaliser ce que vous souhaitez.

Tutoriels

Une liste de tutoriels qui progressent étape par étape pour apprendre les API, langages et autres sujets.

Les applications web progressives (*Progressive Web Applications* ou PWA en anglais)

Les applications web progressives sont des applications web qui utilisent les API et les fonctionnalités du navigateur ainsi que des stratégies d'amélioration progressive afin d'apporter une expérience utilisateur semblable aux applications natives et qui puissent fonctionner sur les différentes plateformes web.

Références des technologies web
-------------------------------

API Web

Les références pour l'ensemble des API qui permettent de rendre le Web interactif et scriptable. On y trouve notamment le DOM, les diverses interfaces et API utilisées pour construire du contenu et des applications web.

HTML

*HyperText Markup Language* est le langage utilisé pour décrire et définir le contenu d'une page web.

CSS

*Cascading Style Sheets* est le langage utilisé pour décrire l'apparence du contenu web.

JavaScript

JavaScript est le langage de programmation utilisé pour ajouter de l'interactivité à un site web.

HTTP

*HyperText Transfer Protocol* est le protocole utilisé entre le navigateur et les serveurs web.

SVG

*Scalable Vector Graphics* est un format qui permet de décrire des images comme ensembles de vecteurs et de formes afin de pouvoir les mettre à l'échelle quelles que soient les dimensions selon lesquelles elles sont dessinées.

MathML

*Mathematical Markup Language* est un langage qui permet d'afficher des expressions mathématiques complexes.
Mozilla
=======

Les articles ci-dessous intégrent des contenus à propos du téléchargement et de la compilation du code de Mozilla. De plus, vous trouverez des articles utiles expliquant le fonctionnement du code et indiquant les modalités de construction d'extensions pour les applications Mozilla et semblables.

FirefoxFirefox est le navigateur populaire de Mozilla, disponible sur de nombreuses plates-formes dont Windows, Mac OS et Linux pour les ordinateurs de bureau, ainsi que Android et iOS pour les appareils mobiles. Grâce à une large compatibilité, les dernières nouveautés en technologie web et des outils puissants pour développer, Firefox est idéal pour les développeurs web et les utilisateurs.

ModulesLes modules complémentaires (*add-ons*) permettent aux développeurs d'ajouter et de modifier les fonctionnalités de Firefox. Les modules sont écrits à l'aide de technologies web standard : JavaScript, HTML, et CSS - et d'API JavaScript spécifiques à ces modules. Un module complémentaire peut, par exemple, être utilisé pour :
Normatif
========

Normatif est un mot communément utilisé dans des spécifications logicielles pour désigner les sections qui sont standardisées et qui doivent être suivies comme des règles. Les spécifications peuvent également contenir des sections marquées *non normatives* ou *informatives*, ce qui signifie qu'elles sont données dans le but d'aider le lecteur à mieux comprendre les spécifications ou pour apporter un exemple concret ou de bonnes pratiques, qui n'ont pas à être suivis comme une règle.

Voir aussi
----------

* Description de contenu normatif et informatif sur le wiki WHATWG
Adobe Flash
===========

*Adobe Flash* est une technologie obsolescente, développée par Adobe Systems, qui permet de créer des applications internet riches, des graphiques vectoriels et des applications multimédias. Pour utiliser Flash au sein d'un navigateur web, vous devez installer le plugin adéquat.

Voir aussi
----------

### Culture générale

* Site officiel d'Adobe
* Shumway, une implémentation libre par Mozilla
* Présentation du projet Gnash sur Sourceforge, une implémentation libre par GNU.
pare-feu
========

Un **pare-feu** est un système qui filtre les connexions réseaux. Il peut aussi bien les autoriser à passer que les bloquer en fonction de certaines règles spécifiques. Par exemple, il peut bloquer une connexion entrante sur un certain port ou des connexions sortantes vers une certaine adresse IP.

Les pare-feu peuvent être un simple composant logiciel ou se présenter sous la forme d'une machine dédiée dont la seule fonction est d'agir en tant que pare-feu.

Voir aussi
----------

### Culture générale

* Pare-feu (informatique) sur Wikipédia
Type énuméré
============

En informatique, un type **énuméré** est un type de données qui consiste en un ensemble restreint de valeurs nommées.

Les attributs HTML énumérés
---------------------------

En HTML, les attributs énumérés (parfois appelés à valeur contrainte) sont des attributs dont les valeurs possibles sont un ensemble prédéfini de chaînes de caractères. Ainsi, l'attribut HTML universel `dir` possède trois valeurs valides : `ltr`, `rtl`, et `auto`.

Chaque attribut énuméré possède une valeur par défaut lorsque l'attribut est présent sans sa valeur et une valeur par défaut lorsqu'une valeur invalide lui est associée. À la différence des attributs HTML booléens qui valent toujours vrai que la valeur soit présente, omise ou invalide, les attributs HTML énumérés peuvent avoir une valeur par défaut différente en fonction que la valeur est omise ou invalide. Par exemple, l'attribut HTML universel `contenteditable` n'a que deux valeurs valides : `true` et `false`. Si l'attribut est présent, mais qu'aucune valeur n'est indiquée, la valeur par défaut sera `true`. En revanche, si une valeur invalide est utilisée (par exemple `contenteditable="contenteditable"`), la valeur utilisée effectivement correspondra à un troisième état, `inherit`.

Les attributs ARIA énumérés
---------------------------

Les états et propriétés ARIA font partie de HTML et ont également des attributs énumérés. Si un attribut ARIA peut prendre la valeur `true` ou `false`, on considèrera généralement qu'un attribut omis vaut `false` et qu'une valeur invalide vaut `true` (la valeur par défaut pour l'utilisation d'une valeur omise ou d'une chaîne de caractères vide comme valeur dépendra de l'attribut).

L'attribut `aria-current` accepte par exemple une liste de valeurs limitée qui contient `page`, `step`, `location`, `date`, `time`, `true`, et `false`. Dans ce cas, si l'attribut est absent, vaut la chaîne de caractères vide, est présent sans valeur ou est paramétré avec `aria-current="false"`, l'attribut sera considéré comme faux et ne sera pas exposé. Toute valeur qui est une chaîne de caractères non vide et qui ne fait pas partie de la liste indiquée sera considérée comme équivalente à l'utilisation de `aria-current="true"`.

Les propriétés JavaScript énumérables
-------------------------------------

En JavaScript, les propriétés énumérables sont les propriétés dont le marqueur interne `enumerable` est vrai (ce qui est le comportement par défaut pour les propriétés créées avec une affectation simple ou un initialisateur de propriétés. La plupart des mécanismes d'itération (comme les boucles `for…in` ou la méthode `Object.keys()`) ne parcourent que les clés énumérables.

Voir aussi
----------

* Booléen
* Les types et structures de données en JavaScript
* Les attributs énumérés HTML dans le standard HTML (en anglais)
Descripteur (CSS)
=================

Un **descripteur CSS** définit les caractéristiques des `règles @`. Celles-ci autorisent les valeurs sous la forme de descripteurs. Chaque règle est composée d'un sélecteur et d'un descripteur. Le descripteur a :

* un nom
* une valeur, qui contient les valeurs des composants
* un étiquette "! important" qui, dans son état naturel, n'est pas définie
FTP
===

**FTP** (file transfer protocol) est un protocole réseau standard utilisé pour transférer des fichiers d'un hôte à un autre par Internet. De plus en plus, cependant, les équipes et les comptes d'hébergement n'autorisent pas le FTP et s'appuient plutôt sur un système de contrôle de version comme Git. Vous le trouverez toujours utilisé sur les anciens comptes d'hébergement, mais il est sûr de dire que FTP n'est plus considéré comme la meilleure pratique.

Voir aussi
----------

### Connaissances générales

* Guide du débutant pour mettre en ligne des fichiers via FTP
* FTP sur Wikipédia
Flexbox
=======

Flexbox (*boîte flexible*) est le nom communément utilisé pour le module de mise en page des boîtes flexibles CSS, un modèle de disposition pour afficher des éléments dans une seule dimension - comme une ligne ou une colonne.

Dans la spécification, flexbox est décrite comme un modèle de disposition pour la conception de l'interface utilisateur. La caractéristique clé de flexbox est le fait que les articles dans une disposition flexible peuvent grandir et rétrécir. De l'espace peut être affecté aux éléments eux-mêmes ou distribué entre ou autour des éléments.

Flexbox permet également l'alignement des éléments sur l'axe principal ou transversal, offrant ainsi un niveau élevé de contrôle sur la taille et l'alignement d'un groupe d'éléments.

Voir aussi
----------

### Références de la propriété

* `align-content`
* `align-items`
* `align-self`
* `flex`
* `flex-basis`
* `flex-direction`
* `flex-flow`
* `flex-grow`
* `flex-shrink`
* `flex-wrap`
* `justify-content`
* `order`
### En lire plus

* *CSS Flexible Box Layout Module Level 1 Specification*
* Guide Flexbox CSS : *Les concepts de base pour flexbox*
* Guide Flexbox CSS : *Les liens entre flexbox et les autres méthodes de disposition*
* Guide Flexbox CSS : *Aligner des éléments dans un conteneur flexible*
* Guide Flexbox CSS : *Ordonner les éléments flexibles*
* Guide Flexbox CSS : *Contrôler les proportions des boîtes flexibles le long de l'axe principal*
* Guide Flexbox CSS : *Maîtriser le passage à la ligne des éléments flexibles*
* Guide Flexbox CSS : *Cas d'utilisation classiques de flexbox*
PAC
===

Un fichier Proxy Auto-Configuration (PAC) est un fichier qui contient une fonction `FindProxyForURL()` laquelle est utilisée par le navigateur pour déterminer si les requêtes (y compris HTTP, HTTPS et FTP) doivent être envoyées directement à la destination, ou si elles doivent être transmises via un serveur proxy Web.


```js
function FindProxyForURL(url, host) {
  /\* ... \*/
}

ret = FindProxyForURL(url, host);
```


Voir fichier Proxy Auto-Configuration (PAC) (en-US) pour plus de détails sur la façon de les utiliser et d'en créer de nouveaux.

Voir aussi
----------

### Culture générale

* PAC sur Wikipédia
### Référence technique

* Fichier d'auto-configuration du Proxy (en-US) sur MDN
Variable globale
================

Une variable globale est une Variable déclarée dans une portée globale en d'autres termes, une variable visible depuis toutes les autres portées.

En JavaScript, c'est une propriété de l'objet global.

Voir aussi
----------

### Culture générale

* Variable globale sur Wikipédia
Type coercion
=============

La *type coercion* (en français, coercition de type) est la conversion automatique ou implicite de valeurs d'un type de données à un autre (par exemple : de string à nombre). La *type conversion* est similaire à la *type coercion* puisque les deux convertissent des valeurs d'un type de données à un autre. La différence fondamentale entre elles est que la *type coercion* est implicite alors que la *type conversion* peut être implicite ou explicite.

Exemples
--------


```js
const valeur1 = "5";
const valeur2 = 9;
let somme = valeur1 + valeur2;

console.log(somme);
```


Dans l'exemple ci-dessus, Javascript a *coercé* le nombre `9` en une string, et a concaténé les deux valeurs, ce qui donne comme résultat la string `59`. JavaScript avait le choix entre une string et un nombre et a décidé d'utiliser une string.

Le compilateur aurait pu coercer le `5` en un nombre et retourner la somme de `14`, mais ce n'est pas ce qu'il a fait. Pour pouvoir retourner `14`, il aurait fallu explicitement convertir le 5 en un nombre grâce à la méthode `Number()` :


```js
somme = Number(valeur1) + valeur2;
```

Voir aussi
----------

* Type
* Type conversion
* Conversion de type sur Wikipédia
Nom de domaine
==============

Un nom de domaine est l'adresse d'un site web sur l'Internet. Les noms de domaine sont utilisés dans les URLs pour identifier le serveur qui héberge une page web particulière. Le nom de domaine consiste en séquence hiérarchique de noms (labels) séparés par des points et terminée par une extension.

Pour en savoir plus
-------------------

### Culture générale

* Nom de domaine sur Wikipédia
* Comprendre les noms de domaine
Glyphe
======

Un **glyphe** est un terme utilisé en typographie pour désigner la représentation visuelle d'un (ou plusieurs) caractère.

Les polices utilisées par un site web contiennent différents ensembles de glyphes qui représentent les caractères de la police.

Voir aussi
----------

### Culture générale

* Glyphe sur Wikipédia
* Glyph, character and grapheme (Glyphe, caractère et graphème) sur Quora (en anglais)
Compression sans perte
======================

**La compression** **sans perte** est un type d'algorithme de compression qui permet aux données d'origine d'être parfaitement restituées à partir des données compressées. Les méthodes de compression sans perte sont réversibles. Parmi les exemples de compression sans perte on retrouve GZIP, Brotli, WebP, and PNG,

Lossy compression, en revanche, résulte en une approximation inexacte, puisque certaines données du fichier d'origine ont été abandonnées, faisant de la compression avec perte une méthode irréversible.

Voir aussi
----------

Glossary

1. GZIP
2. Brotli
3. PNG
4. Lossy compression
Préfixe vendeur
===============

Les vendeurs de navigateurs ajoutent parfois des préfixes aux propriétés CSS expérimentales ou non standards. Les développeurs peuvent ainsi les expérimenter sans que les changements de comportement du navigateur ne cassent le code pendant le processus de standardisation. Les développeurs sont supposés attendre que le comportement du navigateur soit standardisé pour inclure la propriété non préfixée.

**Note :** Les fournisseurs de navigateurs s'efforcent d'arrêter l'utilisation des préfixes fournisseurs pour les fonctionnalités expérimentales. Les développeurs Web les utilisent sur des sites Web de production, malgré leur caractère expérimental. Cela a rendu plus difficile la compatibilité des fournisseurs de navigateurs et le travail sur de nouvelles fonctionnalités ; cela a également été nuisible aux petits navigateurs qui se sont retrouvés obligés d'ajouter des préfixes d'autres navigateurs afin de charger des sites web populaires.

Dernièrement, la tendance consiste à ajouter des fonctionnalités expérimentales derrière des indications contrôlées par l'utilisateur, et de travailler sur des spécifications plus petites et dont la stabilité est atteinte plus rapidement.

CSS préfixes
------------

En général, les principaux navigateurs utilisent ces préfixes :

* `-webkit- (`Chrome, nouvelles versions d'Opera.)
* `-moz-` (Firefox)
* `-o-` (Anciennes versions d'Opera)
* `-ms-` (Internet Explorer et Edge)
API préfixes
------------

Historiquement, les fournisseurs ont également utilisé des préfixes pour les API expérimentales. Si une interface entière est expérimentale, alors le nom de l'interface est préfixé (mais pas les propriétés ou méthodes à l'intérieur). Si une propriété ou une méthode expérimentale est ajoutée à une interface normalisée, la méthode ou la propriété individuelle est préfixée.

### Interfaces préfixes

Les préfixes pour les noms d'interface sont en majuscules:

* `Webkit` (Chrome, Safari, versions d'Opera récentes, presque tous les navigateurs iOS (y compris Firefox pour iOS) ; fondamentalement, tout navigateur basé sur WebKit).
* `Moz` (Firefox)
* `O` (anciennes versions d'Opera)
* `MS` (Internet Explorer et Edge)
### Propriétés et méthodes préfixes

Quant aux propriétés et aux méthodes, sont généralement utilisés :

* `webkit (`Chrome, Safari, nouvelles versions d'Opera, presque tous les navigateurs IOS (y compris Firefox pour IOS), fondamentalement, tout navigateur basé sur WebKit).
* `moz` (Firefox)
* `o` (anciennes versions d'Opera)
* `ms` (Internet Explorer et Edge)
Voir aussi
----------

### Culture générale

* Section en anglais sur les préfixes des navigateurs en CSS sur Wikipédia
Cryptographie
=============

La **cryptographie**, ou cryptologie, est la science qui étudie comment coder et transmettre des messages de manière sécurisée. La cryptographie conçoit et étudie des algorithmes (utilisés pour coder et décoder des messages dans un environnement non sûr) et leurs applications. En plus de la **confidentialité des données,** la cryptographie s'attaque aussi à l'**identification**, l'**authentification**, la **non-répudiation**, et l'**intégrité des données**. Par conséquent, elle étudie également l'usage des méthodes cryptographiques dans ce contexte, les **cryptosystèmes**.

Voir aussi
----------

### Culture générale

* Cryptographie sur Wikipédia
* cryptanalyse
* Tutoriel sur la sécurité de l'information
En-tête
=======

L'**en-tête** est la partie d'un document HTML qui contient les métadonnées qui le concernent, comme son auteur, sa description et des liens vers des fichiers CSS ou JavaScript qui s'appliquent au HTML.

Voir aussi
----------

### En-tête HTML

* Référence sur l'élément `<head>` sur MDN
* La balise HTML <head> dans la zone d'apprentissage du MDN
Colonne de grille
=================

Une **colonne de grille** est une piste verticale dans une grille CSS, et est l'espace entre deux lignes de grille verticales. Elle est définie par la propriété `grid-template-columns` ou les propriétés raccourcies `grid` ou `grid-template`.

De plus, des colonnes peuvent être créées dans la grille implicite lorsque les éléments sont placés en dehors des colonnes créées dans la grille explicite. Ces colonnes seront automatiquement redimensionnées ou peuvent avoir une taille spécifiée avec la propriété `grid-auto-columns`.

Lorsque vous travaillez avec l'alignement dans les grilles CSS, l'axe vers le bas duquel les colonnes s'exécutent est connu comme l'axe de *colonne (ou bloc)*.

Voir aussi
----------

### Références de propriété

* `grid-template-columns`
* `grid-auto-columns`
* `grid`
* `grid-template`
### En lire plus

* Guide des grilles CSS : *Les concepts de base des grilles CSS*
CMS
===

Un CMS (*Content Management System* ou Système de gestion de contenu) est un logiciel permettant à un utilisateur de publier, organiser, modifier et supprimer différents types de contenus. Il peut s'agir de textes, d'images, de vidéos, de son ou encore, de code interactif.

Voir aussi
----------

### Culture générale

* Système de gestion de contenu sur Wikipédia
Paramètre
=========

Un paramètre est une variable nommée passée à une fonction. Les paramètres servent à importer des arguments à l'intérieur des fonctions.

Remarquez la différence entre *paramètres* et *arguments* :

* Les paramètres d'une fonction sont les noms listés dans la définition de la fonction.
* Les arguments d'une fonction sont les valeurs réelles passées à la fonction.
* Les paramètres sont initialisés avec les valeurs des arguments fournis.

Deux sortes de paramètres :

paramètres d'entrée

le type le plus fréquent ; ils passent des valeurs aux fonctions. En fonction du langage de programmation, les paramètres d'entrée peuvent être passés de plusieurs manières (e.g., appel par valeur, appel par adresse, appel par référence).

paramètres de retour/sortie

retournent principalement plusieurs valeurs depuis une fonction, mais ce n'est pas recommandé car cela peut prêter à confusion

Voir aussi
----------

### Culture générale

* Difference between *parameter* and *argument* sur Wikipédia
### Référence technique

* Parameter-Passing Modes
Moteur
======

Le moteur JavaScript est un interpréteur qui analyse et exécute un programme JavaScript.

Plus d'informations
-------------------

### Culture générale

* Moteur JavaScript sur Wikipédia
XML
===

eXtensible Markup Language (XML) est un langage de balisage générique définit par le W3C. Le secteur IT utilise de nombreux langages basés sur XML comme langages de description de données.

Les balises XML ressemblent aux balises HTML, mais XML est beaucoup plus flexible car il laisse l'utilisateur définir ses propres balises. De cette manière, XML se comporte comme un méta-langage, c'est-à-dire un langage utilisé pour définir d'autres langages, tels que RSS. De plus, HTML est un langage de présentation, alors que XML est un langage de description de données. Cela signifie que XML est ouvert à un éventail d'applications bien plus large que le seul Web. Par exemple, des services Web peuvent utiliser XML pour échanger des requêtes et des réponses.

Pour en savoir plus
-------------------

### Apprendre sur ce sujet

* Démarrer avec XML
Navigateur
==========

Un *navigateur internet* est un programme informatique qui reçoit et affiche les pages du Web, et permet aux utilisateurs d'accéder à d'autres pages au travers d'hyperliens.

Voir aussi
----------

### Connaissances générales

* Navigateur web sur Wikipédia
* L'évolution du Web
### Télécharger un navigateur

* Mozilla Firefox
* Google Chrome
* Microsoft Internet Explorer
* Navigateur Opera
Argument
========

Un **argument** est une valeur (primitive ou objet) passée en tant qu'entrée à une fonction.

Voir aussi
----------

### Culture générale

* Argument sur Wikipédia
### Informations techniques

* L'objet `arguments` en JavaScript