recursal/MDN huggingface dataset:
Entité
======

Une **entité** HTML est une chaîne de texte *(string)* qui commence par (`&)` et se termine avec `(;)`. Les entités sont fréquemment utilisées pour afficher des caractères réservés (qui seraient autrement interprétés comme du code HTML) et des caractères invisibles (comme des espaces insécables). Vous pouvez également les utiliser à la place d'autres caractères difficiles à taper avec un clavier standard.

De nombreux caractères sont des entités mnémoniques. Par exemple, l'entité pour le copyright symbole (`©`) est `&copy;`. Pour les caractères non mémorisables, comme `&#8212;` ou `&#x2014;`, vous pouvez utiliser un tableau de référence ou un outil décodeur.

Caractères réservés
-------------------

Certains caractères spéciaux sont réservés pour une utilisation en HTML, ce qui signifie que votre navigateur les analysera en tant que code HTML. Par exemple, si vous utilisez le signe inférieur (<), le navigateur interprète tout texte qui suit comme une balise.

Pour afficher ces caractères comme texte, il faut les remplacer par l'entité de caractère correspondante, comme montrée dans le tableau suivant :

| Caractère | Entité | Remarque |
| --- | --- | --- |
| & | `&amp;` | Interprété comme le début d'une référence d'entité ou de caractère. |
| < | `&lt;` | Interprété comme le début d'une balise |
| > | `&gt;` | Interprété comme la fin d'une balise |
| " | `&quot;` | Interprété comme le début et la fin d'une valeur d'attributs |

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

### Référence technique

* Liste officielle des identificateurs de caractères
En-tête de réponse
==================

Un **en-tête de réponse** est un en-tête HTTP (en-US) qui peut être utilisé dans une réponse HTTP et qui ne concerne pas le contenu du message. Les en-têtes de réponse comme `Age`, `Location` ou `Server` sont utilisés pour donner un contexte plus détaillé de la réponse.

Tous les en-têtes apparaissant dans une réponse ne sont pas des *en-têtes de réponse*. Par exemple, l'en-tête `Content-Length` est un en-tête d'entité faisant référence à la taille du coprs du message de requête. Cependant, ces requêtes d'entité sont généralement appelées en-têtes de réponses dans un tel contexte.

Le code suivant montre quelques en-têtes de réponse après une requête `GET`. Notez qu'à strictement parler, les en-têtes `Content-Encoding` et `Content-Type` sont des en-têtes d'entité :
```

200 OK
Access-Control-Allow-Origin: *
Connection: Keep-Alive
Content-Encoding: gzip
Content-Type: text/html; charset=utf-8
Date: Mon, 18 Jul 2016 16:06:00 GMT
Etag: "c561c68d0ba92bbeb8b0f612a9199f722e3a621a"
Keep-Alive: timeout=5, max=997
Last-Modified: Mon, 18 Jul 2016 02:36:04 GMT
Server: Apache
Set-Cookie: mykey=myvalue; expires=Mon, 17-Jul-2017 16:06:00 GMT; Max-Age=31449600; Path=/; secure
Transfer-Encoding: chunked
Vary: Cookie, Accept-Encoding
X-Backend-Server: developer2.webapp.scl3.mozilla.com
X-Cache-Info: not cacheable; meta data too large
X-kuma-revision: 1085259
x-frame-options: DENY
```

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

### Savoir technique

* Liste de tous les en-têtes HTTP
Pseudo-élément
==============

En CSS, un sélecteur de **pseudo-élément** applique des styles à des parties du contenu de votre document dans le cas où il n'y a pas d'élément HTML à cibler. Par exemple, plutôt que de placer la première lettre de chaque paragraphe dans un élément distinct, vous pouvez leur appliquer un style globalement avec `p``::first-letter`.

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

### Référence technique

* Pseudo-éléments
WebGL
=====

**WebGL** (*Web Graphics Library*) est une API JavaScript pour produire des graphismes 2D et 3D interactifs.

Le Groupe Khronos maintient WebGL qui est basé sur OpenGL ES 2.0.

Vous pouvez faire appel à WebGL à partir de l'élément HTML `<canvas>` qui fournit une surface de rendu.

Tous les principaux navigateurs prennent maintenant en charge WebGL, mais sa disponibilité dépend également de facteurs externes (e.g. support par le GPU).

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

### Culture générale

* WebGL sur Wikipédia
* Vérification du support WebGL
### Article technique

* WebGL sur MDN
* Tableau du support WebGL
NaN
===

`NaN` (Not a Number — *pas un nombre*) est un type de données numérique qui indique une valeur indéfinie ou une valeur qui ne peut pas être représentée, en particulier le résultat d'une opération à virgule flottante.

Par exemple, `NaN` peut représenter une valeur infinie, le résultat d'une division par zéro, la racine carrée d'un nombre négatif (qui est un nombre imaginaire, tandis que les nombres à virgule flottante sont des nombres réels).

Dans la pratique, si l'on divise deux variables dans un programme JavaScript, le résultat peut être `NaN`, qui est prédéfini dans JavaScript comme "undefined". Ainsi, cette division peut casser le programme. Cela signifie que si ce calcul était une petite partie d'un algorithme nettement plus gros, il serait compliqué de localiser où se trouve l'erreur. Heureusement, comme le résultat sera `NaN`, et que nous savons que notre diviseur pourrait être 0, il est possible de mettre en place des tests qui préviendront ce genre de calcul ou informeront que ceux-ci ont eu lieu.

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

### Connaissances générales

* `NaN` sur Wikipédia
### Informations techniques

* NaN dans JavaScript
Sélecteur CSS
=============

Un **sélecteur CSS** est la partie de la règle CSS qui désigne les éléments d'un document ciblés par cette règle. Les éléments correspondants se verront appliquer la mise en forme indiquée par la règle.

Exemple
-------

Prenons comme exemple ce fragment de code CSS :


```css
p {
  color: green;
}

div.avertissement {
  width: 100%;
  border: 2px solid yellow;
  color: white;
  background-color: darkred;
  padding: 0.8em 0.8em 0.6em;
}

#personnalise {
  font:
    16px Lucida Grande,
    Arial,
    Helvetica,
    sans-serif;
}
```


Les sélecteurs sont ici :

* `p`, qui cible les éléments `<p>` et qu'on utilise ici pour que le texte de ces éléments soit vert
* `div.avertissement`, qui cible les éléments `<div>` avec la classe `avertissement` pour que ceux-ci ressemblent à une boîte d'avertissement)
* `#personnalise`, qui cible l'élément avec l'identifiant `personnalise` pour appliquer une mise en forme utilisant une police de caractères de 16 pixels, Lucida Grande ou l'une des polices de secours.

Nous pouvons ensuite appliquer ce CSS à du HTML, tel que :


```html
<p>Un texte heureux.</p>

<div class="avertissement">
  Attention&nbsp;! Il y a des sorciers pas loin&nbsp;!
</div>

<div id="personnalise">
  <p>Un texte heureux.</p>

  <div class="avertissement">
    Attention&nbsp;! Il y a des sorciers pas loin&nbsp;!
  </div>
</div>
```


Le contenu de la page résultant ressemble à ceci:

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

* En apprendre plus sur les sélecteurs CSS dans l'introduction à CSS
* Les sélecteurs simples
    + Les sélecteurs de type `nomelement`
    + Les sélecteurs de classe `.nomclasse`
    + Les sélecteurs d'identifiant `#nomid`
    + Les sélecteurs universels `* ns|* *|*`
    + Les sélecteurs d'attribut `[attr=valeur]`
    + Les sélecteurs d'état `a:active, a:visited`
* Les sélecteurs composites
    + Liste de sélecteurs `A, B`
* Les combinateurs
    + Sélecteurs de voisins directs `A + B`
    + Sélecteurs de voisins généraux `A ~ B`
    + Sélecteurs d'enfant direct `A > B`
    + Sélecteurs de descendants `A B`
* Pseudo
    + Pseudo-classes `:`
    + Pseudo-éléments `::`
Cookie
======

Un cookie est un petit bout d'information laissé via le navigateur web par un site web sur l'ordinateur du visiteur.

Les cookies servent à personnaliser l'expérience web d'un utilisateur vis-à-vis d'un site web. Il peut contenir les préférences de l'utilisateur ou les saisies lors de l'accès à ce site web. Les utilisateurs peuvent configurer leurs navigateurs web pour accepter, rejeter ou supprimer les cookies.

Les cookies peuvent être définis et modifiés au niveau serveur par l'en-tête HTTP `Set-Cookie` ou en JavaScript avec `document.cookie` (en-US).

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

### Culture générale

* Cookie HTTP sur Wikipédia
Texte brut
==========

Un texte brut désigne soit une information qui a été utilisée comme entrée pour un algorithme de chiffrement , soit un cryptogramme qui a été déchiffré.

Ce terme est souvent utilisé comme synonyme de *texte clair*, qui fait plus vaguement référence à toute sorte d'information, comme un document texte, une image, etc., qui n'a pas été chiffrée et qui peut être lue par un humain ou un ordinateur sans traitement supplémentaire.
IPv6
====

**IPv6** est la version actuelle du protocole sous-jacent de communication pour Internet. Lentement IPv6 remplace IPv4, entre autres raisons parce que IPv6 permet d'avoir de nombreuses adresses IP différentes.

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

* IPv6 sur Wikipédia
Évènement
=========

Les évèhements sont des éléments actifs générés par les éléments DOM qui peuvent être manipulés par un code Javascript.

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

### Référence technique

* documentation des évènements sur MDN
### Culture générale

* Site web officiel (en)
* *Document Object Model* - Événements sur Wikipédia
SDP
===

**SDP** (Session Description Protocol) est le standard décrivant une connexion pair-à-pair. SDP contient le codec, l'adresse source, et des informations temporelles pour l'audio et la vidéo.

Voici un message SDP typique :
```

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


SDP n'est jamais employé seul, mais des protocoles comme RTP et RTSP (en-US) l'utilisent. SDP est également un composant de WebRTC, ce dernier se servant de SDP pour décrire une session.

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

### Culture générale

* Protocoles WebRTC (en-US)
* SDP sur Wikipédia
Mobile d'abord
==============

Le **"mobile d'abord"**, une forme d'amélioration progressive, est une approche de développement et de conception web qui met l'accent sur l'établissement de priorités, en matière de conception et de développement, pour les tailles d'écrans mobiles plutôt que pour les écrans de bureau. La raison d'être de l'approche "mobile d'abord" est de fournir aux utilisateurs de bonnes expériences utilisateur à toutes les tailles d'écran, en commençant par créer une expérience utilisateur qui fonctionne bien sur les petits écrans, puis en l'optimisant pour les autres tailles d'écran. L'approche "mobile d'abord" contraste avec l'ancienne approche de la conception pour les tailles d'écran de bureau d'abord, puis seulement plus tard, en ajoutant un peu de support, pour les petites tailles d'écran.
Amélioration progressive
========================

L'**amélioration progressive** est une philosophie de conception centrée sur la fourniture d'une base de contenu et de fonctionnalités essentielles au plus grand nombre possible d'utilisateurs, tout en allant au-delà et en offrant la meilleure expérience possible aux utilisateurs des navigateurs les plus modernes capables d'exécuter tout le code requis .

La détection de fonctionnalités (en-US) est généralement utilisée pour déterminer si les navigateurs peuvent gérer le contenu de haut niveau ou non, les polyfills étant souvent utilisés pour intégrer des fonctionnalités manquantes avec JavaScript.

Une annonce spéciale devrait être émise concernant l'accessibilité — des solutions de rechange acceptables devraient être fournies dans la mesure du possible.

C'est une technique très utile qui permet aux développeurs Web de se concentrer sur la réalisation du meilleur site web possible, tout en prenant en compte la contrainte, pour ces sites web, d'être accessibles par des agents utilisateurs multiples et inconnus. Graceful degradation est apparenté mais différent ; il est souvent considéré comme allant dans la direction opposée à l'amélioration progressive. En réalité, les deux approches sont valides et peuvent souvent se compléter l'une l'autre.

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

### Culture générale

* Amélioration progressive sur Wikipédia
Namespace
=========

Un espace de nom (en anglais : Namespace) est un contexte qui permet d'identifier et grouper un ensemble logique d'éléments utilisés par un programme. Dans un même contexte et une même portée (scope), un identifiant doit identifier une entité de manière unique.

Dans un système d'exploitation, un dossier est un namespace. Chaque fichier ou sous-dossier a un nom unique mais pouvant être réutilisé à un autre niveau d'arborescence.

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

* Espace de noms sur Wikipédia
Méthode
=======

Une **méthode** est une fonction (`function`) qui est une propriété d'un objet. Il existe deux sortes de méthodes : Les *méthodes d'instance* qui représentent les fonctions fournissant une interface pour effectuer des actions dans le contexte de l'objet qu'elles composent ou les *méthodes statiques* qui représentent les fonctions pouvant être exécutées sans nécessiter d'instanciation.

**Note :** En JavaScript, les fonctions sont elles-mêmes des objets. Dans ce contexte, une méthode est plus précisément une référence vers un objet de type `function`.

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

### Culture générale

* Méthode (informatique) sur Wikipédia
* Définir une méthode en JavaScript (comparaison entre la syntaxe traditionnelle et la version proposée pour ECMAScript 6)
### Référence technique

* Liste des méthodes fournies par JavaScript
Pile d'exécution
================

Une **pile d'exécution** est le mécanisme d'un interpréteur (comme l'interpréteur de JavaScript sur un navigateur web) pour conserver la trace de son emplacement dans un script qui appelle plusieurs fonctions depuis d'autres fonctions — quelle fonction est en cours d'exécution, quelles fonctions sont appelées depuis cette fonction et doivent être appelées ensuite, etc.

* Lorsqu'un script appelle une fonction, l'interpréteur ajoute sa position actuelle sur la pile d'exécution comme étant son adresse de retour, et ensuite, il se lance dans l'exécution de la fonction.
* Toutes les fonctions appelées par cette fonction sont ajoutées à la pile d'appels plus haut, et s'exécutent là où leurs appels sont atteints.
* Quand la fonction se termine, l'interpréteur récupère l'adresse de retour la plus récente depuis la pile et reprend l'exécution à partir de l'endroit indiqué par celle-ci.
* Si la pile est sollicitée au-delà de l'espace qui lui a été affecté, une erreur "dépassement de pile" se produit.
Voir aussi
----------

### Culture générale

* Pile d'exécution sur Wikipédia
CDN
===

Un **CDN** (Content Delivery Network) est un groupe de serveurs répartis en de nombreux endroits. Ces serveurs répliquent des copies des données. De cette manière, les serveurs peuvent répondre aux requêtes de données en se basant sur les serveurs les plus proches de leurs utilisateurs finaux respectifs. Les CDN rendent les services rapides et moins affectés par les trafics élevés.

Les CDN sont largement utilisés pour fournir des feuilles de style et des fichiers JavaScript (actifs statiques) de bibliothèques comme Bootstrap, jQuery, etc. L'utilisation de CDN pour ces fichiers de bibliothèque est préférable pour un certain nombre de raisons :

* la gestion des ressources statiques des bibliothèques sur CDN réduit la charge de la requête sur nos propres serveurs.
* la plupart des CDN ont des serveurs partout dans le monde, de sorte que les serveurs de CDN peuvent être géographiquement plus proches de vos utilisateurs que vos propres serveurs. La distance géographique affecte proportionnellement la latence.
* les CDN sont déjà configurés avec les paramètres de cache appropriés. L'utilisation d'un CDN sauvegarde la configuration pour les ressources statiques sur vos propres serveurs.
Dégradation gracieuse
=====================

**La dégradation gracieuse** est une philosophie de conception centrée sur la création d'un site / application web moderne qui fonctionnera dans les navigateurs les plus récents, mais qui sera remplacé par un contenu et une fonctionnalité essentiels dans les anciens navigateurs, même moins performant.

Les Polyfills peuvent être utilisés pour intégrer des fonctionnalités manquantes avec JavaScript, mais des alternatives acceptables à des fonctionnalités telles que le style et la mise en page doivent être fournies si possible, par exemple en utilisant la cascade CSS ou le comportement de repli HTML. Quelques bons exemples peuvent être trouvés dans Traitement des problèmes HTML et CSS courants.

C'est une technique utile qui permet aux développeurs Web de se concentrer sur le développement des meilleurs sites web possibles tout en compensant les problèmes de ces sites auxquels accèdent plusieurs agents utilisateurs inconnus. L'Amélioration progressive est apparentée mais différente — la dégradation gracieuse est souvent considérée comme allant dans la direction opposée à l'amélioration progressive. En réalité, les deux approches sont valides et peuvent souvent se compléter l'une l'autre.

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

### Culture générale

* Tolérance aux pannes sur Wikipédia
Algorithme
==========

Un algorithme est une série d'instructions indépendantes qui exécutent une fonction.
Portée locale
=============

La portée locale est une caractéristique des variables qui les rend locales (c'est-à-dire, le nom de la variable est lié à sa valeur seulement à l'intérieur d'une portée qui n'est pas la portée globale).

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

### General knowledge

* Portée sur Wikipédia
Type
====

Le **type** (ou *type de donnée*) est une caractéristique d'une valeur qui détermine le genre de données qu'elle peut stocker - par exemple, en JavaScript, un `Boolean` (en-US) ne contient que des valeurs true (*vrai*) / false (*faux*), alors qu'une `String` *(chaîne de caractères)* contient des chaînes de texte, un `Number` contient toute sorte de nombres, etc.

Le type de données d'une valeur affecte également les opérations valides sur cette valeur. Par exemple, un entier peut être multiplié par un entier, mais pas par une chaîne de caractères.

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

### Culture générale

* Type sur Wikipédia
* Types de données en JavaScript
Prototype
=========

Un prototype est un modèle en cours de développement qui montre l'apparence et le comportement d'une application ou d'un produit en cours de conception..

Voir Héritage et chaîne de prototypes.

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

### Culture générale

* Prototypage logiciel sur Wikipédia
hash
====

La fonction de hachage prend en entrée un message de taille variable et produit en sortie un hash de taille fixe. Il se présente habituellement sous la forme d'une "empreinte" de 128 bits ou "message condensé". Les hashes sont également très utiles en cryptographie en garantissant l'intégrité des données transmises. Il s'agit des blocs pour construire des HMAC qui fournissent l'authentification de messages.

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

### Culture générale

* Fonction de hachage sur Wikipédia
DSL
===

L'acronyme **DSL** peut avoir plusieurs significations selon le contexte. Il peut faire référence à :

DSL (Digital Subscriber Line)
**DSL** pour *Digital Subscriber Line*, qu'on peut traduire en « ligne numérique d'abonné·e » est un type de connexion haut débit à Internet qui permet d'envoyer des données sur un transport filaire en utilisant les lignes téléphoniques.
DSL (Domain-Specific Language)
**DSL** pour *Domain-Specific Language* (qu'on peut traduire en « langage dédié ») est un type de langage informatique conçu pour résoudre un problème dans un domaine d'application donné.
Voir aussi
----------

* La page d'homonymie Wikipédia
Détournement de clic
====================

Le détournement de clic (ou *clickjacking*) est une attaque basée sur l'interface qui incite les utilisatrices et utilisateurs de sites web à cliquer involontairement sur des liens malveillants. Pour le détournement de clics, les attaquants intègrent leurs liens malveillants dans des boutons ou des pages légitimes d'un site web. Dans un site infecté, chaque fois qu'une personne clique sur un lien légitime, l'attaquant obtient les informations confidentielles de cette personne, ce qui compromet en fin de compte sa vie privée sur Internet.

Le détournement de clic peut être évité en implémentant une politique de sécurité du contenu avec la directive `frame-ancestors` et en implémentant des attributs `Set-Cookie`.

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

* Sécurité sur le Web : protection contre le détournement de clic
* Le détournement de clic sur Wikipédia
* Le détournement de clic sur OWASP (en anglais)
IndexedDB
=========

IndexedDB est une API web pour stocker de larges structures de données à l'intérieur des navigateurs et de les indexer afin d'effectuer des recherches hautement performante. De la même façon qu'un Système de gestion de base de données relationnelle (basé sur SQL), IndexedDB est une base de données transactionnelle. Cependant, IndexedDB utilise les objets JavaScript plutôt que des colonnes de tables fixes pour stocker les données.

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

* L' API IndexedDB sur MDN
* La spécification W3C pour IndexedDB
Base de données
===============

Une **base de donnée** est un système de stockage qui collecte des données organisées, pour faciliter certains travaux comme la recherche, la structure et l'extension.

Dans le développement web, la plupart des bases de données utilisent le système de gestion de base de données relationnelle (SGBDR) pour organiser les données et la programmation en SQL. Cependant, certaines bases de données appelées NoSQL ne suivent pas l'ancien mécanisme de données organisées.

Parmi les SGBDR côté serveur les plus célèbres nous avons *MySQL* (ou *MariaDB* qui en est un *fork*), *SQL Server*, et *Oracle Database*. D'autre part, certains exemples NoSQL célèbres sont *MongoDB*, *Cassandra*, et *Redis*.

Les navigateurs ont également leur propre système de base de données appelé IndexedDB.

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

1. Base de données sur Wikipédia
    1. IndexedDB
    2. SQL
HTTP/2
======

**HTTP/2** est une révision majeure du Protocole de réseau HTTP. Les principaux objectifs de HTTP/2 sont de réduire la latence en permettant le multiplexage complet des demandes et des réponses, minimiser la surcharge du protocole grâce à une compression efficace des champs d'en-tête HTTP, et ajouter la prise en charge de la priorisation des demandes et de la diffusion sur le serveur.

HTTP/2 ne modifie en aucune façon la sémantique d'application de HTTP. Tous les concepts fondamentaux de HTTP 1.1, tels que les méthodes HTTP, les codes d'état, les URL et les champs d'en-tête, restent en place. En revanche, HTTP/2 modifie la façon dont les données sont formatées (encadrées) et transportées entre le client et le serveur, qui gèrent tous deux l'ensemble du processus, et dissimule la complexité de l'application dans la nouvelle couche d'encadrement. Par conséquent, toutes les applications existantes peuvent être fournies sans modification.

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

* HTTP sur le MDN
* HTTP/2 sur Wikipédia
* HTTP
* Latence
Valeur
======

En ce qui concerne les données ou un objet **wrapper** enveloppant cette donnée, la valeur est la **valeur primitive** que cet objet wrapper contient. Pour les **variables** ou les **propriétés**, la valeur peut être soit une primitive, soit une **référence d'objet**.

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

### Culture générale

* Classe wrapper-primitive sur Wikipédia (anglais)
En-tête d'entité
================

Un en-tête d'entité est un en-tête HTTP (en-US) décrivant le contenu du corps du message. Les en-têtes d'entité sont utilisés à la fois dans les requêtes et les réponses HTTP. Des en-têtes tels que `Content length`, `Content-Language`, `Content-Encoding` sont des en-têtes d'entité.

Même si les en-têtes d'entité ne sont ni des en-têtes de requête, ni des en-têtes de réponse, ils sont souvent inclus avec ces modalités.

Dans l'exemple suivant, `Content-Length` est un en-tête d'entité, tandis que `Host` et `User-Agent` (en-US) sont des en-têtes de requête :
```

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
```

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

### Connaissance technique

* Liste de tous les en-têtes HTTP