recursal/MDN huggingface dataset:
WCAG
====

Las *Pautas de Accesibilidad para el Contenido Web* (**WCAG**, por us siglas en inglés) son una recomendación publicada por el grupo Web Accessibility Initiative (en-US) en el W3C (en-US). Describen un conjunto de pautas para hacer que el contenido sea accesible principalmente para personas con discapacidades, pero también para dispositivos de recursos limitados, como los teléfonos móviles.

WCAG 2.0, que reemplazó a WCAG 1.0, se publicó como una recomendación del W3C el 11 de diciembre de 2008. Consta de 12 directrices organizadas en 4 principios (perceptibles, operables, comprensibles y robustos) y cada guía tiene criterios de éxito comprobables.

WCAG uses three levels of conformance:

* Prioridad 1: los desarrolladores web **deben** cumplir estos requisitos, de lo contrario, será imposible que uno o más grupos accedan al contenido web. La conformidad con este nivel se describe como A.
* Prioridad 2: los desarrolladores web **deberían** cumplir estos requisitos, de lo contrario, a algunos grupos les resultará difícil acceder al contenido web. La conformidad con este nivel se describe como AA o doble-A.
* Prioridad 3: los desarrolladores web **pueden** satisfacer estos requisitos para facilitar el acceso de algunos grupos al contenido web. La conformidad con este nivel se describe como AAA o triple-A.
Saber más
---------

### Conocimientos generales

* WCAG en Wikipedia
### Technical knowledge

* Información sobre accesibilidad en MDN (en-US)
* Las recomendaciones del WCAG 2.0 en el W3C
ECMAScript
==========

**ECMAScript** es una especificación de lenguaje de scripting en la que se basa JavaScript. Ecma International está a cargo de estandarizar ECMAScript.

Aprende más
-----------

### Conocimientos generales

* ECMAScript en Wikipedia
### Referencia técnica

* ECMAScript
Copyleft
========

*Copyleft* es un término, que normalmente se refiere a una licencia, y que se utiliza para indicar que toda redistribución de un trabajo bajo esta licencia **es obligatorio** que esté sujeta a la **misma licencia** **que el original**. Un buen ejemplo de copyleft es la licencia GNU GPL (para aplicaciones software) y la licencia *Creative Commons SA* (*Share Alike* en español Compartir Igual) (para trabajos y obras de arte).

Para saber más
--------------

### Cultura General

* Copyleft en Wikipedia
Polyfill
========

Un polyfill es un fragmento de código (generalmente JavaScript en la Web) que se utiliza para proporcionar una funcionalidad moderna en navegadores antiguos que no lo admiten de forma nativa.

Por ejemplo, se podría usar un polyfill para imitar la funcionalidad de un elemento HTML Canvas en Microsoft Internet Explorer 7 usando un complemento de Silverlight, o un soporte mímico para las unidades rem CSS, o `text-shadow`, o lo que tu quieras.

Leer más
--------

### Conocimientos Generales

* ¿Qué es un polyfill? (artículo de Remy Sharp, creador del término)
Node.js
=======

Node.js es un entorno de ejecucion multiplataforma en JavaScript que permite a los desarrolladores construir aplicaciones del lado del servidor y de red con JavaScript.

Saber más
---------

Conocimientos generales

* Node.js en Wikipedia
* Sitio web de Node.js
### Información técnica

* Documentacion de referencia de la API
* Tutoriales
String
======

En cualquier lenguaje de programación, un string es una secuencia de caracteres usado para representar el texto.

En JavaScript, un String es uno de los valores primitivos y el objeto `String` es un envoltorio alrededor de un String primitivo.

Aprende más
-----------

### Conocimientos generales

* Tipos de datos y estructura de datos en JavaScript
* String en Wikipedia
Accesibilidad
=============

*La accesibilidad web* (**A11Y**) hace referencia a las buenas prácticas para mantener la usabilidad de un sitio web a pesar de las restricciones físicas y técnicas. La accesibilidad web se define formalmente y es discutida en el W3C (en-US) a través del Web Accessibility Initiative (en-US) (WAI).

