recursal/MDN huggingface dataset:
WebKit
======

*WebKit* est un framework destiné à afficher des pages web correctement formatées en se basant sur leur balisage. Apple Safari dépend de WebKit tout comme de nombreux navigateurs pour mobiles (car WebKit est hautement portable et personnalisable).

WebKit a commencé son existence comme un fork du moteur KHTML de KDE et des bibliothèques KJS, mais beaucoup d'individus et d'entreprises y ont contribué depuis (dont KDE, Apple, Google, et Nokia).

WebKit est une marque déposée par Apple, et le framework est distribué sous une licence de type BSD. Cependant, deux éléments importants sont placés sous LGPL: la bibliothèque de rendu **WebCore** et le moteur **JavaScriptCore**.

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

### Culture générale

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

* Extensions CSS de WebKit
Ruby
====

*Ruby* est un langage de programmation open-source. Dans le domaine du web, Ruby est souvent utilisé côté serveur avec le framework *Ruby On Rails* (ROR) pour développer des applications/sites web.

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

### Culture générale

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

* Site web officiel de Ruby
* Site web officiel de Ruby On Rails
ISO
===

**ISO** (International Organization for Standardization) est une organisation internationale qui développe des critères uniformisés coordonnant les entreprises de chaque principal secteur.

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

### Culture générale

* Site web officiel
Objet
=====

Un Objet est une structure contenant des données et des instructions en rapport avec ces données. Un Objet correspond parfois à des choses du monde réel, par exemple à une `voiture` ou à une `piste` dans un jeu vidéo de course. JavaScript, Java, C++, Python et Ruby sont des exemples de langages de programmation orientée objet.

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

### Culture générale

* Programmation orientée objet sur Wikipédia
* `Object` dans la référence JavaScript
* Structure de données Objet en JavaScript
OpenSSL
=======

OpenSSL est une implémentation open source de SSL et de TLS.

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

### Culture générale

* OpenSSL sur Wikipédia
* Site web officiel
HTTPS
=====

**HTTPS** (*HTTP Sécurisé*) est une version chiffrée du protocole HTTP. Il utilise généralement TLS ou SSL pour chiffrer l'intégralité des communications entre un client et un serveur. La connexion sécurisée permet aux clients d'échanger de manière sûre des données sensibles avec un serveur, par exemple pour des transactions bancaires ou du commerce en ligne.

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

### Culture générale

* HTTPS sur Wikipédia
Cryptanalyse
============

La **cryptanalyse** est la branche de la cryptographie qui étudie la manière de casser des codes et des cryptosystèmes. Elle développe des techniques pour casser les systèmes cryptographiques, en particulier par des méthodes plus efficaces que la recherche par force brute. En plus des méthodes traditionnelles comme l'analyse fréquentielle ou l'indice de coïncidence, la cryptanalyse intègre des méthodes plus récentes, comme la cryptanalyse linéaire our la cryptanalyse différentielle qui peuvent venir à bout de systèmes cryptographiques plus avancés.

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

### Culture générale

* Cryptanalyse sur Wikipédia
DIC
===

DIC (Disponibilité, Intégrité, Confidentialité) (également appelé triade DIC ou triade CID) est un modèle qui guide les stratégies d'une organisation dans le domaine de la sécurité de l'information.

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

### Culture générale

* DIC sur Wikipédia
IRC
===

IRC (*Internet Relay Chat*) est un système mondial de discussion textuelle. Il nécessite une connexion internet et un client de messagerie IRC, qui va envoyer et recevoir des messages via les serveurs IRC.

Conçu par Jarrko Oikarinen à la fin des années 80, IRC est un protocole ouvert basé sur le protocole de transport TCP. Le serveur IRC diffuse les messages à toutes les personnes connectées sur l'un des nombreux canaux de discussion IRC (chacun avec son propre ID).
Première inactivité CPU (First CPU idle)
========================================

