recursal/MDN huggingface dataset:
Marqueurs binaires
==================

Les **marqueurs binaires** sont un ensemble de variables, généralement des valeurs numériques, qui permettent d'activer ou désactiver des fonctionnalités d'une méthode ou autre. Ces opérations sont rapides, car elles s'appliquent au niveau binaire. Les marqueurs associés sont généralement des valeurs complémentaires, représentés par des bits différents d'une même valeur (généralement un nombre hexadécimal), afin qu'une même valeur numérique permette de combiner et représenter différents marqueurs.

Par exemple, quand on crée un objet `GPUBuffer` (en-US) avec la méthode `GPUDevice.createBuffer()` (en-US) de l'API WebGPU (en-US), on fournit une propriété `usage` dans le descripteur qui contient un ou plusieurs marqueurs pour activer certaines utilisation du tampon.


```js
usage: GPUBufferUsage.COPY\_SRC | GPUBufferUsage.MAP\_WRITE;
```


Ces valeurs sont définies dans le même espace de nom et chacune prend une valeur hexadécimale différente :

| Marqueur | Représentation hexadécimale | Équivalent décimal |
| --- | --- | --- |
| `GPUBufferUsage.MAP_READ` | 0x0001 | 1 |
| `GPUBufferUsage.MAP_WRITE` | 0x0002 | 2 |
| `GPUBufferUsage.COPY_SRC` | 0x0004 | 4 |
| `GPUBufferUsage.COPY_DST` | 0x0008 | 8 |
| `GPUBufferUsage.INDEX` | 0x0010 | 16 |
| `GPUBufferUsage.VERTEX` | 0x0020 | 32 |
| `GPUBufferUsage.UNIFORM` | 0x0040 | 64 |
| `GPUBufferUsage.STORAGE` | 0x0080 | 128 |
| `GPUBufferUsage.INDIRECT` | 0x0100 | 256 |
| `GPUBufferUsage.QUERY_RESOLVE` | 0x0200 | 512 |

Quand on consulte la propriété `GPUBuffer.usage` (en-US) d'un tampon, on obtient un seul nombre qui est la somme des différents marqueurs binaires. Si on récupère `GPUBuffer.usage` à partir de celui créé dans l'exemple précédent, on obtiendra la valeur décimale 6, car :

* La valeur décimale équivalente de `GPUBufferUsage.COPY_SRC` vaut 4
* La valeur décimale équivalente de `GPUBufferUsage.MAP_WRITE` vaut 2
* La somme de 4 et 2 donne 6.

Comme les valeurs de chaque marqueur se situent sur des bits différents de la valeur composite, chaque combinaison fournira une valeur unique. Le programme peut alors déterminer quels marqueurs sont actifs à partir d'une unique valeur. Il est aussi possible de tester les marqueurs présents sur une valeur composite à l'aide des opérateurs binaires :


```js
if (buffer.usage & GPUBufferUsage.MAP\_WRITE) {
  // Buffer possède le marqueur MAP\_WRITE usage
}
```

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

* La beauté des marqueurs binaires (en anglais)
* La page sur les opérations binaires sur Wikipédia
Alignement de recours
=====================

Dans le module CSS sur l'alignement des boîtes, un alignement de recours (*fallback alignement*) est indiqué afin de traiter les cas où l'alignement demandé ne peut être respecté. Par exemple, si on indique `justify-content: space-between`, il doit y avoir plus d'un sujet d'alignement. Si ce n'est pas le cas, c'est l'alignement de recours qui est utilisé. Cet alignement diffère selon la méthode d'alignement voulue, comme suit :

| Alignement souhaité | Alignement de recours |
| --- | --- |
| `first baseline` | `start` |
| `last baseline` | `safe end` |
| `baseline` | `start` |
| `space-between` | `flex-start` |
| `space-around` | `center` |
| `space-evenly` | `center` |
| `stretch` | `flex-start` |

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

* La section de MDN sur le module de spécification CSS sur l'alignement des boîtes
API
===

