recursal/MDN huggingface dataset:
Gouttières
==========

**Les gouttières** (ou *ruelles*) sont l'espace entre les pistes de contenu. Elles peuvent être créées avec les grilles CSS en utilisant les propriétés `column-gap`, `row-gap` ou `gap`.

Exemple
-------

Dans l'exemple ci-dessous, nous avons une grille de 3 colonnes et 2 rangées, avec 20 pixels d'écart entre les pistes de colonnes et `20px` entre les pistes de lignes.
```

\* {
  box-sizing: border-box;
}

.wrapper {
  border: 2px solid #f76707;
  border-radius: 5px;
  background-color: #fff4e6;
}

.wrapper > div {
  border: 2px solid #ffa94d;
  border-radius: 5px;
  background-color: #fff8f8;
  padding: 1em;
  color: #d9480f;
}
```



```css
.wrapper {
  display: grid;
  grid-template-columns: repeat(3, 1.2fr);
  grid-auto-rows: 45%;
  column-gap: 20px;
  row-gap: 20px;
}
```



```html
<div class="wrapper">
  <div>Un</div>
  <div>Deux</div>
  <div>Trois</div>
  <div>Quatre</div>
  <div>Cinq</div>
</div>
```


En termes de dimensionnement de la grille, l'écart agit comme une grille normale, mais rien ne peut y être placé. L'écart agit comme si la ligne de grille à cet endroit avait gagné une taille supplémentaire, de sorte que tout élément de grille placé après cette ligne commence à la fin de l'écart.

Les propriétés de l'écart de grille (par exemple, `row-gap` et `column-gap`) ne sont pas la seule chose qui peut provoquer l'espacement des pistes. Les marges, le remplissage ou l'utilisation des propriétés de distribution d'espace pour l'alignement des boîtes peuvent tous contribuer à l'écart visible — donc, les propriétés de l'écart de grille (`row-gap` et `column-gap`) ne doivent pas être considérées comme égales à la taille de la gouttière, sauf si vous savez que votre conception n'a pas introduit d'espace supplémentaire avec l'une de ces méthodes.

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

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

* `column-gap`
* `row-gap`
* `gap`
### En lire plus

* Guide des grilles CSS : *Les concepts de base des grilles CSS*
* Définition des gouttières (*gutters*) dans la spécification des grilles CSS (en anglais)
Cryptogramme
============

