recursal/MDN huggingface dataset:
Langage de programmation de haut niveau
=======================================

Un langage de programmation de haut niveau a une **abstraction significative** des détails du fonctionnement de l'ordinateur. Il est conçu pour être facilement compris par les humains et pour cette raison, il doit être traduit par un autre logiciel. Contrairement aux langages de programmation de bas niveau, il peut utiliser des éléments de langage naturel ou automatiser (voire masquer) des champs importants de système informatique, rendant le processus de développement plus simple et plus compréhensible par rapport à un langage de niveau inférieur. La quantité d'abstraction fournie définit la façon dont un langage de programmation est «de haut niveau».

L'idée d'un langage automatiquement traduisible en code machine, mais plus proche de la logique humaine, a été introduite en informatique dans les années 1950, notamment grâce au travail de **John Backus** (IBM), à qui nous devons le premier langage de haut niveau à avoir été largement diffusé : Fortran. Pour cette innovation, Bakus a reçu le prix Turing.
Three js
========

three.js est un moteur WebGL en JavaScript capable d'exécuter directement dans le navigateur des jeux exploitant le GPU ainsi que d'autres applications graphiques. La bibliothèque three.js fournit de nombreuses fonctionnalités et API pour dessiner des scènes 3D dans votre navigateur.

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

### Culture générale

* Three.js sur Wikipédia
* Site web officiel de three.js
Outils de développement
=======================

Les outils de développement sont des programmes qui permettent à un développeur de créer, tester et déboguer un logiciel.

Les navigateurs courants fournissent des outils de développement intégrés, qui permettent d'inspecter un site web. Ils permettent aux utilisateurs d'inspecter et de déboguer les pages HTML, CSS et JavaScript, de mesurer le trafic réseau qu'ils provoquent et les performances, et bien plus encore.

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

### Culture générale

* Environnement de développement sur Wikipédia
### Références techniques

* Outils de développement Firefox sur MDN
* Firebug (ancien outil de développement pour Firefox)
* Outils de développement Chrome sur chrome.com
* Inspecteur web Safari sur apple.com
* Outils de développement Edge sur microsoft.com
Paquet
======

Un paquet, ou paquet réseau, est un bloc de données formaté envoyé sur un réseau. Les principaux composants d'un paquet réseau sont les données utilisateur et les informations de contrôle. Les données utilisateur sont appelées *payload ou charge utile*. Les informations de contrôle sont les informations de livraison du payload. Il se compose d'adresses réseau pour la source et la destination, des informations de séquencement et des codes de détection d'erreur et se trouve généralement dans les en-têtes et le pied de page des paquets.

Ce qu'un paquet contient
------------------------

### Limite de saut

Un saut se produit lorsqu'un paquet est passé d'un réseau au réseau suivant. C'est un champ qui diminue de un à chaque fois qu'un paquet passe, une fois qu'il atteint 0, il a échoué et le paquet est rejeté.

Au fil du temps, le nombre de paquets peut provoquer une traversée dans des circuits fermés, le nombre de paniers en circulation s'accumulerait et conduirait finalement à l'échec du réseau.

### Détection et correction des erreurs

La détection et la correction d'erreurs sont ds codes utilisés pour détecter et appliquer des corrections aux erreurs qui se produisent lorsque les données sont transmises au récepteur. Il existe deux types de corrections d'erreurs en amont et en aval. La correction d'erreur vers l'arrière est lorsque le récepteur demande à l'expéditeur de retransmettre l'unité de données entière. La correction d'erreur directe est lorsque le récepteur utilise le code de correction d'erreur qui corrige automatiquement les erreurs.

Au niveau de l'émetteur, le calcul est effectué avant l'envoi du paquet. Lorsqu'elle est reçue à la destination, la somme de contrôle est recalculée et comparée à celle du paquet.

### Priorité

Ce champ indique quel paquet doit avoir une priorité plus élevée sur les autres. La file d'attente de priorité élevée est vidée plus rapidement que les files d'attente de priorité inférieure lorsque le réseau est congestionné.