Saber más
---------

### Conocimiento general

* Recursos de accesibilidad en MDN
* Accesibilidad web en la Wikipedia
### Aprende accesibilidad web

* Sitio Web Accessibility In Mind
### Referencias técnicas

* La documentación ARIA en MDN
* Página principal de la Iniciativa de Accesibilidad Web
* La recomendación WAI-ARIA
Hipervínculo
============

Los *Hipervínculos* ó *enlaces* permiten conectar entre sí datos ó páginas web. En HTML, los elementos `<a>` representan hipervínculos que tienen como origen un elemento de la página web (por ejemplo cadenas de texto o imágenes), y que pueden tener como destino un elemento de otro sitio web (incluso pueden enlazar a otro punto de la misma página).

Para saber más
--------------

### Cultura General

* Hiperenlace en Wikipedia
* Guía de Hipervínculos en MDN
### Referencias técnicas

* Links in HTML Documents - W3C
* HTML5 a - hyperlink - W3C
### Aprende sobre

* `<a>` en MDN
* `<link>` en MDN
Cabecera general
================

Una **cabecera general** es una cabecera HTTP (en-US) que puede ser utilizada tanto en mensajes de consultas como de respuestas pero que no se aplican al contenido en sí mismo. Dependiendo del contexto en que son usadas, las cabeceras generales pueden ser de respuesta o de consulta (en-US). Sin embargo, no son cabeceras de entidad. (en-US).

Las cabeceras generales más comunes son `Date` (en-US), `Cache-Control` y `Connection` (en-US).
Códec
=====

Un *códec* (acrónimo de "***co***dificador-***dec***odificador") es un programa, algoritmo, o dispositivo que codifica o decodifica un flujo de datos. Cada códec sabe cómo tratar un estándar específico de codificado o compresión.

Saber más
---------

### Conocimiento general

* Códec en Wikipedia
### Referencias técnicas

* Formatos de medios admitidos por los elementos HTML audio y video
Elemento
========

 Un elemento es parte de una página web. En XML y HTML, un elemento puede contener un elemento de datos o un fragmento de texto o una imagen, o tal vez nada. Un elemento típico incluye una etiqueta de apertura con algunos atributos, contenido de texto cerrado y una etiqueta de cierre.

 ![Example: in <p class="nice">Hello world!</p>, '<p class="nice">' is an opening tag, 'class="nice"' is an attribute and its value, 'Hello world!' is enclosed text content, and '</p>' is a closing tag.](/es/docs/Glossary/Element/anatomy-of-an-html-element.png)

Los elementos y las etiquetas no son las mismas cosas. Las etiquetas comienzan o terminan un elemento en el código fuente, mientras que los elementos son parte del DOM, el modelo de documento para mostrar la página en el browser.

Ver también
-----------

* La interfaz `Element` , representa un elemento en el DOM.
* Más detalles acerca de los elementos.
* Componentes\_Web/Elementos\_Personalizados (en-US).
GPL
===

La lincencia GNU *GPL* (GNU General Public License en español **Licencia Pública General de GNU**) es una licencia de software libre copyleft publicada por la *Free Software Foundation*. Los usuarios de un programa con licencia GPL son libres para usarlo, acceder al código fuente, modificarlo y distribuir los cambios; siempre que redistribuyan el programa completo (modificado o no modificado) bajo la misma licencia.

Para saber más
--------------

### Cultura General

* GNU\_General\_Public\_License en Wikipedia
### Referencia Técnica

* GPL License
* FAQ de licencias GNU
Programación orientada a objetos
================================

**OOP** (Programación orientada a objetos) es un paradigma de programación en el que los datos son encapsulados en **objetos,** los cuales tienen su propio comportamiento.

JavaScript esta altamente orientado a objetos. Sigue el modelo basado en prototipado (en oposición al modelo basado en **clases**).

Saber más
---------

### Conocimientos generales