Une API (Application Programming Interface) est un ensemble de fonctionnalités et de règles existant dans un logiciel permettant d'intéragir avec celui-ci de manière automatisée (plutôt que de passer par une interface utilisateur). L'API peut être vue comme un contrat simple passé entre le logiciel qui la propose et d'autres entités, telles que des logiciels ou matériels tiers.

En développement web, une API est généralement un ensemble de fonctionnalités (par exemple : méthodes, propriétés, évènements et URL) qu'un développeur peut utiliser dans son application pour les interactions avec les composants du navigateur de l'utilisateur, ou avec d'autres logiciels/matériels de l'ordinateur de l'utilisateur, ou avec des sites web et services tiers.

Par exemple :

L'API getUserMedia peut être utilisée pour capturer l'audio et la vidéo de la webcam d'un utilisateur, pour ensuite en faire ce que le développeur souhaite comme par exemple les enregistrer, les diffuser à un autre utilisateur lors d'une conférence téléphonique ou capturer des clichés à partir de la vidéo.

L'API Geolocation peut être utilisée pour récupérer des informations de localisation à partir de n'importe quel service disponible sur les appareils d'un utilisateur (GPS par exemple), qui peuvent ensuite être utilisées conjointement avec l'API Google Maps pour par exemple tracer la position géographique de l'utilisateur sur une carte personnalisée et lui montrer les attractions touristiques proches de lui.

L'API Twitter peut être utilisée pour récupérer les données d'un compte utilisateur Twitter, par exemple pour afficher ses derniers tweets sur une page web.

L'API Web Animations peut être utilisée pour animer des parties d'une page web, par exemple pour faire bouger ou pivoter des images.

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

### Culture générale

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

* API sur MDN
Alignment container
===================

Le **bloc d'alignement** est le rectangle avec lequel le sujet d'alignement est aligné. Cela est défini par le mode de disposition ; généralement, le bloc d'alignement contient le sujet d'alignement et il adopte le mode d'ecriture de la boîte qui établit le bloc conteneur.

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

* CSS Box Alignment
Conception web adaptative
=========================

**Conception web adaptative** *(Responsive Web Design* (**RWD**)) est un concept de développement web concentré sur l'aspect et le comportement optimaux des sites sur tous les appareils informatiques personnels, du bureau au mobile.

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

### Culture générale

* Guide MDN sur la conception adaptative
* Responsive Web Design HTML5 (en)
Identificateur
==============

Une séquence de caractères dans le code qui identifie une **variable, une fonction, ou une propriété**.

En JavaScript, les identifiants ne peuvent contenir que des caractères alphanumériques (ou "$" ou "\_"), et ne doivent pas commencer par un chiffre. Un identifiant diffère d'une **chaîne de caractères** dans la mesure où une chaîne est une donnée, tandis qu'un identifiant fait partie du code. En JavaScript, il n'existe pas de moyen pour convertir un identifiant en chaîne, mais il est parfois possible de **convertir** une chaîne en identifiant.

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

### Culture générale

* Identificateur sur Wikipédia
Chrome
======

Résumé
------