**La première inactivité CPU** (« *First CPU Idle* » en anglais) mesure la durée à partir de laquelle une page devient un minimum interactive, ou lorsque la fenêtre est suffisamment disponible pour permettre des entrées/saisies de l'utilisatrice ou de l'utilisateur. Il s'agit d'une mesure de performance web non standard de Google.

Généralement, cet instant se produit lorsque la plupart des éléments d'interface utilisateur visibles (pas nécessairement tous) sont interactifs et que l'interface utilisateur répond, en moyenne, à la plupart des entrées de l'utilisateur dans les 50 ms.

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

* Les autres métriques, qui ont remplacé *First CPU Idle* :
    + Temps avant l'interactivité (*Time to interactive*)
    + Temps de blocage total (*Total blocking time*)
Élément vide
============

Un **élément vide** (*void element* en anglais) est un élément HTML qui **ne peut pas** avoir de nœud enfant (c'est-à-dire des éléments imbriqués ou des nœuds texte). Les éléments vides n'ont qu'une balise ouvrante : les balises fermantes ne doivent pas être indiquées pour ces éléments.

En HTML, un élément vide ne doit pas avoir de balise fermante. Ainsi, `<input type="text"></input>` sera invalide en HTML. En revanche, pour SVG ou MathML, les éléments qui ne peuvent pas avoir de nœuds enfants peuvent utiliser une balise fermante plutôt que la syntaxe auto-fermante XML.

Les spécifications HTML, SVG, et MathML définissent précisément ce que chaque élément peut contenir. Aussi, certaines combinaisons de balises n'ont pas de sémantique correcte associée.

Bien qu'on puisse ajouter des nœuds enfants à un élément vide par le biais du DOM en utilisant JavaScript, ce n'est pas une bonne pratique et le résultat obtenu pourra ne pas être fiable.

Voici la liste des éléments vides en HTML :

* `<area>`
* `<base>`
* `<br>`
* `<col>`
* `<embed>`
* `<hr>`
* `<img>`
* `<input>`
* `<link>`
* `<meta>`
* `<param>`
* `<source>`
* `<track>`
* `<wbr>`
Balises auto-fermantes
----------------------

**Note :** Les balises auto-fermantes (`<tag />`) n'existent pas en HTML.

Si une barre oblique `/` de fin est présente dans la balise ouvrante d'un élément HTML, les analyseurs syntaxiques HTML ignoreront ce caractère. Il est important de se rappeler cette distinction pour les éléments (comme `<script>` ou `<ul>`) qui doivent avoir une balise fermante. Pour ces éléments, ajouter une barre oblique à la fin de la balise ouvrante ne suffira pas à fermer l'élément.

Toutefois, certains outils de formatage de code ajouteront une barre oblique de fin aux éléments vides afin de les rendre compatibles avec XHTML et d'améliorer la lisibilité. Ainsi, certains outils de formatage convertiront `<input type="text">` en `<input type="text" />`.

Les balises auto-fermantes sont requises pour les éléments vides en XML, XHTML, et SVG (par exemple, `<circle cx="50" cy="50" r="50" />`).

Pour SVG et MathML, les éléments qui ne peuvent pas avoir de nœud enfant peuvent utiliser une balise auto-fermante. Dans ces cas, si l'élément utilise une balise auto-fermante, il ne doit pas avoir de balise fermante en plus.

**Note :** Si une barre oblique `/` est présente dans la balise ouvrante et directement précédée (sans espace) par une valeur d'attribut sans quotes, la barre oblique fera alors partie de la valeur de l'attribut plutôt que d'être ignorée par l'analyseur syntaxique. Ainsi, si on écrit `<img src=http://www.example.com/logo.svg/>`, cela signifiera que l'attribut `src` contiendra la valeur `http://www.example.com/logo.svg/` et l'URL ainsi construite est invalide.

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

* Les éléments remplacés
Directive de navigation
=======================

**Les directives de navigation** **CSP** sont utilisées dans un en-tête de `politique de sécurité de contenu` et régissent l'emplacement sur lequel un utilisateur peut naviguer ou envoyer un formulaire, par exemple.

Les directives de navigation ne reviennent pas à la directive `default-src`.

Ces directives CSP sont :

* `form-action`
* `frame-ancestors`
* `navigation-to`
Voir aussi
----------

* `politique de sécurité de contenu`
* Autres types de directives:
    + Directive de récupération
    + Directive de document
    + Directive de rapport
Bloc
====

Le terme **bloc** possède différentes significations en fonction du contexte :

Bloc (script)
En JavaScript, un bloc est un ensemble d'statement entouré d'accolades ("{}"). Par exemple, vous pouvez placer un bloc d'instructions après `Statements/if...else` pour indiquer à l'interpréteur d'ignorer la totalité du bloc si la condition est fausse.
Block (CSS)
Sur une page web, un **block** est un Element HTML qui apparaît sous l'élément précédent et au-dessus du suivant (communément connu comme un *block-level element* ). Par exemple, `p` est par défaut un élément de type block, alors que `a` est un *inline element -* vous pouvez placer plusieurs liens les uns à côté des autres dans votre source HTML et ils seront placés sur la même ligne dans la sortie rendue.
MathML
======

**MathML** (une application XML) est un standard ouvert destiné à représenter des formules mathématiques dans des pages web. En 1998, MathML était d'abord une recommandation du W3C pour représenter des formules mathématiques dans le navigateur. MathML a également d'autres applications parmi lesquelles le contenu scientifique et la synthèse vocale.

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

* MathML sur Wikipédia
* La section MathML sur MDN
* L'édition de documents MathML
* Ce qu'est le MathML (en anglais)
Python
======

**Python** est un langage de programmation de haut-niveau, pour tous usages. Il possède une approche multi-paradigme et supporte donc des formes de programmation procédurale, orientée objet et fonctionnelle.

Il a été créé par Guido van Rossum entre 1985 et 1990 pour succéder à un autre langage (appelé ABC), et est actuellement utilisé dans de nombreux domaines, comme le développement web, en tant que langage de script pour d'autres applications et pour construire de vraies applications.

Python est développé sous une licence Open Source approuvée OSI, ce qui le rend librement utilisable et distribuable, même pour un usage commercial. La licence de Python est administrée par la Python Software Foundation.

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

* Python sur Wikipédia
* Le site officiel de Python, où le télécharger et l'installer
* Un tutoriel sur python (en anglais)
Nom d'en-tête interdit
======================

**Un nom d'en-tête interdit** est un nom d'en-tête HTTP qui ne peut être modifié par programmation, spécifiquement, un nom d'en-tête de **requête** HTTP (contraste avec Nom d'en-tête de réponse interdit).

