recursal/MDN huggingface dataset:
RTF
===

RTF (Rich Text Format) est un format de fichier en texte brut avec prise en charge d'instructions de formatage (comme gras ou italique).

Trois développeurs de l'équipe Microsoft Word ont créé le format RTF dans les années 1980, et Microsoft a poursuivi son développement jusqu'en 2008. Malgré ça, de nombreux traitements de texte peuvent toujours lire et écrire du RTF.

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

* *Rich Text Format* sur Wikipédia
* spécification finale de Microsoft
Nom d'en-tête de réponse interdit
=================================

Un *nom d'en-tête de réponse interdit* est un nom d'en-tête HTTP (`Set-Cookie`) qui ne peut pas être modifié par programmation.

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

* Spécification de l'API `Fetch` : nom d'en-tête de réponse interdit
* Page du glossaire sur le nom d'en-tête interdit
Shim
====

Un **shim** est un morceau de code utilisé pour corriger le comportement du code qui existe déjà, généralement en ajoutant une nouvelle API qui contourne le problème. Cela diffère d'un polyfill qui implémente une nouvelle API non supportée par le navigateur de stock tel qu'il est livré.

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

### Culture générale

* L'article sur les *shim* en anglais sur Wikipédia
Null
====

En informatique, une valeur **`null`** représente une référence qui pointe, en général de manière volontaire, vers un objet ou une adresse invalide ou inexistant. La signification d'une référence nulle varie selon les implémentations des langages.

En JavaScript, null est l'une des valeurs primitives.

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

### Culture générale

* `Null` sur Wikipédia
### Référence technique

* Types et structures de données en JavaScript
* L'objet JavaScript global : `null`
Delta
=====

Le terme **delta** fait référence à la différence entre deux valeurs ou états. Le nom provient de la lettre grecque Δ (delta), qui équivaut à la lettre *D* dans l'alphabet romain. *Delta* se réfère simplement à l'utilisation de la lettre Δ comme raccourci pour la *différence*.

Le terme *delta* est couramment utilisé pour communiquer les changements de vitesse, de position ou d'accélération d'un objet physique ou virtuel. Il est également utilisé pour décrire les changements de volume ou de fréquence des ondes sonores.

Par exemple, pour décrire la distance parcourue par un objet à l'écran de gauche à droite, on peut utiliser le terme *delta x* ou *Δx*.

De même, étant donné la nouvelle valeur de *X* et son ancienne valeur, vous pouvez calculer le delta comme ceci:


```js
let deltaX = newX - oldX;
```


Plus généralement, vous recevez le delta et l'utilisez pour mettre à jour une condition précédente enregistrée:


```js
let newX = oldX + deltaX;
```

Apprendre plus
--------------

### Référence technique