Dans un navigateur, le chrome est n'importe quel aspect visible d'un navigateur en dehors des pages Web elles-mêmes (par exemple, barres d'outils, barre de menu, onglets). Il ne doit pas être confondu avec le navigateur Google Chrome.

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

* Browser and GUI Chrome (en)
Attaque DoS
===========

Le déni de service ou DoS (Denial of Service) est une attaque réseau qui empêche l'utilisation légitime des ressources d'un serveur en surchargeant celui-ci de requêtes.

Les ordinateurs disposent de ressources limitées, puissance de calcul ou mémoire par exemple. Lorsqu'elles atteignent leurs limites, le programme peut se bloquer ou planter, ce qui le rend indisponible. Une attaque DoS consiste en diverses techniques pour saturer ces ressources et faire en sorte qu'un serveur ou un réseau ne soit plus disponible pour ses utilisateurs légitimes, ou au moins pour faire fonctionner le serveur plus lentement.

### Types d'attaques DoS

Les attaques DoS sont plus une catégorie d'attaques qu'un type particulier d'attaque. Voici une liste non exhaustive de types d'attaques DoS :

* attaque sur la bande passante
* saturation par des requêtes sur des services
* attaque SYN flooding
* attaque ICMP flood
* attaque pair-à-pair
* attaque DoS permanente
* attaque par saturation au niveau application
Voir aussi
----------

* Attaque par déni de service sur Wikipédia
* Déni de service sur OWASP
* DDoS
Guard
=====

Guard est une fonctionnalité des objets `Headers` (*en-têtes*) (comme définis dans la `spécification Fetch`, qui permet aux méthodes telles que `set()` (en-US) et `append()` (en-US) de changer ou non les contenus des en-têtes. Par exemple, `immutable` guard signifie que les en-têtes ne peuvent être modifiés. Pour plus d'informations, lisez Les concepts de base Fetch : guard (en-US).
Attribut
========

Un *attribut* vient compléter un tag. Sa présence peut être requise ou facultative. Il peut fournir des méta-informations ou changer le comportement du tag. La syntaxe est `name=value` où *name* est l'identificateur de l'attribut et *value* sa valeur attribuée.


```html
<!-- Voici un exemple de tag sans attribut -->
<h2>Titre</h2>

<!-- Le même tag avec un attribut -->
<!-- Le titre apparaît désormais sur un fond jaune -->
<h2 style="background-color:yellow;">Titre</h2>
```


On peut aussi trouver des attributs sans valeur quand elle n'est pas nécessaire.


```html
<!-- Un tag avec un attribut indiquant que le champ est requis -->
<input type="text" required />

<!-- Cette notation fonctionne aussi -->
<input type="text" required="required" />
```

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

### Informations techniques

* Liste des attributs HTML
* Informations concernant les attributs universels en HTML.
Accessibilité
=============

*L'Accessibilité du web* (**A11Y**) correspond aux bonnes pratiques assurant qu'un site web reste utilisable indépendamment des conditions de navigation et possibles handicaps de l'utilisateur. L'accessibilité du web est définie formellement et discutée au W3C au travers de la Web Accessibility Initiative (WAI).

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

### Culture générale

* Ressources sur l'accessibilité sur MDN
* Accessibilité sur Wikipédia
### Informations techniques

* La Documentation ARIA sur MDN
* La page d'accueil de la Web Accessibility Initiative sur le site du W3C (en)
* La recommandation WAI-ARIA sur le site du W3C (en).
World Wide Web
==============

Le *World Wide Web* — communément appelé **WWW**, **W3**, ou **le web** — est un système de pages web publiques interconnectées à travers l'Internet. Le web et l'internet ne sont pas la même chose : le web est l'une des nombreuses applications bâties au-dessus de l'internet.

Tim Berners-Lee a proposé l'architecture de ce qui a été ensuite connu sous le nom de World Wide Web. Il a créé les premiers serveur web, navigateur web, et page web sur son ordinateur au laboratoire de recherches scientifiques CERN en 1990. En 1991, il a annoncé sa création sur le newsgroup alt.hypertext, indiquant ainsi pour la première fois que le web était rendu public.

Ce que nous connaissons comme étant "le web" consiste en plusieurs éléments :

* Le protocole **HTTP** gouverne la transmission des données entre un serveur et un client.
* Pour accéder à un composant du web, un client fournit un identificateur universel unique, appelé une **URL** (uniform resource location) ou URI (uniform resource identifier) (anciennement appelée Universal Document Identifier (UDI)).
* Le **HTML** (hypertext markup language) est le format le plus répandu pour publier des documents web.

Lier, ou connecter des ressources grâce à des hyperliens, est un concept majeur qui a donné au web le statut de collection de documents connectés.

Peu de temps après avoir inventé le web, Tim Berners-Lee a fondé le W3C (World Wide Web Consortium) pour le développer et le standardiser. Le consortium est constitué des principaux groupes d'intérêt du web, comme des développeurs de navigateur web, des entités gouvernementales, des chercheurs et des universités. Sa mission inclut aussi l'éducation et la sensibilisation.

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

### Apprendre sur ce sujet

* Apprendre le Web
* Web literacy map (inventaire des compétences requises pour le développement web)
### Culture générale

* *World Wide Web* sur Wikipédia
* Le site web du W3C
Compression avec perte
======================

La **compression** **avec perte**, ou compression irréversible, est une méthode de compression des données qui réalise des approximations inexactes et abandonne une partie des données pour représenter un contenu.

Pour le dire simplement : la compression avec perte entraîne une perte de données du fichier d'origine, entraînant une possible dégradation de sa qualité.

Le processus de compression est ici irréversible; une fois la compression avec perte réalisée, le contenu ne peut pas retrouver son état initial. C'est pourquoi le contenu ainsi compressé ne devrait plus, en principe, être à nouveau édité.

La compression avec perte est largement utilisée pour les formats d'image.

![Lossy compression image](/fr/docs/Glossary/Lossy_compression/2019-11-18.png)

Même s'il n'y a pas de différence flagrante de qualité entre les deux images ci-dessus, la taille de la seconde a été considérablement réduite grâce à une compression avec perte.

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

* Compression sans perte
Apte à être mis en cache
========================

Une réponse apte à être mise en cache (*cacheable*) est une réponse HTTP qui peut être mise en cache, qui est stockée pour être récupérée et utilisée plus tard, en enregistrant une nouvelle requête sur le serveur. Toutes les réponses HTTP ne peuvent pas être mises en cache, les contraintes suivantes sont requises pour qu'une réponse HTTP soit mise en cache :

* La méthode utilisée dans la requête peut elle-même être mise en cache, c'est une méthode `GET` ou `HEAD`. Une réponse de la méthode `POST` peut aussi être mise en cache si le rafraîchissement est indiqué, mais c'est rarement implémenté. D'autres méthodes comme `PUT` ou `DELETE` ne peuvent pas être mises en cache et leur résultat pas davantage.
* Le code d'état de la réponse est connu par la mise en cache de l'application et il est considéré comme apte à être mis en cache. Les codes d'état suivants peuvent être mis en cache : `200`, `203`, `204`, `206`, `300`, `301`, `404`, `405`, `410`, `414`, et `501`.
* Il n'y a pas d'en-tête spécifique dans la réponse, comme `Cache-Control`, qui empêche la mise en cache.

Notez que certaines requêtes / réponses ne pouvant être mises en cache à un URI spécifique peuvent invalider des réponses précédemment mises en cache sur le même URI. Par exemple, un `PUT` à pageX.html invalidera toutes les requêtes `GET` ou `HEAD` dans le même URI.

Lorsque les deux, la méthode de la requête et l'état de la réponse, peuvent être mis en cache, la réponse à la requête peut être mise en cache :
```

GET /pageX.html HTTP/1.1
(…)

200 OK
(…)
```


Une requête `PUT` ne peut pas être mise en cache. De plus, elle invalide les données mises en cache pour une requête au même URI via `HEAD` ou `GET` :
```

PUT /pageX.html HTTP/1.1
(…)

200 OK
(…)
```


Un en-tête spécifique `Cache-Control` dans la réponse peut empêcher la mise en cache :
```

GET /pageX.html HTTP/1.1
(…)

200 OK
Cache-Control: no-cache
(…)
```

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

### Culture générale

* Définition de cacheable dans la spécification HTTP.
### Références techniques

* Description de méthodes courantes pouvant être mises en cache : `GET`, `HEAD`
* Description de méthodes courantes ne pouvant pas être mises en cache : `PUT`, `DELETE` et souvent `POST`
WebM
====

**WebM** est un format vidéo ouvert, destiné au web et libre de redevance. Il est supporté de manière native par Mozilla Firefox.

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

### Culture générale

* WebM sur Wikipédia
Opérateur
=========

**Syntaxe** réservée constituée de caractères alphanumériques ou de ponctuation apportant des fonctionnalités intégrées. Par exemple, "+" représente l'opérateur d'addition de nombres et de concatenation de chaînes de caractères, alors que l'opération "non", "!", est la négation d'une expression — par exemple, une déclaration vraie returnera false.

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

### Culture générale

* Opérateur sur Wikipédia
### Référence technique

* Opérateurs JavaScript
Sérialisation
=============

Le processus par lequel un objet ou une structure de données est traduit dans un format approprié pour un transfert sur un réseau, ou un stockage (par exemple dans un tampon de tableau ou un format de fichier).

Dans JavaScript, par exemple, vous pouvez sérialiser un objet d'une chaîne de caractères JSON par appel de la fonction `JSON.stringify()`.

Les valeurs de CSS sont sérialisées par appel de la fonction `CSSStyleDeclaration.getPropertyValue()` (en-US).

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

### Culture générale

* Sérialisation sur Wikipédia
GPU
===

Le GPU (Graphics Processing Unit) est un composant de l'ordinateur similaire au CPU (Central Processing Unit) mais qui est spécialisé dans l'affichage de graphismes (à la fois 2D et 3D) sur votre moniteur.
En-tête
=======

Un **en-tête HTTP** est un champ de requête ou de réponse HTTP permettant de transmettre des informations supplémentaires modifiant ou précisant la sémantique du message ou de son contenu. Les en-têtes ne sont pas sensibles à la casse, commencent au début d'une ligne et sont immédiatemment suivis d'un '`:`' et d'une valeur dépendant de l'en-tête en question. La valeur se termine au retour chariot suivant ou à la fin du message.

Traditionnellement, les en-têtes sont classés en catégories, mais cette classification ne fait plus partie d'aucune spécification :

* en-tête général : en-têtes applicables à la fois aux requêtes et aux réponses, mais sans lien avec les données eventuellement transmises dans le corps du message.
* en-tête de requête : en-têtes contenant des informations supplémentaires sur la ressource à récupérer ou sur le client lui-même.
* en-tête de réponse : en-têtes contenant des informations supplémentaires à propos de la réponse, telles que son emplacement, ou à propos du serveur lui-même (nom, version...).
* en-tête d'entité : en-têtes contenant des informations supplémentaires sur le corps de l'entité, telles que la taille de son contenu ou son type MIME.

Requête basique avec un seul en-tête :
```

GET /example.http HTTP/1.1
Host: example.com
```


Les redirections ont des en-têtes obligatoires (`Location`) :
```

302 Found
Location: /NewPage.html
```


Un ensemble d'en-têtes typique :
```

304 Not Modified
Access-Control-Allow-Origin: *
Age: 2318192
Cache-Control: public, max-age=315360000
Connection: keep-alive
Date: Mon, 18 Jul 2016 16:06:00 GMT
Server: Apache
Vary: Accept-Encoding
Via: 1.1 3dc30c7222755f86e824b93feb8b5b8c.cloudfront.net (CloudFront)
X-Amz-Cf-Id: TOl0FEm6uI4fgLdrKJx0Vao5hpkKGZULYN2TWD2gAWLtr7vlNjTvZw==
X-Backend-Server: developer6.webapp.scl3.mozilla.com
X-Cache: Hit from cloudfront
X-Cache-Info: cached
```

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

### Culture générale

* Syntaxe des en-têtes dans la spécification HTTP.
### Informations techniques

* Liste de tous les en-têtes HTTP
non-normatif
============

Les spécifications logicielles contiennent souvent des informations marquées comme *non normatives* ou *informatives,* ce qui signifie qu'elles sont fournies dans le but d'aider le lecteur à mieux comprendre la spécification ou pour montrer un exemple ou une bonne pratique, et qu'il n'est pas nécessaire de les suivre comme une règle. Les sections qui contiennent les informations officielles à respecter sont souvent marquées comme normatives.

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

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

**WebP** est un format d'image avec compression, avec ou sans perte, développé par Google.

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

### Culture générale

* WebP sur Wikipédia
Fréquence d'images (FPS)
========================

Une **fréquence d'images** est la vitesse à laquelle le navigateur est capable de recalculer, de mettre en page et de peindre le contenu à l'écran. Les **images par seconde**, ou **fps** (« *frames per second* » en anglais), correspondent au nombre d'images pouvant être affichées en une seconde. La fréquence d'images de l'objectif pour l'infographie du site web est de 60fps.

Les films ont généralement une fréquence d'images de 24fps. Ils sont capables d'avoir moins d'images par seconde car l'illusion de la vie est créée avec des flous de mouvement. Lorsque vous vous déplacez sur un écran d'ordinateur, il n'y a pas de flou de mouvement (sauf si vous animez un sprite d'image avec des flous de mouvement).

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

* FPS
* Images par seconde sur Wikipédia
Dominant
========

En théorie des graphes, le nœud A domine le nœud B si tous les chemins du nœud racine vers B passent par A.

Ce concept est important pour le "ramasse-miettes" (ou récupérateur de mémoire) car cela signifie que B n'est accessible que par A. Ainsi, si le ramasse-miettes trouve A inaccessible et éligible à la récupération, alors B sera également inaccessible et éligible à la récupération. Donc, les objets que A domine contribuent à la taille retenue de A : c'est-à-dire la quantité totale de mémoire qui pourrait être libérée si A lui-même était libéré.

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

* Ensemble dominant sur Wikipédia
* Dominants
* Gestion de la mémoire en JavaScript
* Le ramasse-miettes ou garbage collection
Site
====

De façon informelle, un *site* est un site web, c'est-à-dire un ensemble de pages web, servies depuis un même domaine, et maintenues par une seule organisation.

Les navigateurs doivent parfois distinguer précisément les différents sites. Par exemple, un navigateur ne doit partager des cookies `SameSite` que pour le même site que celui qui a écrit ces cookies.

Pour cette définition plus précise, un site est déterminé selon la portion du nom de domaine qui est *le domaine enregistrable*. Le domaine enregistrable se termine par un suffixe parmi ceux de la liste des suffixes publics et contient le nom de domaine juste avant ce suffixe. Cela signifie que `lemonde.fr`, `sussex.ac.uk`, et `wikipedia.org` sont tous des domaines enregistrables.

En prenant cette définition, `support.mozilla.org` et `developer.mozilla.org` font partie du même site, car `mozilla.org` est un domaine enregistrable.

Dans certains contextes, le schéma rentre également en considération pour distinguer les sites (dans ce cas, on a alors `http://vpl.ca` et `https://vpl.ca` qui sont deux sites différents). Ajouter le schéma à la définition permet d'éviter qu'un site non-sécurisé (en HTTP) soit traité de la même façon qu'un site sécurisé (en HTTPS). Cette définition plus stricte est appliquée par les règles de gestion des cookies `SameSite`.

Exemples
--------

Pour les deux URL qui suivent, on a le même site, car le domaine enregistrable, `mozilla.org`, est le même (les noms d'hôte et chemins de fichier différents n'ont pas d'importance) :

* `https://developer.mozilla.org/fr/docs/`
* `https://support.mozilla.org/fr/`

Là encore, ce sont les mêmes sites, car le schéma et le port ne sont pas pertinents :

* `https://example.com:8080`
* `https://example.com`

Ici, ce ne sont pas les mêmes sites, car les domaines enregistrables des deux URL sont différents :

* `https://developer.mozilla.org/fr/docs/`
* `https://example.com`

Si on ne prend pas le schéma en considération, ces deux URL porteront sur le même site :

* `http://example.com`
* `https://example.com`
Voir aussi
----------

* Qu'est-ce qu'une URL ?
* L'entrée du glossaire pour le terme « origine »
* La règle de même origine