* Programaci'ón orientada a objetos en Wikipedia
* Introducción a JavaScript prientado a objetos
Contexto de navegación
======================

Un **contexto de navegación** es el entorno en el que un navegador muestra un `Documento` (normalmente una pestaña, pero posiblemente también una ventana o un marco (*frame*) dentro de una página).

Cada contexto de navegación tiene un origen específico, el origen del documento activo y un historial que enumera todos los documentos mostrados en orden.

La comunicación entre contextos de navegación está severamente restringida. Entre un contexto de navegación del mismo origen, se puede abrir y utilizar un `BroadcastChannel` (en-US).

Aprende más
-----------

### Referencia técnica

* Browsing context on WHATWG
* Browsing context on W3C
HTTP
====

El protocolo de transferencia de hipertexto o HTTP (HyperText Transfer Protocol) es el protocolo de red que permite la transferencia de documentos de hipermedia en la red, generalmente entre un navegador y un servidor, para que los humanos puedan leerlos. La versión actual de la especificación se llama HTTP/2.

En un URI, como por ejemplo https://developer.mozilla.org, se indica en el esquema y puede tomar los valores: 'http:' o 'https:'. 'https:' se refiere a la versión segura del protocolo.

HTTP se considera textual porque toda la comunicación se realiza en texto plano. También es un protocolo sin estado, ya que una comunicación no es consciente de las comunicaciones que se hayan podido producir anteriormente. Estas dos propiedades lo hace ideal para la consulta de documentos en la red (páginas web).

También se puede utilizar como base para los servicios web REST en peticiones AJAX.

Learn more
----------

* HTTP en MDN
* HTTP on Wikipedia
API
===

Resumen
-------

Una ***Interfaz de Programación de Aplicaciones*** (API, por sus siglas en inglés) define un conjunto de directivas que pueden ser usadas para tener una pieza de software funcionando con algunas otras.

Más a fondo
-----------

Una Interfaz de Programación de Aplicaciones es un término común en Ciencias de la Computación. Es un término genérico que es usado para cubrir todos los requerimientos técnicos para tener varios componentes de software capaces de funcionar con los demás. En un contexto web, su uso es un poco más restrictivo, ya que es usado casi sólo con JavaScript. En ese contexto, una API es usualmente un conjunto de métodos, propiedades y eventos para con el fin lograr ciertas tareas. Por ejemplo, el API 2D de Canvas provee los métodos necesarios para dibujar gráficos 2D dentro de un elemento Canvas de <HTML.

Pero en algunos puntos, un conjunto de propiedades de CSS (en-US) o elementos de HTML también son API. Algunos conceptos de arquitectura técnica, como REST, incluso afirman que un conjunto de varias URL formadas también son una API para usar en un sitio dado.

Conoce más
----------

### Conocimiento general

* API en Wikipedia
Grid Areas
==========

Un **grid area** es una o más grid cells (en-US) que forman un área rectangular en la cuadrícula. Los grid areas se crean cuando se coloca un elemento usando disposición basada en líneas (en-US) o cuando se definen áreas usando grid areas con nombre (en-US).

![Imagen mostrando una grid area resaltada](/es/docs/Glossary/Grid_Areas/1_grid_area.png)

Las Grid areas *deben* ser de naturaleza rectangular; no es posible crear, por ejemplo, un grid area en forma de T o L.

En el siguiente ejemplo, tengo un contenedor de cuadrícula con dos elementos. Los he nombrado con la propiedad `grid-area` (en-US) y luego los he distribuido en la cuadrícula usando `grid-template-areas`. Esto crea dos áreas de cuadrícula, una que cubre cuatro celdas de la cuadrícula, la otra dos.

Ejemplo
-------
```

\* {
  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: #ffd8a8;
  padding: 1em;
  color: #d9480f;
}
```



```css
.wrapper {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  grid-template-rows: 100px 100px;
  grid-template-areas:
    "a a b"
    "a a b";
}
.item1 {
  grid-area: a;
}
.item2 {
  grid-area: b;
}
```