En cryptographie, un cryptogramme est un message codé qui contient des informations mais qui n'est pas lisible sauf s'il est déchiffré avec le bon cryptosystème et le bon code secret (qu'on appelle une clé). Une fois déchiffré, on obtient le texte brut. La sécurité d'un cryptogramme et par conséquent celle des informations qu'il contient dépendent de la sécurité du cryptosystème utilisé et de la possibilité de garder la clé secrète.

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

* Cryptographie sur Wikipédia
SIMD
====

SIMD (prononcé "seem-dee") est l'acronyme de **Single Instruction/Multiple Data** (instruction unique/données multiples) qui est une des catégories d'architecture d'ordinateurs. SIMD permet à une même opération d'être réalisée sur plusieurs données, ce qui résulte en une parallélisation au niveau des données et par conséquent apporte un gain de performances, par exemple dans le traitement de graphismes 3D ou vidéo, dans les simulations physiques ou la cryptographie et d'autres domaines encore.

Voir aussi SISD qui est une architecture séquentielle sans parallélisme, que ce soit pour le jeu d'instructions ou les données.

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

### Culture générale

* SIMD en JavaScript
* SIMD sur Wikipédia
Primitive
=========

Une **primitive** (valeur primitive ou structure de donnée primitive) est une donnée qui n'est pas un objet et n'a pas de méthode. En JavaScript, il y a 7 types de données primitives: String, Number, Boolean, Null, undefined, Symbol, Bigint (nouveauté d'ECMAScript 2020).

La plupart du temps, une valeur primitive est représentée directement au plus bas niveau dans l'implémentation du langage.

Toutes les primitives sont **non-mutables** (ne peuvent pas être modifiées).

Primitives JavaScript encapsulées dans des objets
-------------------------------------------------

Excepté dans les cas de `null` ou `undefined`, pour chaque valeur primitive il existe un objet équivalent qui la contient:

* `String` pour la primitive `string` ;
* `Number` pour la primitive `number` ;
* `Boolean` pour la primitive `boolean`;
* `Symbol` pour la primitive `symbol`;
* `Bigint` pour la primitive `bigint`;

La méthode `valueOf()` de ces objets retourne la valeur primitive encapsulée correspondante.

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

### Culture générale

* Introduction aux types de données en JavaScript
* Type sur Wikipédia
Gecko
=====

**Gecko** est le moteur de rendu développé par Mozilla et utilisé dans beaucoup d'applications/appareils, dont Firefox.

Les navigateurs ont besoin d'un logiciel appelé moteur de rendu pour interpréter le HTML, les feuilles de style CSS, et les contenus embarqués (tels que les images) pour ensuite tout afficher sur votre écran. À côté de ça, Gecko garantit que les API associées fonctionnent correctement sur l'ensemble des systèmes d'exploitation pris en charge par Gecko, et que les API appropriées ne sont exposées qu'aux cibles supportées concernées. Cela signifie que Gecko intègre, entre autres choses, une pile réseau, une couche graphique, un moteur de rendu, une machine virtuelle JavaScript, et des couches de portabilité.

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

* Gecko sur Wikipédia
* Les autres moteurs de rendu existants :
    + Blink utilisé pour Chromium, Chrome, Edge
    + WebKit utilisé pour Safari
POP3
====

**POP3** (Post Office Protocol) est un protocole très répandu pour récupérer les courriels depuis un serveur de messagerie via une connexion TCP. POP3 ne supporte pas les dossiers, contrairement à l'IMAP4 qui est plus récent, mais qui est aussi plus difficile à implémenter en raison de sa structure plus complexe.

En général, les clients récupèrent tous les messages puis les suppriment du serveur, mais POP3 permet d'en conserver une copie dessus. Quasiment tous les serveurs et clients de messagerie actuels gèrent POP3.

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

* RFC 1939 (Spécification de POP3)
* RFC 2449 (Spécification de POP3 extension mechanism)
* RFC 1734 (Spécification de POP3 authentication mechanism)
* IMAP4
* *Post Office Protocol* sur Wikipédia
Portée globale
==============

Dans un environnement de programmation, la portée globale ( *global scope* ) est la portée qui est visible dans toutes les autres portées.

Dans le JavaScript côté client, la portée globale est généralement la page web à l'intérieur de laquelle tout le code est en cours d'exécution.

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

### Apprendre sur ce sujet

* Introduction à la portée des variables en JavaScript
* Portée sur Wikipédia
Test de fumée
=============

Un test de fumée (*Smoke test*) consiste en des tests fonctionnels ou unitaires de fonctions logicielles critiques. Les tests de fumée viennent avant d'autres tests approfondis.

Un test de fumée répond aux questions comme :

* "Est-ce que le programme démarre correctement ?"
* "Est-ce que les boutons de contrôle principaux fonctionnent ?"
* "Pouvez-vous enregistrer un nouveau compte d'utilisateur de test vierge ?"

Si cette fonctionnalité de base échoue, il est inutile d'investir du temps dans un travail plus détaillé à ce stade.

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

### Culture générale

* Article en anglais sur le *smoke testing* sur Wikipédia
boucle
======

En programmation informatique, une boucle est une séquence d'instructions répétées jusqu'à ce qu'une certaine condition soit vérifiée. Par exemple, le processus consistant à obtenir un élément parmi des données pour le modifier, et ensuite vérifier une condition , comme le fait qu'un compteur atteigne une valeur définie.

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

### Culture générale

* Boucles sur Wikipédia
Structure de contrôle
=====================

Les *structures de contrôle* déterminent l'ordre dans lequel l'ordinateur exécute les instructions d'un script.

Le code est exécuté dans l'ordre de la première ligne du fichier jusqu'à la dernière ligne, sauf si l'ordinateur parcourt une des (très fréquentes) structures qui modifie le cours d'exécution du programme, comme des conditions et des boucles.

Par exemple, imaginons un script utilisé pour valider les données saisies par l'utilisateur dans un formulaire sur une page web. Le script envoie la donnée validée, mais si l'utilisateur, disons, laisse vide un champ obligatoire, le script lui demandera de le remplir. Pour faire cela, le script utilise une structure conditionelle ou `if...else`, afin que le code s'exécute différemment, selon que le formulaire est complété ou non :


```js
if (champ == vide) {
  demanderUtilisateur();
} else {
  envoyerForm();
}
```


Un script classique en JavaScript ou PHP (et autres langages similaires) comporte de nombreuses structures de contrôle, dont des conditions, des boucles et des fonctions. Des portions de script peuvent aussi être amenées à être exécutées quand des événements se produisent.

Par exemple, l'extrait de code ci-dessus peut être placé dans une fonction qui se lance quand l'utilisateur clique sur le bouton **Submit** du formulaire. La fonction peut aussi être intégrée dans une boucle qui parcourt tous les champs du formulaire pour les vérifier chacun à tour de rôle. En regardant à nouveau le code des sections `if` et `else`, les lignes `demanderUtilisateur` et `envoyerForm` peuvent également être des appels vers d'autres fonctions du script. Comme vous pouvez le voir, les structures de contrôle peuvent imposer des flux de traitement complexes même avec peu de lignes de code.

Le contrôle de flux montre que lorsque vous lisez un script, vous ne devez pas seulement le lire du début à la fin, mais vous devez aussi regarder la structure du programme et voir comment cela affecte l'ordre d'exécution.

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

### Culture générale

* Structure de contrôle sur Wikipédia
### Référence technique

* Référence JavaScript - Structure de contrôle sur MDN
### Apprendre

* Instructions (Structure de contrôle) sur MDN
Fonction de rappel (callback)
=============================

Une fonction de rappel (aussi appelée *callback* en anglais) est une fonction passée dans une autre fonction en tant qu'argument, qui est ensuite invoquée à l'intérieur de la fonction externe pour accomplir une sorte de routine ou d'action.

Voici un rapide exemple :


```js
function salutation(name) {
  alert("Bonjour " + name);
}

function processUserInput(callback) {
  var name = prompt("Entrez votre nom.");
  callback(name);
}

processUserInput(salutation);
```


L' exemple ci-dessus est un rappel synchrone et il est exécuté immédiatement.

Notez cependant que les rappels sont souvent utilisés pour continuer l'exécution de code après l'achèvement d'une opération asynchrone — ceux-ci sont appelés les rappels asynchrones. Dans l'exemple xhr-async-callback (voir aussi en direct), on utilise la fonction `displayImage` comme une fonction de rappel pour la fonction `loadAsset` (cette dernière récupère l'image via une requête XHR).

Exécuté de cette façon, asynchrone via l'API Web `XMLHttpRequest`, le chargement de l'image ne bloque pas le reste du contenu.

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

* Fonction de rappel sur Wikipédia
* Comprendre les fonctions de rappel JavaScript et les utiliser (en anglais).
HTTP
====

L'*Hypertext Transfer Protocol* (**HTTP**) (*Protocole de transfert hypertexte*) est un protocole de base qui autorise le transfert de fichiers sur le web, typiquement entre un navigateur web et un serveur afin que des utilisateurs puissent les consulter. La version actuelle de la spécification HTTP s'appelle HTTP/2.

Dans le cadre d'une URI, la partie "http://" s'appelle le "schema" et commence la plupart du temps au début d'une addresse. Par exemple, dans "https://developer.mozilla.org", "https://" indique au navigateur de requêter le document au travers du protocole HTTP. Plus précisément, dans cet exemple, https fait référence à la version sécurisée du protocole HTTP, SSL (also called TLS).

HTTP est textuel (toute communication est faite en texte clair) et sans état (aucune communication n'est au courant des communications précédentes). Cette dernière propriété permet à un utilisateur de naviguer facilement sur internet: la consultation des documents et sites web ne requiert pas de contexte particulier. HTTP peut également être utilisé dans le cadre de services REST pour la communication de serveur à serveur, ou bien via des requêtes AJAX au sein d'un site internet pour le rendre plus dynamique.

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

* HTTP sur MDN
* HTTP sur Wikipédia
Hotlink
=======

Un **hotlink** (appelé aussi **inline link** (*lien en ligne*)) est un objet (typiquement une image) directement lié à un autre sur un autre site. Par exemple, une image hébergée sur site1.com est montrée directement sur site2.com.

La pratique est souvent désapprouvée car elle peut provoquer une utilisation non désirée de la bande passante sur le site web hébergeant l'objet lié, et des problèmes de droits d'auteur - elle est considérée comme un vol lorsqu'elle est effectuée sans autorisation.

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

* *Hotlinking* sur Wikipédia
Jeu de caractères
=================

Un **jeu de caractères** est un système d'encodage qui permet aux ordinateurs de savoir comment interpréter les caractères, comme les lettres, les nombres, les signes de ponctuation, les espaces.

Au début chaque pays développait son propre jeu de caractères, en raison des spécificités d'usage de chaque langue : les codes Kanji JIS (par exemple Shift-JIS, EUC-JP, etc.) pour le japonais, Big5 pour le Chinois traditionnel, KOI8-R pour le russe. C'est toutefois Unicode qui devint peu à peu le jeu de caractères le plus accepté, grâce au support linguistique universel qu'il offrait.

Si un jeu de caractères est mal utilisé (par exemple, si l'on utilise Unicode pour un article encodé en Big5), vous risquez de ne rien voir d'autre que des caractères cassés, qu'on appelle des Mojibake.

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

1. Articles Wikipédia
    1. Codage des caractères
    2. Mojibake
2. Glossaire
    1. Caractère
    2. Unicode
Hyperlien
=========

Les hyperliens connectent des pages web ou des données à une autre. En HTML, l'élément `<a>` définit un hyperlien d'un endroit sur une page web (comme une chaîne de caractères ou une image) à un autre endroit sur une autre page web (ou même sur la même page).

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

### Culture générale

* Hyperlien sur Wikipédia
* Le guide Création d'hyperliens sur MDN
### Référence technique

* Links in HTML Documents - W3C
* HTML5 a - hyperlink - W3C
### Apprendre sur le sujet

* `<a>` sur MDN
* `<link>` sur MDN
FAI
===

Un FAI (Fournisseur d'Accès à Internet) vend un accès à Internet, et parfois un service de messagerie, de l'hébergement web ou de la voix sur IP, soit sur une connexion commutée via une ligne téléphonique (le plus fréquent dans le passé), soit sur une connexion haut débit comme un service DSL ou avec un modem câble.

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

### Culture générale

* Le fonctionnement de l'Internet (explications pour les débutants)
* Fournisseur d'accès à Internet sur Wikipédia
Promesse
========

Une **`Promise`** est un Objet retourné par une Fonction n'ayant pas encore terminé son travail. La promesse représente littéralement une promesse faite par la fonction qui retournera éventuellement un résultat à travers l'objet promesse.

Quand la fonction appellée a fini son travail asynchrone une fonction de l'objet promise appellée gestionnaire de résolution (ou d'accomplissement, ou d'achèvement) est appellé pour permettre à l'appelant original de savoir que la tâche est complétée.

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

Pour en apprendre plus, suivez ces liens.

### Culture générale

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

* `Promise` dans la Référence Javascript.
* Utiliser les promises
Performance web
===============

La **performance web** est le temps objectif entre le moment où une demande de contenu est faite et l'affichage de ce contenu dans le navigateur de la personne visitant le site. Cela regroupe les temps de rendu objectifs et l'expérience utilisateur subjective du temps de chargement et de l'exécution de la page. Objectivement, c'est le temps, mesurable en millisecondes, qu'il faut pour que la page web ou l'application web soit téléchargée, représentée dans le navigateur web de l'utilisateur et pour qu'elle devienne réactive et interactive. Les mesures de performances s'attachent également à mesurer le nombre d'images par seconde et la période lors de laquelle le flux principal n'est pas disponible pour les interactions avec la personne consultant la page. Subjectivement, c'est aussi une question de perception du visiteur qui estimera si le temps de chargement, entre le moment où il demande le contenu et celui où il voit que ce contenu demandé est disponible et utilisable, semble plutôt lent ou plutôt rapide.

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

* En savoir plus sur les performances web
* Performances perçues (glossaire) (en-US)
Analyseur syntaxique
====================

Le module d'un compilateur ou d'un interprête qui effectue **l'**analyse syntaxique d'un fichier de code source.

Plus généralement, c'est une partie de logiciel qui analyse des textes et transforme leur contenu en une autre représentation.

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

### Culture générale

* Analyse syntaxique sur Wikipédia
Locale
======

Les **locales** sont un ensemble de paramètres régionaux pour l'interface utilisateur basés sur la langue ou le pays.

Un programme tire ses règles de locale de la langue du système hôte. Entres autres choses, les locales contiennent le format de papier, la devise, le format de date ou des nombres en usage dans une région donnée.

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

* Paramètres régionaux
JavaScript
==========

JavaScript (JS) est un langage de programmation principalement utilisé côté client pour générer des pages web dynamiquement, mais également côté serveur, depuis l'arrivée de Node JS.

Ne pas confondre JavaScript avec Java. "Java" et "JavaScript" sont des marques commerciales ou des marques déposées d'Oracle aux États-Unis et dans d'autres pays. Cependant, les deux langages de programmation ont une syntaxe, une sémantique et des utilisations très différentes.

D'abord pensé comme un langage côté serveur par Brendan Eich (alors employé de Netscape Corporation), JavaScript arrive sur le navigateur Netscape Navigator 2.0 en Septembre 1995. Le succès est immédiat, et Internet Explorer 3.0 introduit JavaScript sous le nom de JScript en août 1996.

En novembre 1996, Netscape commence à travailler avec ECMA International pour faire de JavaScript un standard. Depuis lors, la standardisation de JavaScript est appelée ECMAScript, et correspond à la spécification ECMA-262, dont la dernière (9e) édition est disponible depuis juin 2018.

JavaScript est principalement utilisé dans le navigateur, permettant aux développeurs de manipuler le contenu des pages internet à travers le DOM, manipuler les données avec AJAX et IndexedDB, dessiner avec canvas, interargir avec le périphérique qui pilote le navigateur via de nombreuses APIs, etc.. JavaScript est l'un des langages les plus utilisés au monde, grâce au développement et à l'amélioration des performances des APIs dans les navigateurs.

Récemment, JavaScript est revenu du côté serveur grâce au succès de la plateforme Node.js, l'environnement d'exécution multi-plateforme le plus populaire en dehors du navigateur. Node.js permet d'utiliser JavaScript comme langage de script pour automatiser des tâches sur un PC et de mettre en place des serveurs HTTP et WebSockets pleinement fonctionnels.

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

* JavaScript sur Wikipédia
* Le guide JavaScript sur MDN
* L'atelier JavaScript (« *javascripting* ») sur NodeSchool
* Le cours JavaScript sur Codecademy (en anglais)
* Le dernier standard ECMAScript (en anglais)
* La référence JavaScript sur MDN
* Le livre *JavaScript Éloquent*
OpenGL
======

**OpenGL** (**Open Graphics Library**)est une interface de programmation d'application (API) multi-plateforme et un langage pour le rendu de graphismes vectoriels 2D et 3D. L'API est typiquement utilisée pour interagir avec un processeur graphique (ou GPU, graphics processing unit) pour que le rendu soit accéléré par le matériel.

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

### Culture générale

* OpenGL sur Wikipédia
Modem
=====

Un modem ("**mod**ulateur-**dém**odulateur") est un appareil qui convertit les informations numériques en informations analogiques et vice-versa, pour l'envoi de données à travers les réseaux. Différents types sont utilisés pour différents réseaux : des modems DSL pour les fils téléphoniques, des modems WiFi pour les ondes radio de courte portée, des modems 3G pour les tours de données cellulaires, etc.

Les modems sont différents des routeurs, mais de nombreuses entreprises vendent des modems combinés avec des routeurs.

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

### Culture générale

* Modem sur Wikipédia
Muable
======

Une variable *muable* (*mutable*) est une variable qui peut être modifiée. En JavaScript, seuls les objets et tableaux (*arrays*) sont muables, pas les valeurs primitives.

(Vous pouvez faire pointer un nom de variable vers une nouvelle valeur, mais la valeur précédente est toujours conservée en mémoire. D'où le besoin de nettoyage.)

Un **objet muable** est un objet dont l'état peut être modifié après sa création.

Les **objets immuables (*immutable*)** sont des objets dont l'état ne peut être modifié une fois l'objet créé.

**Chaînes de caractères et nombres** sont **immuables**. Un exemple pour bien comprendre :


```js
var immutableString = "Hello";

// Dans le code ci-dessus, un nouvel objet avec une valeur chaîne de caractère est créé.

immutableString = immutableString + "World";

// Nous ajoutons "World" à la valeur existante.
```


En ajoutant la variable "immutableString" avec une valeur de chaîne, les événements suivants se produisent :

1. La valeur existante de la variable "immutableString" est récupérée
2. "World" est ajouté à la valeur existante de "immutableString"
3. La valeur résultante est alors allouée à un nouveau bloc de mémoire
4. L'objet "immutableString" pointe maintenant vers le nouvel espace mémoire créé
5. L'ancien espace mémoire est maintenant disponible pour la récupération de place (nettoyage).
Voir aussi
----------

### Culture générale

* Objet immuable sur Wikipédia
Autorité de certification
=========================

Une autorité de certification (AC, ou CA en anglais) est une organisation qui signe des certificats numériques et leurs clés publiques associées. Cela certifie qu'une organisation qui a demandé un certificat numérique (exemple : Mozilla Corporation) est autorisée à demander un certificat pour le sujet nommé dans celui-ci (exemple : mozilla.org).

Les navigateurs Web intègrent une liste d'autorités de certification qui sont autorisées à émettre des certificats numériques.

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

* Liste de certificats d'AC incluse par Mozilla
Fuzzing (test à données aléatoires)
===================================

Le ***fuzzing*** (qu'on pourrait traduire en français par « test à données aléatoires ») est une technique permettant de tester un logiciel à l'aide d'outils automatisés pour fournir une entrée non valide ou inattendue à un programme ou à une fonction dans un programme, puis de vérifier les résultats pour voir si le programme se bloque ou agit autrement de manière inappropriée. C'est une méthode reconnue de s'assurer que le logiciel est stable, fiable et sécurisé.

* Page Wikipédia sur le *fuzzing*
* jsfuzz, un outil pour tester des programmes JavaScript