### Adresses

Lors du routage de paquets réseau, deux adresses réseau sont nécessaires: l'adresse source de l'hôte émetteur et l'adresse de destination de l'hôte récepteur.

### Données utilisateur - Payload

Le payload correspond aux données transportées pour le compte d'une application. Il est généralement de longueur variable, jusqu'à un maximum qui est fixé par le protocole réseau et parfois l'équipement sur l'itinéraire.

Références utilisées
--------------------

* https://en.wikipedia.org/wiki/Network\_packet
* https://en.m.wikipedia.org/wiki/Hop\_(networking)
* https://www.techradar.com/news/computing/how-error-detection-and-correction-works-1080736
En-tête de réponse sûr pour le CORS
===================================

Un *en-tête de réponse sûr pour le CORS* est un en-tête HTTP d'une réponse CORS dont on considère qu'il est sûr et peut être exposé aux scripts côté client. Seuls les en-têtes de réponse sûrs sont disponibles pour les pages web.

Par défaut, la liste des en-têtes de réponse sûrs contient :

* `Cache-Control`
* `Content-Language`
* `Content-Length`
* `Content-Type`
* `Expires`
* `Last-Modified`
* `Pragma` (en-US)

Des en-têtes supplémentaires peuvent être indiqués comme sûr à l'aide de l'en-tête `Access-Control-Expose-Headers` (en-US).

**Note :** Initialement, `Content-Length` ne faisait pas partie de la liste par défaut des en-têtes de réponse sûrs (voir la *pull request* 626 du dépôt Fetch).

Exemples
--------

### Étendre la liste sûre

La liste des en-têtes de réponse sûrs pour le CORS peut être étendue à l'aide de l'en-tête `Access-Control-Expose-Headers` (en-US) :


```http
Access-Control-Expose-Headers: X-Custom-Header, Content-Encoding
```

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

* HTTP
* En-têtes HTTP
* `Access-Control-Expose-Headers` (en-US)
* Entrées du glossaire
    + CORS
    + En-tête de requête sûr pour le CORS
    + Nom d'en-tête interdit
    + En-tête de requête
Alignment subject
=================

Dans le CSS Box Alignment (alignement des boîtes en CSS) l'**alignment subject** (le sujet de l'alignement) est la ou les choses alignées par la propriété.

Pour `justify-self` et `align-self`, l'**alignment subject** est la marge de la boite sur laquelle la propriété est définie, en utilisant le mode d'écriture de cette zone.

Pour `justify-content` et `align-content`, le mode d'écriture de la boîte est également utilisé. La définition du sujet de l'alignement dépend du mode de mise en page utilisé.

Conteneurs de bloc (comprenant les cellules de tableau)

L'ensemble du contenu du bloc en une seule unité.

Conteneurs multi-colonne

Les boites de colonne, avec tout espacement inséré entre les boites de colonne ajoutées aux espaces de colonne appropriés.

Conteneurs flex

 Pour `justify-content`, les éléments flexibles dans chaque ligne de flexible.
 Pour `align-content`, les lignes flexibles. Notez que cela n'a d'effet que sur les conteneurs flexibles multilignes.


Conteneurs grid

La grille suit l'axe approprié, avec tout espacement inséré entre les pistes ajoutées aux gouttières correspondantes. Les gouttières fusionnées sont traitées comme une seule opportunité d'insertion d'espace.

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

* CSS Box Alignment
ARIA
====

**ARIA** (*Accessible Rich Internet Applications*) est une spécification technique du W3C. ARIA décrit comment ajouter de la sémantique et d'autres métadonnées à du contenu HTML dans le but de répondre aux besoins des technologies d'assistance.

Par exemple, vous pouvez ajouter l'attribut `role="alert"` à un élément `<p>` pour notifier à un utilisateur malvoyant l'importance et l'urgence de l'information (pour un utilisateur sans problème de vue, cette information pourrait être mise en exergue par un texte coloré différemment).

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