```html
<div class="wrapper">
  <div class="item1">Item</div>
  <div class="item2">Item</div>
</div>
```

Aprenda más
-----------

### Referencia de propiedad

* `grid-template-columns`
* `grid-template-rows`
* `grid-auto-rows`
* `grid-auto-columns`
* `grid-template-areas`
* `grid-area` (en-US)
### Otras lecturas

* Guía de diseño Grid CSS: *Conceptos básicos de grid layout*
* Guía de diseño Grid CSS: *Grid template areas (en-US)*
* Definición de Grid Areas en la especificación de Grid Layout CSS
frame rate (FPS)
================

Un **cuadro por segundo** es la velocidad en la cual el navegador web, es capaz de recalcular la disposición y dibujar el contenido de la pantalla.

**FPS (frames per second)**, refiere a la cantidad de cuadros que pueden ser redibujados en un segundo. El ideal de esta metrica para un sitio web es de **60fps**

Generalmente, las peliculas cinematograficas tienen un velocidad de 24fps. Esto se debe a que utilizan otras tecnicas para lograr la ilusion de vida, conocidas como *motion blurs* (desenfoques de movimiento). Pero cuando una pantalla de computadora se mueve.
Función
=======

Una **función** es un fragmento de código que puede ser llamado por otro código o por sí mismo, o por una variable que haga referencia a la función. Cuando se llama a una función, los argumentos se pasan a la función como entrada, y la función puede devolver opcionalmente una salida. Una función en JavaScript es también un objeto.

El nombre de la función es un identificador declarado como parte de una declaración de función o expresión de función. El ámbito de la función depende de si el nombre de la función es una declaración o una expresión.

### Diferentes tipos de funciones

Una **función anónima** es una función que no tiene nombre:


```js
function () {};
// o se puede usar la anotación con flecha ECMAScript 2015
() => {};
```


Una **función nombrada** es una función con nombre:


```js
function foo() {}
// o se puede usar la anotación con flecha ECMAScript 2015
const foo = () => {};
```


Una **función interna** es una función que está dentro de otra función (`cuadrado` en este caso). Una **función externa** es una función que contiene a otra función (`sumarCuadrados` en este caso):


```js
function sumarCuadradors(a, b) {
  function cuadrado(x) {
    return x \* x;
  }
  return cuadrado(a) + cuadrado(b);
}
//Usando la anotación de flecha ECMAScript 2015
const sumarCuadrados = (a, b) => {
  const cuadrado = (x) => x \* x;
  return cuadrado(a) + cuadrado(b);
};
```


Una **función recursiva** es una función que se llama a sí misma. Mira recursión.


```js
function bucle(x) {
  if (x >= 10) return;
  bucle(x + 1);
}
//Usando la anotación de flecha ECMAScript 2015
const bucle = (x) => {
  if (x >= 10) return;
  bucle(x + 1);
};
```


Una **expresión de una función que se invoca inmediatamente** (IIFE, por sus siglas en inglés) es una función que se llama directamente después de que la función se haya cargado en el compilador del navegador. La forma de identificar un IIFE es ubicando el paréntesis izquierdo y derecho adicional al final de la declaración de la función.


```js
// Error (https://en.wikipedia.org/wiki/Immediately-invoked\_function\_expression)
/\*
function foo() {
 console.log('Hello Foo');
}();
\*/

(function foo() {
  console.log("Hello Foo");
})();

(function food() {
  console.log("Hello Food");
})();
```


Si desea obtener más información sobre las IIFE, consulte la siguiente página en Wikipedia: Immediately Invoked Function Expression

Saber más
---------

### Referencias técnicas

* Funciones
* Funciones de flecha
Propiedad
=========

El término **propiedad** puede tener varios significados según el contexto. Se puede referir a:
CORS
====

**CORS** (*Cross-Origin Resource Sharing* o en español Intercambio de recursos de origen cruzado) es un sistema que consiste en transmitir HTTP headers (en-US), que determina si los navegadores bloquean el acceso del código JavaScript frontend a las respuestas de peticiones de origen cruzado.