Les modifications de ces en-têtes sont interdites pour que l'agent utilisateur garde un total contrôle sur eux. Les noms commençant par `Sec-` sont réservés à la création de nouveaux en-têtes à l'abri des API utilisant Fetch qui accordent aux développeurs le contrôle des en-têtes, tels que `XMLHttpRequest`.

Les noms d'en-tête interdits commencent avec `Proxy-` ou `Sec-`, ou se composent de l'un d'eux :

* `Accept-Charset`
* `Accept-Encoding`
* `Access-Control-Request-Headers`
* `Access-Control-Request-Method`
* `Connection`
* `Content-Length`
* `Cookie`
* `Cookie2`
* `Date`
* `DNT`
* `Expect`
* `Host`
* `Keep-Alive`
* `Origin`
* `Proxy-`
* `Sec-`
* `Referer`
* `TE`
* `Trailer`
* `Transfer-Encoding`
* `Upgrade`
* `Via`

**Note :** L'en-tête `User-Agent` n'est plus interdit, conformément à la spécification — voir la liste des noms d'en-tête interdit (implémentée dans Firefox 43), et peut donc maintenant être défini dans un objet en-tête Fetch, via XHR setRequestHeader(), etc.
Directive de rapport
====================

Les **directives de rapports** **CSP** sont utilisées dans un en-tête `Politique de sécurité de contenu` et contrôlent le processus de génération de rapports sur les violations CSP.