* Les événements de la molette de la souris (`WheelEvent` offrent la quantité de déplacement de la roue depuis le dernier événement dans son `deltaX`, `deltaY`, et `deltaZ`, par exemple.
Chiffre
=======

En cryptographie, un **chiffre** est un algorithme qui permet de chiffrer du texte brut (en-US) dans le but de le rendre illisible et de le déchiffrer par la suite.

Les chiffres étaient communs bien avant l'âge de l'informatique (par exemple, le chiffrement par substitution, le chiffrement par transposition ou le chiffrement par permutation), mais aucun d'entre eux n'était cryptologiquement sûr à l'exception du masque jetable.

Les chiffres modernes sont construits de manière à résister à des attaques découvertes par un cryptanalyste. Il n'y a aucune garantie que tous les vecteurs d'attaques aient été découverts, mais chaque algorithme est jugé à l'aune des types de vecteurs d'attaques connus.

Les chiffres opèrent de deux manières, soit en chiffrement par bloc sur des blocs de données, soit en chiffrement par flot pour des flux de données continus (souvent de l'audio ou de la vidéo).

Ils sont également classés en fonction de la manière dont leurs clefs sont gérées :

* les algorithmes à clefs symétriques utilisent la même clef pour chiffrer et déchiffrer un message. Cette clef doit également être envoyée de manière sécurisée afin que le message reste confidentiel.
* les algorithmes à clefs asymétriques utilisent une clef différente pour le chiffrement et le déchiffrement.
Voir aussi
----------

* Chiffrement sur Wikipédia
Pixel CSS
=========

Le **pixel CSS** — désigné dans CSS avec le suffixe `px` — est une unité de longueur qui correspond approximativement à la largeur ou à la hauteur d'un point unique qui peut être vu confortablement par l'œil humain sans effort mais par ailleurs aussi petit que possible. Par définition, il s'agit de la taille physique d'un seul pixel à une densité de pixels de 96 DPI, situé à une longueur de bras des yeux du spectateur.

Cette définition, bien sûr, laisse beaucoup de marge de manœuvre, car les termes "être vu confortablement" et "à une longueur de bras" sont imprécis et varient d'une personne à l'autre. Lorsqu'un utilisateur est assis à un bureau devant un desktop, l'écran est généralement beaucoup plus éloigné de ses yeux que lorsqu'il est sur un téléphone portable, par exemple.

En tant que tel, il suffit généralement de dire que lorsque l'unité `px` est utilisée, le but est d'essayer d'avoir la distance `96px` égale à environ 1 inch sur l'écran, quelle que soit la densité de pixels réelle de l'écran. En d'autres termes, si l'utilisateur est sur un téléphone avec une densité de pixels de 266 DPI, et un élément est placé sur l'écran avec une largeur de `96px`, la largeur réelle de l'élément serait de 266 device pixels.

Apprendre plus
--------------

### Référence technique

* Module Valeurs et Unités CSS, section 5.2: Longueurs Absolues
### Voir aussi

* Longueur CSS Expliquée sur le Blog MDN Hacks
SISD
====

SISD signifie **Single Instruction/Single Data** et est une des catégories d'architecture d'ordinateurs. Avec une architecture SISD, un processeur unique exécute une instruction unique et opère sur un flux de données unique en mémoire.

Voir aussi SIMD pour une architecture parallèle qui permet d'effectuer une même opération sur plusieurs données.

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

### Culture générale

* SISD sur Wikipédia
Codec
=====

Un *codec* (terme formé à partir de "***co***deur-***déc***odeur") est un programme informatique qui code et décode un flux de données.

### Plus d'informations

### Culture générale

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

* Formats des médias pris en charge par les éléments HTML audio et video
En-tête de requête
==================

Un **en-tête de requête** est un en-tête HTTP (en-US) qui peut être utilisé dans une requête HTTP et ne concerne pas le contenu du message. Les en-têtes de requête, comme `Accept`, `Accept-*` ou `If-*`, permettent d'effectuer des requêtes conditionnelles ; d'autres comme `Cookie` (en-US), `User-Agent` (en-US) ou `Referer` précisent le contexte pour que le serveur adapte la réponse.

Tous les en-têtes apparaissant dans une requête ne sont pas des *en-têtes de requête*. Par exemple, l'en-tête `Content-Length` apparaissant dans une requête `POST` est en fait un en-tête d'entité faisant référence à la taille du corps du message de requête. Cependant, ces en-têtes d'entité sont souvent appelés en-têtes de requête dans un tel contexte.

De plus, CORS définit un sous-ensemble d'en-têtes de requête comme en-têtes simples, en-têtes de requêtes qui sont toujours considérés comme autorisés et non listés explicitement dans les réponses des requêtes de contrôle.

Quelques en-têtes de requêtes après une requête `GET` :
```

GET /home.html HTTP/1.1
Host: developer.mozilla.org
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:50.0) Gecko/20100101 Firefox/50.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Referer: https://developer.mozilla.org/testpage.html
Connection: keep-alive
Upgrade-Insecure-Requests: 1
If-Modified-Since: Mon, 18 Jul 2016 02:36:04 GMT
If-None-Match: "c561c68d0ba92bbeb8b0fff2a9199f722e3a621a"
Cache-Control: max-age=0
```


À strictement parler, l'en-tête `Content-Length` dans cet exemple n'est pas un en-tête de requête comme les autres, mais un en-tête d'entité :
```

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

### Savoir technique

* Liste de tous les en-têtes HTTP
Déni de service
===============

Le déni de service ou DoS (« ***D**enial **o**f **S**ervice* » en anglais) est une catégorie d'attaques réseau. Il consomme les ressources disponibles d'un serveur, souvent en surchargeant celui-ci de requêtes, ce qui le fait fonctionner plus lentement ou le rend indisponible pour ses utilisatrices et utilisateurs légitimes.

Voir attaque DOS pour plus d'informations.
Accentuation
============

Une **accentuation** est une couleur généralement vive qui contraste avec les couleurs d'arrière-plan et de premier plan plus utilitaires d'un jeu de couleurs. Celles-ci sont présentes dans le style visuel de nombreuses plates-formes (mais pas toutes).

Sur le Web, une accentuation est parfois utilisée dans les éléments `<input>` pour la partie active du contrôle, par exemple l'arrière-plan d'une case cochée (« *checkbox* » en anglais).

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

### CSS lié à l'accentuation

Vous pouvez définir la couleur d'accentuation pour un élément donné en définissant la propriété CSS `accent-color` de l'élément sur la valeur `<color>` appropriée.

### Éléments HTML pouvant avoir une accentuation

* `<input type="checkbox">`
* `<input type="radio">`
* `<input type="range">`
Récursion
=========

Une fonction qui agit en s'appelant elle-même. Une récursion est utilisée pour résoudre des problèmes qui contiennent des sous-problèmes plus petits. Une fonction récursive peut prendre deux entrées : un cas de base (qui met fin à la récursion) ou un cas de propagation (qui poursuit la récursion).

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

### Culture générale

* Algorithme récursif sur Wikipédia
* Plus de détails sur la récursion en JavaScript
Sécurisée
=========

Une méthode HTTP est **sécurisée (*safe*)** si elle ne modifie pas l'état du serveur. En d'autres termes, une méthode est sécurisée si elle conduit à une opération en lecture seule. Plusieurs méthodes HTTP courantes sont sécurisées : `GET`, `HEAD` ou `OPTIONS`. Toutes les méthodes sécurisées sont aussi idempotentes ainsi que certaines méthodes non sécurisées comme `PUT` ou `DELETE`.

Même si les méthodes sécurisées ont une sémantique en lecture seule, les serveurs peuvent modifier leur état : par exemple, ils peuvent se connecter ou garder des statistiques. Ce qui est important ici, c'est qu'en appelant une méthode sécurisée, le client ne demande pas de changement du serveur lui-même et, par conséquent, ne créera pas de téléchargement ou de chargement inutile pour le serveur. Les navigateurs peuvent appeler des méthodes sécurisées sans craindre de causer des dommages au serveur : cela leur permet d'effectuer des activités comme la pré-extraction sans risque. Les robots d'exploration web s'appuient également sur l'appel de méthodes sécurisées.

Les méthodes sécurisées n'ont pas besoin de servir uniquement des fichiers statiques ; un serveur peut générer une réponse à une méthode sécurisée à la volée, à condition que le script de génération garantisse la sécurité : il ne doit pas déclencher d'effets externes, comme le lancement d'une commande sur un site web de commerce électronique.

Il est de la responsabilité de l'application sur le serveur d'implémenter la sémantique sécurisée correctement, le serveur web, Apache, nginx ou IIS, ne peuvent pas l'appliquer eux-mêmes. En particulier, une application ne doit pas autoriser les demandes `GET` à modifier son état.

Un appel à une méthode sécurisée ne modifiant pas l'état du serveur :
```

GET /pageX.html HTTP/1.1
```


Un appel à une méthode non sécurisée, susceptible de modifier l'état du serveur :
```

POST /pageX.html HTTP/1.1
```


Un appel à une méthode idempotente mais non sûre :
```

DELETE /idX/delete HTTP/1.1
```

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

### Culture générale

* Définition de safe (*sécurisé*) dans la spécification HTTP.
### Technical knowledge

* Description de méthodes sécurisées courantes : `GET`, `HEAD`, `OPTIONS`
* Description de méthodes non sécurisées courantes : `PUT`, `DELETE`, `POST`
JSON
====

**JSON** (*JavaScript Object Notation*) est un format d'échange de données. Bien qu'il n'en soit pas un sous-ensemble au sens strict, JSON ressemble fortement à un sous-ensemble de la syntaxe JavaScript. Le format JSON est accepté par de nombreux langages de programmation, mais il s'avère particulièrement utile pour les applications basées sur JavaScript comme les sites web et les extensions des navigateurs.

JSON permet de représenter des nombres, des booléens, des chaînes de caractères, la valeur `null`, des tableaux (séquences ordonnées de valeurs) et des objets (correspondances chaînes-valeurs) composés de ces valeurs (ou d'autres tableaux ou objets). Il ne permet pas, nativement, de représenter des données plus complexes comme des fonctions, des expressions rationnelles ou des dates. (Les objets Date sont traduits vers une chaîne de caractères selon un format ISO, cela permet pour certains cas, d'assurer le transport de ces données.) Si vous avez besoin de représenter des valeurs d'autres types de données, vous pouvez les transformer lors de la conversion en chaîne de caractères ou avant de les reconvertir en objets JavaScript.

Tout comme XML, JSON permet de conserver des données hiérarchiques, ce qui n'est pas le cas avec le format CSV traditionnel. De nombreux outils permettent de convertir des données entre ces formats comme ce convertisseur JSON vers CSV ou bien celui-ci.

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

* JSON sur Wikipédia
* JSON sur MDN
Image matricielle
=================

Une image matricielle (*raster*) est un fichier image défini comme une grille de pixels. Elles sont également appelées des "cartes de points" (*bitmaps*). Les formats d'image matricielle communs sur le web sont JPEG, PNG, GIF et ICO.

Les fichiers d'image matricielle contiennent généralement un ensemble de dimensions, mais les formats ICO et CUR, utilisés pour les favicons et les images de la propriété cursor en CSS, peuvent contenir plusieurs tailles.

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

* Image vectorielle
* Image matricielle sur Wikipédia
Alpha (canal alpha)
===================

Les couleurs sont représentées sous forme numérique comme un ensemble de nombres, chacun représentant la force ou le niveau d'intensité d'un composant donné de la couleur. Chacun de ces composants est appelé un **canal**. Dans un fichier d'image typique, les canaux de couleur décrivent la quantité de rouge, de vert et de bleu utilisée pour composer la couleur finale. Pour représenter une couleur à travers laquelle le fond peut être vu dans une certaine mesure, un quatrième canal est ajouté à la couleur: le **canal alpha**. Le canal alpha spécifie le degré d'opacité de la couleur.

Par exemple, la couleur `#8921F2` (également décrite comme `rgb(137, 33, 242)` ou `hsl(270, 89%, 54)`) est une jolie nuance de violet. Ci-dessous, vous voyez une petite case de cette couleur dans le coin supérieur gauche et une case de la *même* couleur mais avec un canal alpha défini à 0,5 (50% d'opacité). Les deux cases sont dessinées au-dessus d'un paragraphe de texte.

![Image montrant l'effet d'un canal alpha sur une couleur.](/fr/docs/Glossary/Alpha/alpha-channel-example.png)

Comme vous pouvez le voir, la couleur sans canal alpha bloque complètement le texte de fond, tandis que la boîte avec le canal alpha le laisse visible à travers la couleur de fond violet.

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

* Codage informatique des couleurs
* Article Wikipédia sur le canal alpha
* Alpha blending
* Modèle de couleur RVBA
* Les valeurs de couleurs en CSS
Polymorphisme
=============

Le polymorphisme est la présentation d'une unique interface pour plusieurs types de données.

Par exemple, les entiers, flottants et doubles sont implicitement polymorphiques : il est possible de les ajouter, soustraire, multiplier etc. sans se préoccuper de leurs différents types.

Dans le cas de la programmation orientée objet, en donnant à la classe la gestion aussi bien de son code que de ses propres données, le polymorphisme peut être mis en œuvre en faisant que chaque classe ait sa propre fonction qui (une fois appelée) agit en fonction d'un objet quel que soit son type.

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

### Culture générale

* Polymorphisme sur Wikipédia
Serveur proxy
=============

Un **serveur proxy** (ou "serveur mandataire" en français) est un programme intermédiaire, ou un ordinateur, utilisé lors de la navigation sur différents réseaux d'Internet. Il facilite l'accès au contenu sur le World Wide Web. Un mandataire reçoit les demandes et retourne les réponses ; il peut transmettre les requêtes ou non (par exemple dans le cas d'un cache), et il peut les modifier (par exemple changer les en-têtes à la frontière entre deux réseaux).

Un proxy peut être sur l'ordinateur local de l'utilisateur, ou n'importe où entre l'ordinateur de l'utilisateur et un serveur de destination sur Internet. En général, il existe deux types principaux de serveurs proxy :

* Un **proxy direct** qui gère les demandes depuis et vers n'importe où sur Internet.
* Un **proxy inverse** prenant des requêtes d'Internet et les transmettant aux serveurs d'un réseau interne.
Voir aussi
----------

* Proxy servers and tunneling (en-US)
* Proxy sur Wikipédia
Tree shaking
============

**Tree shaking** est un terme couramment utilisé dans un contexte JavaScript pour décrire la suppression du code mort.

Il repose sur les états import et export en ES6 pour détecter si les modules de code sont exportés et importés pour une utilisation entre des fichiers JavaScript.

Dans les applications JavaScript modernes, nous utilisons des gestionnaires de regroupements de modules (par exemple, webpack ou Rollup) pour supprimer automatiquement le code mort lors du regroupement de plusieurs fichiers JavaScript dans des fichiers uniques. Ceci est important pour préparer un code prêt pour la production, par exemple avec des structures propres et une taille de fichier minimale.

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

### Culture générale

* "Benefits of dead code elimination during bundling" in Axel Rauschmayer's book: "Exploring JS: Modules"
* Suppression du code mort sur Wikipédia
### Références techniques

* Tree shaking implementation with webpack
TURN
====

**TURN** (Traversal Using Relays around NAT) est un protocole permettant à un ordinateur de recevoir et d'envoyer des données malgré l'utilisation de translation d'adresse réseau (NAT) ou le fait d'être derrière un pare-feu.

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

### Culture générale

* Protocoles WebRTC (en-US)
### Référence technique

* Spécification
* Spécification actualisée pour IPv6
Chiffrement par clé symétrique
==============================

Le chiffrement par clé symétrique est un terme utilisé pour décrire les algorithmes de chiffrement qui utilisent une même clé pour le chiffrage et le déchiffrage. La clé est généralement appelée « clé symétrique » ou « clé secrète ».

On utilise cette appellation par contraste avec le chiffrement par clé publique, qui lui va générer des paires de clés : la transformation étant réalisée par une clé et ne pouvant être inversée qu'en utilisant l'autre clé.

Les algorithmes par clé symétrique sont sûrs lorsqu'ils sont utilisés correctement, et sont très efficaces ; ils peuvent donc être utilisés pour chiffrer de grandes quantités de données sans observer d'effets négatifs en termes de performance.

La plupart des algorithmes par clé symétrique actuellement utilisés sont des chiffrements par « bloc » : cela signifie qu'ils chiffrent un bloc de données à la fois. La taille de chaque bloc est fixe et déterminée par l'algorithme utilisé : par exemple, un système AES utilise des blocs de 16 bits. Le chiffrement par bloc est toujours utilisé avec un *mode*, qui va déterminer comment chiffrer de façon sûre les messages dont la taille dépasse celle du bloc. Par exemple, AES est un chiffrement, tandis que CTR, CBC et GCM sont tous des modes. Attention donc, car si l'on utilise le mauvais mode, ou si l'on utilise un mode de façon incorrecte, on risque de réduire à néant la sécurité apportée par le chiffrement choisi.

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

* Glossaire
    + Chiffrement par bloc
    + Cryptographie
    + Fonction de hachage cryptographique
    + Chiffrement par clé symétrique
Block cipher mode of operation
==============================

Un mode de fonctionnement de chiffrement par bloc, généralement appelé simplement "mode" dans le contexte, spécifie comment un chiffrement par bloc doit être utilisé pour chiffrer ou déchiffrer les messages qui sont plus longs que la taille du bloc.

La plupart des algorithmes à clé symétrique actuellement utilisés sont des chiffrements par blocs: cela signifie qu'ils chiffrent les données un bloc à la fois. La taille de chaque bloc est fixe et déterminée par l'algorithme : par exemple AES utilise des blocs de 16 octets. Les chiffrements de bloc sont toujours utilisés avec un mode, qui spécifie comment chiffrer en toute sécurité les messages plus longs que la taille du bloc. Par exemple, AES est un chiffrement, tandis que CTR, CBC et GCM sont tous des modes. L'utilisation d'un mode inapproprié ou une utilisation incorrecte d'un mode peut compromettre complètement la sécurité fournie par le chiffrement sous-jacent.
Booléen
=======

En informatique, un **booléen** est un type de données logique qui ne peut prendre que deux valeurs : `true` (vrai) ou `false` (faux). Par exemple, en JavaScript, les conditions booléennes sont souvent ouvertes pour décider quelle section de code doit être exécutée (comme dans l'instruction If) ou répétée (comme pour une boucle For).


```js
/\* JavaScript instruction if \*/
if (boolean conditional) {
   // code à exécuter si la condition est true (vrai)
}

if (boolean conditional) {
  console.log("boolean conditional resolved to true");
} else {
  console.log("boolean conditional resolved to false");
}

/\* JavaScript boucle for \*/
for (control variable; boolean conditional; counter) {
  // code à exécuter répétitivement si la condition est vraie
}

for (var i=0; i < 4; i++) {
  console.log("I print only when the boolean conditional is true");
}
```

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

### Culture générale

* Booléen sur Wikipédia
### Informations techniques

* L'objet JavaScript global : `Boolean`
* Structures de données JavaScript sur MDN
Mozilla Firefox
===============

Mozilla Firefox est un navigateur open source libre dont le développement est supervisé par Mozilla Corporation. Firefox fonctionne sur Windows, OS X, Linux, et Android.

Distribué pour la première fois en novembre 2004, Firefox est entièrement personnalisable grâce à des thèmes, plug-ins, et modules. Firefox utilise Gecko pour réaliser l'affichage des pages web, et implémente aussi bien les normes Web actuelles que celles à venir.

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

### Culture générale

* Site web officiel de Mozilla Firefox
### Référence technique

* Documentation/infos développeur sur MDN
ARPA
====

**.arpa** (pour *address and routing parameter area* en anglais) est un domaine de premier niveau dans le système de nom de domaine (DNS) utilisé dans des objectifs relatifs à l'infrastructure d'Internet, en particulier des recherches DNS inverses (c'est-à-dire, trouver le nom de domaine d'une adresse IP donnée).

Le nom vient de l'**ARPA**, actuellement connue sous le nom DARPA, c'est à dire l'Agence pour les Projets de Recherche Avancée de Défense des États-Unis d'Amérique. La DARPA est notamment connue pour avoir développé les précurseurs d'Internet ARPANET, le GPS, l'intelligence artificielle et la réalité virtuelle.

Ce domaine de premier niveau a été créé lorsque la DARPA s'appelait encore ARPA, d'où le nom de domaine `.arpa`.

Les domaines `.arpa` les plus connus incluent `addr.arpa` et `ip6.arpa`, qui fournissent des espaces de noms pour la recherche DNS inversée des adresses IPv4 et IPv6 respectivement.

Voir plus
---------

* ARPANET
* Site web officiel
* .arpa sur Wikipédia