* ARIA sur MDN
Axe transversal
===============

L'axe transversal d'une flexbox traverse l'axe principal, donc si la flex-direction et l'axe principal sont `row` (*ligne*) ou `row-reverse` l'axe transversal est en colonne.

![The cross axis runs down the column](/fr/docs/Glossary/Cross_Axis/basics3.png)

Si l'axe principal est `column` ou `column-reverse`, l'axe transversal est donc en ligne.

![The cross axis runs along the row.](/fr/docs/Glossary/Cross_Axis/basics4.png)

L'alignement des articles sur l'axe transversal est réalisé avec la propriété `align-items` sur le conteneur flexible ou la propriété `align-self` sur les éléments individuels. Dans le cas d'un conteneur flexible multi-lignes, avec un espace supplémentaire sur l'axe transversal, vous pouvez utiliser `align-content` pour contrôler l'espacement des lignes.

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

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

* `align-content`
* `align-items`
* `align-self`
* `flex-wrap`
* `flex-direction`
* `flex`
### En lire plus

* Guide Flexbox CSS : *Les concepts de base pour flexbox*
* Guide Flexbox CSS : *Aligner des éléments dans un conteneur flexible*
* Guide Flexbox CSS : *Maîtriser l'enveloppe des éléments flexibles*
Constantes
==========

Cette section est une référence au définitions utilisées par l'API Plug-in. Toutes les définitions proviennent de npapi.h.

### Codes Erreur

| Code | Valeur | Description |
| --- | --- | --- |
| **NPERR\_NO\_ERROR** | 0 | Aucune erreur n'est survenue |
| **NPERR\_GENERIC\_ERROR** | 1 | Une erreur sans code attribué est survenue |
| **NPERR\_INVALID\_INSTANCE\_ERROR** | 2 | L'instance transmise au plugin est invalide |
| **NPERR\_INVALID\_FUNCTABLE\_ERROR** | 3 | Table de fonctions invalide |
| **NPERR\_MODULE\_LOAD\_FAILED\_ERROR** | 4 | Le chargement du plugin a échoué |
| **NPERR\_OUT\_OF\_MEMORY\_ERROR** | 5 | L'allocation de mémoire a échoué |
| **NPERR\_INVALID\_PLUGIN\_ERROR** | 6 | Plugin manquant ou invalide |
| **NPERR\_INVALID\_PLUGIN\_DIR\_ERROR** | 7 | Répertoire du plugin manquant ou invalide |
| **NPERR\_INCOMPATIBLE\_VERSION\_ERROR** | 8 | les versions du plugin et de Communicator ne correspondent pas |
| **NPERR\_INVALID\_PARAM** | 9 | Paramètre manquant ou invalide |
| **NPERR\_INVALID\_URL** | 10 | URL manquante ou invalide |
| **NPERR\_FILE\_NOT\_FOUND** | 11 | Fichier manquant ou invalide |
| **NPERR\_NO\_DATA** | 12 | Le flux ne contient pas de données |
| **NPERR\_STREAM\_NOT\_SEEKABLE** | 13 | Flux trouvable attendu. (trad à vérifier : Seekable stream expected) |
Liaison à trois voies
=====================

TCP (Transmission Control Protocol) est un protocole hôte à hôte de la couche transport permettant la communication en mode connexion entre deux ordinateurs sur un réseau IP. TCP utilise une **liaison à trois voies** (ou TCP-Handshake, trois messages ou **SYN-SYN-ACK**) pour établir une connexion TCP / IP sur un réseau IP : **SYN** pour synchronize et **ACK** pour acuittement. Les trois messages transmis par TCP pour négocier et démarrer une session TCP sont respectivement surnommés *SYN, SYN-ACK* et *ACK:* **syn**chronize, **syn**chronize **ac**quittement, et **ac**quittement. Le mécanisme à trois messages est conçu pour que deux ordinateurs souhaitant échanger des informations puissent négocier les paramètres de la connexion avant de transmettre des données telles que des requêtes de navigateur HTTP.