La política de seguridad del mismo origen prohíbe el acceso a los recursos de orígenes cruzados. Pero CORS brinda a los servidores web la capacidad de decir que desean optar por permitir el acceso de origen cruzado a sus recursos.

Véase también
-------------

* Intercambio de recursos de origen cruzado (CORS) en MDN
* Intercambio de recursos de origen cruzado en Wikipedia
* Obtén la especificación
### Cabeceras CORS

`Access-Control-Allow-Origin`

Indica si la respuesta se puede compartir.

`Access-Control-Allow-Credentials`

indica si la respuesta a la solicitud se puede exponer o no cuando el indicador de credenciales es `true`.

`Access-Control-Allow-Headers`

Se usa en respuesta a una solicitud de verificación previa para indicar qué encabezados HTTP se pueden usar al realizar la solicitud.

`Access-Control-Allow-Methods`

Especifica el método o los métodos permitidos al acceder al recurso en respuesta a una solicitud de verificación previa.

`Access-Control-Expose-Headers`

Indica qué encabezados se pueden exponer como parte de la respuesta enumerando sus nombres.

`Access-Control-Max-Age` (en-US)

Indica cuánto tiempo se pueden almacenar en caché los resultados de una solicitud de verificación previa.

`Access-Control-Request-Headers` (en-US)

Se utiliza al emitir una solicitud de verificación previa para que el servidor sepa qué encabezados HTTP se utilizarán cuando se realice la solicitud.

`Access-Control-Request-Method` (en-US)

Se utiliza al emitir una solicitud de verificación previa para que el servidor sepa qué método HTTP se utilizará cuando se realice la solicitud.

`Origin`

Indica de dónde se origina una búsqueda.
Sentencias
==========

En un lenguaje de programación, una **sentencia** es una línea de código al mando de una tarea Cada programa consiste en una secuencia de sentencias.

Aprender más
------------

### Referencia técnica

* Sentencias y declaraciones en JavaScript (en inglés)
### Conocimientos generales

* Sentencias - Wikipedia (en inglés)
Boolean
=======

En ciencias de informática, un **boolean** es un dato lógico que solo puede tener los valores true o false.

Aprender más
------------

### Conocimientos generales

* Boolean en Wikipedia
### Referencia técnica

* El objeto global de JavaScript: `Boolean`
* Tipos de datos y estructura de datos en JavaScript (en inglés)
Arpanet
=======

La **ARPAnet** (advanced research projects agency network) o Red de Angencias de Proyectos de Investigación Avanzada en español, era una red de computadoras construida en 1969 como un medio resistente para enviar datos militares y conectar principales grupos de investigación a través de los Estados Unidos. ARPAnet ejecutó NCP (network control protocol/protocolo de control de red) y subsequentemente la primera versión del protocolo de Internet o la suite TCP/IP, teniendo la ARPAnet una descatada parte en la naciente Internet. ARPAnet finalizó a comienzos de 1990.

Saber más
---------

### Conocimiento general

* Arpanet on Wikipedia
Adobe Flash
===========

Flash es una tecnología obsolescente desarrollada por Adobe que hace posible crear aplicaciones Web ricas, gráficos vectoriales y multimedia. Para utilizar Flash dentro de un web browser es necesario instalar el complemento adecuado.

Aprende más
-----------

### Conocimiento general

* Sitio web oficial
* Shumway, una implementación gratis por Mozilla
* Gnash, una implementación gratis por GNU
IRC
===

**IRC** (*Internet Relay Chat*) es un sistema de chat mundial que requiere una conexión a Internet y un cliente IRC, que envía y recibe mensajes atravéz del servidor IRC.

Diseñado a finales de la década de 1980 por Jarrko Oikarinen, IRC usa TCP y es un protocolo abierto. El servidor IRC transmite mensajes a todos los que están conectados a uno de los muchos canales de IRC (cada uno con su propio ID).
Protocolo
=========