Ces directives CSP sont :

* `report-uri`
* `report-to`
Voir aussi
----------

* `Politique de sécurité de contenu`
* Autres types de directives:
    + Directive de récupération
    + Directive de document
    + Directive de navigation
Port
====

Un **port** est le point d'entrée de communication de tout ordinateur connecté à un réseau avec une adresse IP. Les ports sont désignés par des nombres et, en dessous de 1024, chaque port est associé par défaut à un protocole spécifique.

Par exemple, le port par défaut pour le protocole HTTP est 80 et le port par défaut pour le protocole HTTPS est 443. Un server web qui reçoit du traffic HTTP ou HTTPS écoutera donc des requêtes à partir de ces deux ports. Chaque protocole internet est associé à un port par défaut: SMTP (25), POP3 (en-US) (110), IMAP (143), IRC (194), et ainsi de suite.

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

* Port sur Wikipédia
Lazy load
=========

**Lazy load** (ou "chargement faineant" en français) est une stratégie qui repousse le chargement de certaines ressources (par exemple, des images) jusqu'à ce qu'elles soient nécessaires pour l'utilisateur, d'après l'activité de l'utilisateur et ses habitudes de navigation. Typiquement, ces ressources ne sont chargées que lorsqu'elles apparaissent sur la page affichée à l'écran. Lorsque le lazy-loading est correctement implémenté, le temps de chargement des ressources est réduit, ce qui contribue à améliorer le temps de charge initial (dont le time to interactive), puisque moins de ressources sont nécessaires pour que la page fonctionne.

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

* Lazy loading
Pseudo-code
===========