L'hôte, généralement le navigateur, envoie un paquet TCP SYNchronize au serveur. Le serveur reçoit le SYN et renvoie un accusé de réception SYNchronize. L'hôte reçoit le SYN-ACK du serveur et envoie un acquittement. Le serveur reçoit ACK et la connexion de socket TCP est établie.

Cette étape de négociation se produit après une recherche DNS et avant la négociation TLS, lors de la création d'une connexion sécurisée. La connexion peut être terminée indépendamment de chaque côté de la connexion via une liaison à quatre voies.

Voire aussi
-----------

* Transport Layer Security (TLS) protocol (en-US)
* HTTPS
* *Transport Layer Security* sur Wikipédia
Arpanet
=======

**ARPAnet** (advanced research projects agency network) était l'un des premiers réseaux informatiques, construit en 1969 comme un support robuste pour transmettre des données militaires sensibles et pour relier des groupes à la pointe de la recherche à travers le territoire des États-Unis. ARPAnet utilisait d'abord NCP (network control protocol) puis par la suite la première version de la suite des protocoles Internet ou TCP/IP, ce qui a fait d'ARPAnet une partie importante du naissant Internet. ARPAnet a fermé au début des années 90.

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

### Culture générale

* Arpanet sur Wikipédia
SEO
===

**SEO** (Search Engine Optimization ou, en français, *Optimisation pour les moteurs de recherche*) est le processus permettant de rendre un site web plus visible dans les résultats de recherche, également appelé amélioration des classements de recherche.

Les moteurs de recherche explorent le web, suivant les liens de page en page, et indexent le contenu trouvé. Lorsque vous effectuez une recherche, le moteur de recherche affiche le contenu indexé. Les parcours suivent des règles. Si vous suivez ces mêmes règles de près lors du référencement d'un site web, vous donnez au site les meilleures chances d'apparaître parmi les premiers résultats, augmentant le trafic et éventuellement les revenus (pour le commerce électronique et les publicités).

Les moteurs de recherche donnent quelques lignes directrices pour le référencement, mais les gros moteurs de recherche gardent le classement des résultats comme un secret commercial. SEO combine les directives officielles des moteurs de recherche, les connaissances empiriques et les connaissances théoriques tirées de documents scientifiques ou de brevets.

Les méthodes de SEO se répartissent en trois grandes classes :

technique

Marque le contenu en utilisant la sémantique HTML. Lors de l'exploration du site Web, les robots d'exploration ne doivent trouver que le contenu que vous souhaitez indexer.

copie-l'écriture (*copywriting*)

Ecrit du contenu en utilisant le vocabulaire de vos visiteurs. Utilise du texte ainsi que des images pour que les robots puissent comprendre le sujet.

popularité

Vous obtenez plus de trafic lorsque d'autres sites établis pointent vers votre site.

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

### Culture générale

* Optimisation pour les moteurs de recherche sur Wikipédia
### Apprendre SEO

* Google Webmasters propose de l'aide aux webmasters pour être visible sur le web (documentation et outils)
Asynchrone
==========

*Asynchrone* fait référence à un environnement de communication où chaque partie reçoit et traite les messages lorsque c'est possible ou plus pratique, au lieu de le faire au même moment.

Il peut être utilisé pour décrire un environnement de communication humain comme le courriel : l'expéditeur envoie un courriel et le destinataire se contente d'y répondre quand cela lui convient ; il n'a pas à répondre immédiatement.

Il peut également être utilisé pour décrire un environnement de communication informatique, par exemple `Ajax` est un mécanisme asynchrone pour demander de petits bits de données sur HTTP ; le résultat est renvoyé lorsque la réponse est complète, pas immédiatement.

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

### Référence technique

* Récupérer des données du serveur (zone Apprendre)
* Synchronous
Fil d'exécution
===============

Dans les sciences de l'informatique, le **fil d'exécution** correspond au lancement de plusieurs tâches ou programmes au même moment. Chaque unité capable d'exécuter du code est nommée un **fil d'exécution**.