Un **protocolo** es un conjunto de reglas que definen cómo se intercambian los datos dentro o entre ordenadores. La comunicación entre dispositivos requiere que estos estén de acuerdo con el formato de los datos que están siendo intercambiados. Al conjunto de reglas que definen este formato se le llama protocolo.

Saber más
---------

### Conocimiento general

* Protocolo de comunicaciones en Wikipedia
* RFC Official Internet Protocol Standards
Vea también
-----------

* TCP
* Generalidades del protocolo HTTP
* Paquete (en-US)
Parse (análisis sintáctico)
===========================

"Parsing" significa analizar y convertir un programa en un formato interno que un entorno de ejecución pueda realmente ejecutar, por ejemplo el motor JavaScript dentro de los navegadores.

El navegador analiza el HTML en un árbol DOM. El análisis de HTML implica la "tokenización" (dividir en fragmentos) y en la construcción del árbol. Los "tokens" HTML incluyen etiquetas de inicio y final, así como nombres de atributos y valores. Si el documento está bien formado, el análisis sintáctico es más sencillo y rápido. El "parser" analiza la entrada simbólica en el documento, construyendo el árbol del documento.

Cuando el analizador de HTML encuentra recursos que no bloquean, como una imagen, el navegador solicitará esos recursos y continuará analizando. El análisis puede continuar cuando se encuentra un archivo CSS, pero las etiquetas `<script>` —particularmente aquellas sin un atributo `async` o `defer`— bloquean el renderizado, y pausa el análisis de HTML.

Cuando el navegador encuentra estilos CSS, analiza el texto en el Modelo de Objetos CSS (o CSSOM (en-US)), una estructura de datos que luego utiliza para diseñar la distribución y el pintado. El navegador crea entonces un árbol de "renderizado" (dibujado) a partir de ambas estructuras para poder pintar el contenido en la pantalla. También se descarga el JavaScript, se analiza y luego se ejecuta.

El análisis de JavaScript se hace durante compile time o cuando se invoca el parser (en-US), como durante una llamada a un método.

Aprende más
-----------

### Conocimiento general

* Parse en Wikipedia (inglés)
* Analizador sintáctico en Wikipedia
UTF-8
=====

UTF-8 (UCS Transformation Format 8) es la Codificación de caracteres más común en la red. El número de bytes que representan un carácter pueden ser desde uno hasta cuatro. UTF-8 es retrocompatible con ASCII y puede representar cualquier carácter Unicode estandar.

Los primeros 128 carácteres UTF-8 se ajustan a los 128 primeros carácteres ASCII, lo cual significa que los textos escritos en ASCII son válidos en UTF-8. El resto de caracteres usan de dos a cuatro bytes. Cada byte reserva unos bits para albergar información sobre la codificación. Como los caracteres que no son ASCII necesitan más de un byte cuando son almacenados, corren el riesgo de corromperse si estos bytes son separados y no se vuelven a juntar.

Aprende más
-----------

### Conocimientos generales

* UTF-8 en Wikipedia
* PF sobre UTF-8 en el sitio web de Unicode
CID
===

CID (Confidencialidad, Integridad, Disponibilidad) (también llamado la triada CID o la triada DIC) es un modelo que guía las políticas de una organización para la seguridad de la información.

Saber más
---------

### Conocimiento general

* CIA en Wikipedia
Criptografía
============

Criptografía, o criptología, es la ciencia que estudia como codificar y transmitir mensajes de manera segura. La criptografía diseña y estudia algoritmos que son usados para la codificación y decoficación de mensajes en un entorno inseguro y sus aplicaciones. Más que confidencialidad de información, la criptografía también aborda la identificación, autenticación, el no repudio y la integridad de la información. Para ello tambien estudia el uso de métodos criptográficos en contexto, criptosistemas.

Aprende más
-----------

### Conocimiento general

* Criptografía en Wikipedia
* Cryptanalysis
* Tutorial de seguridad de la información