Un pseudo-code (également appelé LDA pour Langage de Description d'Algorithmes) fait référence à une syntaxe ressemblant à un code, généralement utilisée pour indiquer aux humains le fonctionnement d'une syntaxe de code ou pour illustrer la conception d'un élément d'architecture de code. Cela ne fonctionnera pas si vous essayez de l'exécuter comme un véritable code.

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

* Pseudo-code sur Wikipédia.
Trident
=======

Trident (ou MSHTML) est un moteur de rendu qui fait fonctionner Internet Explorer. Un "embranchement" de Trident appelé *EdgeHTML* a remplacé Trident dans le successeur d'Internet Explorer, Edge.

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

* Trident (moteur de rendu) sur Wikipédia
JPEG
====

**JPEG** (*Joint Photographic Experts Group*) est une méthode de compression avec pertes très utilisée pour les images numériques.

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

### Culture générale

* JPEG sur Wikipédia
Constante
=========

Une constante est une valeur que le programmeur ne peut pas modifier, des nombres par exemple (1, 2, 42). Par contre, avec des variables, le programmeur peut affecter une nouvelle valeur à un nom de variable déjà utilisé.

Comme les variables, certaines constantes sont désignées par des identificateurs. Par exemple, l'identificateur `pi` peut être associé à la valeur 3,14... .

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

### Culture générale

* Constante sur Wikipédia
ICANN
=====

**ICANN** (Internet Corporation of Assigned Names and Numbers) est une société à but non lucratif internationale qui maintient le système de noms de domaine et l'enregistrement des adresses IP.

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

### Culture générale

* Site web officiel
* ICANN sur Wikipédia
W3C
===

Le *World Wide Web Consortium* (W3C) est un organisme international qui maintient les règles en relation avec le Web et les frameworks.

Il est constitué de plus de 350 organisations qui développent conjointement les standards du Web, conduisent des programmes de sensibilisation et gèrent des forums ouverts pour dialoguer autour du Web. Le W3C coordonne les entreprises pour s'assurer qu'elles implémentent les mêmes standards.

Chaque standard passe à travers quatre étapes de maturation : *Working Draft* (WD, brouillon de travail), *Candidate Recommendation* (CR, candidat à la recommandation), *Proposed Recommendation* (PR, recommandation proposée), et *W3C Recommandation* (REC, recommandation du W3C).

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

### Connaissances générales

* Site web du W3C
* W3C sur Wikipédia
WHATWG
======

Le WHATWG (*Web Hypertext Application Technology Working Group*) est une organisation qui maintient et développe le HTML et les APIs des applications Web. Le WHATWG a été mis en place en 2004 par d'anciens employés d'Apple, Mozilla et Opera.

Les éditeurs de spécifications du WHATWG recherchent et recueillent des commentaires pour les documents de spécification. Le groupe dispose également d'un petit comité de membres invités qui sont autorisés à outrepasser ou remplacer les éditeurs de spécifications. Vous pouvez participer en tant que contributeur en souscrivant à la liste de diffusion.

D'après leur site web, WHATWG est une réponse aux progrès très lents du W3C sur les standards du Web, en particulier du HTML dont le W3C avait arrêté le développement pour se concentrer sur le XHTML.

WHATWG maintient les spécifications du HTML, du DOM et de JavaScript.

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

### Culture générale

* WHATWG sur Wikipédia
* Site Web officiel WHATWG.org
mime
====

**MIME** "Multipurpose internet mail extensions" est un standard pour décrire des documents sous d'autres formes que du texte ASCII, par exemple audio, vidéo et images. Initialement utilisé pour les pièces jointes aux courriers électroniques, il est devenu le standard pour définir n'importe où les types de documents.

Voir aussi Type Mime

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

### Culture générale

* MIME sur Wikipédia
WebVTT
======

WebVTT (Web Video Text Tracks) est une spécification W3C pour un format de fichier marquant des ressources de suivi de texte combinées avec l'élément HTML `<track>`.

Les fichiers WebVTT fournissent des métadonnées alignées sur le temps avec du contenu audio ou vidéo, comme des légendes ou des sous-titres, des descriptions de vidéos texte, des chapitres pour la navigation dans le contenu, etc.

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

### Culture générale

* WebVTT sur Wikipédia
### Technical reference

* WebVTT sur MDN
* Spécification
Internationalisation
====================

L'**internationalisation** (aussi abrégée en "i18n") est l'ensemble des bonnes pratiques permettant à des produits ou des services d'être adaptés pour différents publics, d'une langue, d'une culture ou d'une région différente.

La localisation est le processus complémentaire pour adapter un système à un public donné.

L'internationalisation permet entre autres l'adaptation des différences relatives aux :

* Systèmes d'écriture
* Unités de mesure (monnaie, °C/°F, km/miles, etc.)
* Formats de dates et heures
* Dispositions de clavier

Le travail du consortium Unicode fait partie intégrante de l'internationalisation. Unicode prend en charge les variations entre les systèmes d'écriture du monde entier, et aussi les variations culturelles notamment liées aux devises et formats des dates et heures.

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

* La localisation sur le glossaire MDN
* Le site du consortium Unicode
* L'API JavaScript pour l'internationalisation
minification
============

La **minification** est le processus de suppression des données inutiles ou redondantes sans affecter la manière dont une ressource est traitée par le navigateur. La minification peut inclure la suppression des commentaires de code, des espaces blancs et du code inutilisé, ainsi que le raccourcissement des noms de variables et de fonctions. La minification est utilisée pour améliorer les performances web en réduisant la taille du fichier. Il s'agit généralement d'une étape automatisée qui se produit au moment de l'assemblage des scripts et des feuilles de styles.

Comme la minification rend le code moins lisible pour les humains, les outils de développement ont des fonctionnalités de *prettification* qui permettent de rajouter les espaces blancs dans le code minifié afin d'améliorer sa lisibilité.
Moteur de recherche
===================

Un moteur de recherche est un système logiciel qui collecte des informations à partir du World Wide Web et qui les présente aux utilisateurs qui recherchent des informations spécifiques.

Un moteur de recherche dirige les processus suivants :

* **Robot d'indexation :** Recherche de sites web par le parcours des Hyperliens contenus sur les pages web, à la fois à l'intérieur d'un site, mais aussi d'un site vers un autre site. Le propriétaire d'un site web peut empêcher les *robots d'indexation* (ou *araignées*) des moteurs de recherche d'accéder à des zones du site en spécifiant l'information "robot exclusion" dans un fichier nommé `robots.txt` pour les exclure.
* **Indexation :** Association de mots-clés et d'autres informations avec des pages web spécifiques qui ont été parcourues. Cela permet aux utilisateurs de trouver des pages pertinentes le plus rapidement possible.
* **Recherche :** Recherche de pages web pertinentes basée sur des requêtes constituées de mots-clés et d'autres commandes adressées au moteur de recherche. Ce dernier trouve les URLs des pages qui correspondent à la requête et les classe en fonction de leur pertinence. Il présente ensuite les résultats à l'utilisateur dans l'ordre d'importance.

Le moteur de recherche le plus populaire est Google. Parmi d'autres moteurs de recherche populaires figurent Yahoo!, Bing, Baidu et AOL.

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

* Moteur de recherche sur Wikipédia
* Moteur de recherche sur Webopedia (en anglais)
* Comment fonctionnent les moteurs de recherche Internet sur How Stuff Works (en anglais)
Fork
====

Un *fork* est une copie d'un projet logiciel existant à un moment donné pour permettre à quelque-un d'ajouter ses propres modifications au projet. Si la licence du logiciel original le permet, vous pouvez copier le code pour développer votre propre version de ce logiciel, avec vos propres ajouts, qui sera alors un « fork ».

Les *forks* sont communs dans le développement des logiciels libres et *open source*. C'est maintenant un terme plus populaire grâce au modèle de contribution utilisant Git (et/ou la plateforme GitHub).

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

* *Fork* sur Wikipédia
* Comment forker un dépôt GitHub (*fork* comme dans un contexte Git)
* Distributions Linux
* Node.js et io.js (qui ont été fusionnés)
* LibreOffice, un fork d'OpenOffice
NNTP
====

**NNTP** (Network News Transfer Protocol) est un protocole utilisé pour transférer des messages Usenet d'un client vers un serveur ou entre serveurs.

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

### Culture générale

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

* De l'IETF : RFC 3977 à propos de NNTP (2006)
Doctype
=======

En HTML, le doctype est le préambule "`<!DOCTYPE html>`" requis en haut de tous les documents. Son seul but est d'empêcher un navigateur de passer en soi-disant "quirks mode" lors du rendu d'un document ; c'est-à-dire que le doctype "`<!DOCTYPE html>`" garantit que le navigateur fait de son mieux pour suivre les spécifications pertinentes, plutôt que d'utiliser un mode de rendu différent incompatible avec certaines spécifications.

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

### Culture générale

* Définition du DOCTYPE dans la spécification HTML (en)
* Mode quirks dans Mozilla
### Référence technique

Document.doctype, une méthode JavaScript qui retourne le doctype
Pseudo-classe
=============

En CSS, un sélecteur de **pseudo-classe** cible des éléments en fonction de leur état plutôt qu'en fonction de l'information issue de l'arbre du document. Par exemple, le sélecteur `a``:visited` applique un style uniquement aux liens que l'utilisateur a déjà visités.

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

### Référence technique

* Documentation sur les pseudo-classes