Le **fil d'exécution principal** est celui qui est utilisé par le navigateur pour prendre en charge les évènements générés par l'internaute, le rendu et la peinture de la page, ainsi que pour lancer la majorité du code utilisé par une page ou une application web. Comme tout cela se passe au sein du fil principal, un site ou une application web lente ralentit aussi l'ensemble du navigateur. Pire, si un script lancé par un site ou une application entre dans une boucle infinie, le fonctionnement du navigateur tout entier sera suspendu. Ce ralentissement général du navigateur conduit à une expérience de navigation frustrante.

Cependant, le JavaScript moderne offre plusieurs façons de créer des fils additionnels permettant de répartir indépendamment l'exécution tout en permettant à ces fils d'exécution de communiquer les uns avec les autres. Cela est faisable en utilisant des technologies telles que **l'API web workers**, qui peut être utilisée pour lancer un sous-programme chargé de se lancer dans son propre fil, en parallèle du fil d'exécution principal. Cela préserve les performances d'ensemble du site ou de l'application, ainsi que plus généralement de l'ensemble du navigateur. Cela permet aussi aux internautes de profiter des avantages des processeurs multicœur modernes.

Il existe un type spécifique de *worker*, nommé **service worker**, qui peut être créé – avec la permission de l'internaute – en arrière-plan afin d'exécuter des scripts alors même que la personne n'est pas connectée au site. C'est utilisé pour créer des sites capables de notifier l'internaute lorsque des choses se passent, même s'il n'est pas connecté activement au site. Cela permet par exemple d'indiquer à une personne le fait qu'elle a reçu un e-mail même si elle n'est pas connectée à son gestionnaire d'e-mails.

Plus généralement, ces fils créés par le système d'exploitation sont extrêmement utiles. Ils aident à minimiser le temps de bascule entre les différents contextes de chaque application tournant sur l'ordinateur, et permettent une communication plus efficiente grâce à l'utilisation de l'architecture multiprocesseur des ordinateurs modernes.

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

* JavaScript asynchrone
* API Web worker
* API Service worker
* Fil d'exécution principal (entrée du glossaire)
DOM (Document Object Model)
===========================

Le DOM (Document Object Model) est une API qui représente et interagit avec tous types de documents HTML ou XML. Le DOM est un modèle de document chargé dans le navigateur. La représentation du document est un arbre nodal. Chaque nœud représente une partie du document (par exemple, un élément, une chaîne de caractères ou un commentaire).

Le DOM est l'une des API les plus utilisées sur le Web parce qu'elle autorise du code exécuté dans un navigateur à accéder et interagir avec chaque nœud dans le document. Les nœuds peuvent être créés, déplacés et modifiés. Des écouteurs d'évènements (« *event listeners* ») peuvent être ajoutés à des nœuds et déclenchés par un évènement donné.

À l'origine, DOM n'était pas standardisé. Il ne l'a été que lorsque les navigateurs ont commencé à implémenter JavaScript. Le DOM qui découle de cette période initiale est parfois appelé DOM 0. À l'heure actuelle, le W3C édicte les spécifications de la norme DOM

1. *Document Object Model* (DOM) sur Wikipédia
2. La documentation du DOM sur MDN
3. Les références du DOM
4. Glossaire
    1. API
    2. HTML
    3. XML
    4. World Wide Web
PHP
===

PHP est un langage de script côté serveur conçu pour le développement web mais aussi utilisé comme langage de programmation généraliste. Créée à l'origine par Rasmus Lerdorf en 1994, l'implémentation de la référence PHP est maintenant produite par The PHP Group. PHP signifiait à l'origine Personal Home Page, mais elle correspond maintenant à l'acronyme récursif PHP : Hypertext Preprocessor.

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

* PHP - Site officiel
* PHP sur Wikipédia
* PHP sur Wikibooks
* Intro to PHP W3Schools (en)
WebAssembly
===========

**WebAssembly** (abrégé *Wasm*) est un format ouvert binaire qui peut être exécuté dans des navigateurs web modernes afin d'améliorer la performance et/ou de fournir de nouvelles fonctionnalités pour des pages web.

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

* WebAssembly sur Wikipédia
* Le site officiel de WebAssembly (en anglais)
* WebAssembly sur MDN
XForm
=====

**XForms** est une convention pour la construction de formulaires Web et pour le traitement de leurs données dans un format XML. Plus aucun navigateur majeur ne supporte XForms—nous suggérons d'utiliser les formulaires HTML5 à la place.

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

### Référence technique

* Documentation XForms sur MDN
IETF
====

L'Internet Engineering Task Force (**IETF**) est une organisation mondiale qui élabore les spécifications gouvernant les mécanismes derrière le fonctionnement de l'Internet, en particulier TCP/IP, la suite de protocoles Internet. L'IETF est ouvert, composé de bénévoles et soutenu par l'Internet Society.

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

### Culture générale

* Site web officiel
Classe
======

En programmation orientée objet, une *classe* définit les caractéristiques d'un objet. Une classe est une définition de modèle pour les propriétés et les méthodes d'un objet, le "schéma" à partir duquel d'autres instances plus spécifiques de l'objet sont tracées.

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

### Culture générale

* Langages orientés objet vs. langages orientés prototype (comme JavaScript)
* Utilisation de fonctions en tant que classes en JavaScript
* Programmation à base de classes sur Wikipédia (en anglais)
* Programmation orientée objet sur Wikipédia
Houdini
=======

Houdini est un ensemble d'API de bas niveau qui donnent aux développeurs la possibilité d'étendre le CSS, offrant la possibilité de se connecter au processus de style et de mise en page du moteur de rendu d'un navigateur. Houdini donne aux développeurs l'accès au modèle d'obet CSS (CSSOM), permettant aux développeurs d'écrire du code que le navigateur peut analyser en CSS. L'avantage de Houdini est que les développeurs peuvent créer des fonctionnalités CSS sans attendre les spécifications des normes Web pour les définir et sans attendre que chaque navigateur implémente complètement les fonctionnalités.

Bien que de nombreuses fonctionnalités activées par Houdini puissent être créées avec JavaScript, l'interaction directe avec le CSSOM avant l'activation de JavaScript permet des temps d'analyse plus rapides. Les navigateurs créent le CSSOM - y compris les processus de mise en page, de peinture et de composition - avant d'appliquer les mises à jour de style trouvées dans les scripts: les processus de mise en page, de peinture et de composition sont répétés pour que les styles JavaScript mis à jour soient implémentés. Le code Houdini n'attend pas la fin de ce premier cycle de rendu. Il est plutôt inclus dans ce premier cycle, créant des styles rendables et compréhensibles.

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

* Houdini (en-US)
* Houdini: une introduction
* CSSOM
* CSS Paint API (en-US)
* CSS Typed OM (en-US)
Type MIME
=========

Un **type MIME** (désormais correctement appelé "media type", mais aussi parfois "content type") est une chaîne de caractères envoyée avec un fichier pour en indiquer le type (par exemple, un fichier sonore sera étiqueté `audio/ogg` ou un fichier graphique `image/png`).

Il répond au même objectif que les extensions de fichiers traditionnellement utilisées sous Windows. Le nom vient de la norme MIME initialement utilisée dans E-Mail.

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

### Culture générale

* Type de médias sur Wikipédia
### Référence technique

* Liste des types MIME
* Configurer correctement les types MIME sur un serveur (en-US)
* Détails sur l'utilisation des types MIME dans un contexte Web.
Blink
=====

**Blink** est un moteur de rendu HTML libre basé sur WebKit et développé principalement par Google dans le cadre du projet Chromium (et par conséquent présent dans Chrome aussi). Plus particulièrement, Blink est une branche de la bibliothèque WebCore de WebKit qui gère l'agencement, le rendu et le DOM.

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

### Culture générale

* Page d'accueil du projet Blink
* Blink sur Wikipédia.