recursal/MDN huggingface dataset:
CDN
===

Una **Red de distribución de contenidos** (*CDN en inglés*) es un grupo de servidores distribuidos en muchas ubicaciones. Estos servidores almacenan copias duplicadas de datos para que los servidores puedan cumplir con las solicitudes de datos en función de qué servidores están más cerca de los respectivos usuarios finales. Las CDN hacen que el servicio rápido se vea menos afectado por el alto tráfico.

Los CDN se usan ampliamente para entregar hojas de estilo y archivos Javascript (activos estáticos) de bibliotecas como Bootstrap, jQuery, etc. Es preferible usar CDN para esos archivos de biblioteca por varias razones:

* Servir los activos estáticos de las bibliotecas a través de CDN reduce la carga de solicitudes en nuestros propios servidores.
* La mayoría de las CDN tienen servidores en todo el mundo, por lo que los servidores de CDN pueden estar geográficamente más cerca de sus usuarios que sus propios servidores. La distancia geográfica afecta la latencia proporcionalmente.
* Los CDN ya están configurados con la configuración de caché adecuada. El uso de un CDN guarda más configuraciones para activos estáticos en sus propios servidores.
Ancho de banda
==============

El ancho de banda es la medida de cuanta información puede pasar a través de una conexión de datos en un momento dado. El ancho de banda suele medirse en múltipos de bits-por-segundo (bps), por ejemplo, megabits-por-segundo (Mbps) o gigabits-por-segundo (Gbps).

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

* Bandwidth on Wikipedia
Clausura
========

Una clausura o *closure* es una función que guarda referencias del estado adyacente (**ámbito léxico**). En otras palabras, una clausura permite acceder al ámbito de una función exterior desde una función interior. En JavaScript, las clausuras se crean cada vez que una **función** es creada.

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

### Conocimiento general

* Clausura en Wikipedia
### Referencia técnica

* Clausuras en MDN
Espacio en blanco
=================

El **espacio en blanco** es un conjunto de caracteres que se utiliza para mostrar espacios horizontales o verticales entre otros caracteres. A menudo se utilizan para separar fragmentos en HTML, CSS, JavaScript y otros lenguajes informáticos.Los caracteres de espacio en blanco y su uso varía de un lenguaje a otro.

En HTML
-------

La *HTML Living Standard* especifica 5 caracteres ASCII como espacio en blanco: `U+0009` TAB, `U+000A` LF, `U+000C` FF, `U+000D` CR y `U+0020` ESPACIO. En forma de texto, se tratan como caracteres de espacio normal y los espacios en blanco secuenciales se contraen como un solo espacio en muchos casos (este comportamiento se puede cambiar mediante la propiedad CSS `white-space`. También se utilizan como separadores del nombre de un elemento y sus parámetros, nombres de clases, etc.

En JavaScript
-------------

La especificación del lenguaje ECMAScript® 2015 establece varios puntos de código Unicode como espacio en blanco: `U+0009` CARACTERES de TABULACIÓN <TAB>, `U+000B` TABULACIÓN DE LÍNEA <VT>, `U+000C` FORM FEED <FF>, `U+0020` ESPACIO <SP>, `U+00A0` ESPACIO SIN ROTURA <NBSP>, `U+FEFF` ANCHO CERO NO -BREAK SPACE <ZWNBSP> y otra categoría "Zs" Cualquier otro punto de código Unicode "Separador, espacio" <USP>. Estos caracteres suelen ser innecesarios para la funcionalidad del código.

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

* Espacio en blanco ASCII
* Especificación del lenguaje ECMAScript® 2015
* Cómo se manejan los espacios en blanco mediante HTML, CSS y el DOM
* El caracter de espacio en blanco en Wikipedia
* Glosario de MDN Web Docs
    + Caracter
Validador
=========

Un validador es un programa que comprueba errores de sintaxis en el código. Las validadores pueden ser creados para cualquier formato o lenguaje, pero en este contexto se habla de herramientas que comprueban HTML, CSS, y XML.

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

### Conocimiento general

* Validador en Wikipedia
* Lista de validadores (en-US)
Clasificación por tarjetas (card sorting)
=========================================

La clasificación por tarjetas (card sorting) es una técnica simple utilizada en la arquitectura de la información en la cual las personas involucradas en el diseño de una página web (u otro tipo de producto) están invitadas a describir el contenido / servicios / características que creen que el producto debería contener, para luego organizar estas características dentro de categorías o grupos. Esto se puede usar, por ejemplo, para determinar qué debe aparecer en cada página de una aplicación web. El nombre proviene del hecho de que a menudo la clasificación de las cartas se lleva a cabo literalmente escribiendo los elementos que se van a clasificar en tarjetas, y luego apilando las tarjetas.

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

### Conocimientos generales

* Card sorting en Wikipedia
World Wide Web
==============

La *World Wide Web* —comúnmente conocida como **WWW**, **W3**, o **la Web**— es un sistema interconectado de páginas web públicas accesibles a través de Internet. La Web no es lo mismo que el Internet: la Web es una de las muchas aplicaciones construidas sobre Internet.

Tim Berners-Lee propuso la arquitectura de lo que es conocido como la World Wide Web. Él creó el primer servidor web (server (en-US)), el primer navegador de internet (browser), y la primera página web, en su computadora del laboratorio de investigación de física del CERN en 1990. En 1991, anunció su creación en el grupo de noticias alt.hypertext, marcando con esto el momento en que la Web se hizo pública.

El sistema que nosotros conocemos hoy como "la Web" tiene varios componentes:

* El protocolo **HTTP** dirige las transferencias de datos entre el servidor y el cliente.
* Para acceder a un componente de la Web, el cliente proporciona un único identificador universal, llamado **URL** por sus siglas en inglés de Localizador Uniforme de Recursos (Uniform Resource Locator) o URI por sus siglas en inglés de Identificador Uniforme de Recursos (Uniform Resource Identifier) (formalmente llamado UDI por sus siglas en inglés de Identificador Universal de Documentos (Universal Document Identifier)).
* **HTML** por sus siglas en inglés de Lenguaje de Marcas de Hipertexto (Hypertext Markup Language) es el formato más común para publicar documentos web.

Enlazar, o conectar recursos a través de hyperlinks (hiperligas o hiperenlaces), es un concepto que define la Web, contribuyendo a su identidad como una colección de documentos conectados.

Tan pronto como inventó la Web, Tim Berners-Lee fundó el Consorcio de la World Wide Web (W3C (en-US) World Wide Web Consortium) para estandarizar y desarrollar el futuro de la Web. Este consorcio está compuesto por los principales grupos de interés de la Web, como son los desarrolladores de navegadores de internet, entidades de gobierno, investigadores, y universidades. Su misión incluye la educación y la superación.

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

### Más información en

* Entendiendo la Web
* Mapa para la enseñanza Web (Web literacy map) (sitio en inglés, en el cual se muestra un inventario de las habilidades necesarias para el desarrollo Web y actividades de aprendizaje)
### Conocimiento general

* World Wide Web en Wikipedia
* El sitio web de la W3C
ARIA
====

**ARIA** (*Accessible Rich Internet Applications*) es una especificación de la W3C (en-US) para agregar semantica y otros metadatos a HTML para ayudar a los usuarios con tecnologia de apoyo.

Por ejemplo, puedes agregar el atributo `role="alert"` a un `<p>` tag para notificar a un usuario con discapacidad visual que una información es importante .

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

* ARIA
RSS
===

*RSS* (Really Simple Syndication en español Sindicación Realmente Simple) hace referencia a los diferentes formatos de XML diseñados para sitios web de noticias.

Cuando te subscribes a un *feed* RSS (boletín de noticias de servicios web), éste te envía información y actualizaciones al *feed* de tu lector RSS, y de esta manera no es necesario que el usuario busque manuelmente en cada sitio web.

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

### Cultura General

* RSS en Wikipedia
### Referencia Técnica

* Última especificación de RSS
Expresiones regulares
=====================

**Expresiones regulares** (o *regex*) son reglas que definen las secuencias de caracteres obtenidas en una busqueda.

Las expresiones regulares están incluidas en varios lenguages, pero las más conocida es la de Perl, que ha dado lugar a su propio ecosistema llamado PCRE (*Perl Compatible Regular Expression*). En la web, JavaScript proporciona otra implementación de expresiones regulares a través del objeto `RegExp`.

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

### Conocimientos generales

* Regular expressions en Wikipedia
* Interactive tutorial
* Visualized Regular Expression
### Referencia técnica

* Writing regular expressions in JavaScript
Number
======

En JavaScript, **Number** es un tipo de datos numérico (double-precision 64-bit floating point format (IEEE 754)). En otros lenguajes de programación puede existir diferentes tipos numéricos, por ejemplo: Integers, Floats, Doubles, or Bignums.

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

### Conocimientos generales

* Tipos de datos numérico en Wikipedia
### Referencia Técnica

* La estructura de datos de JavaScript: Number
* El objeto global de JavaScript: `Number`
IDE
===

Un entorno de desarrollo integrado (**IDE**) o entorno de desarrollo interactivo es una aplicación que proporciona facilidades a los programadores para el desarrollo de software. Un IDE normalmente consta de un editor de código, herramientas automatizadas para producir el proyecto y un depurador.

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

### Conocimientos generales

* IDE en Wikipedia
ARPA
====

**.arpa** (parametros de dirección y enrutamiento) es un dominio de alto nivel (en-US) usado para propositos de infraestructura de Internet, especialmente busqueda inversa de DNS (ej., encontrar el nombre de dominio para una dirección IP) suministrada.

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

### General knowledge

* Official website
* .arpa on Wikipedia
Recursión
=========

Es el acto de una función llamándose a sí misma. La recursión es utilizada para resolver problemas que contienen subproblemas más pequeños. Una función recursiva puede recibir 2 entradas: un caso base (finaliza la recursión) o un un caso recursivo (continúa la recursión).

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

### Conocimiento general

* Recursión en Wikipedia
* Más detalles sobre recursión en Javascript
LGPL
====

*LGPL* (GNU Lesser General Public License en español **Licencia Pública General Reducida de GNU**) es una licencia de software libre publicada por la *Free Software Foundation*. LGPL es una alternativa más permisiva que la estricta licencia copyleft GPL.

Esto supone que cualquier trabajo que use un elemento con licencia GPL **tiene la obligación** de ser publicado bajo las mismas condiciones (libre de usar, compartir, estudiar, y modificar). Por otro lado, LGPL solo requiere que los componentes derivados del elemento bajo LGPL continuen con esta licencia, y no el programa al completo.

LGPL es usado habitualmente para licencias de componentes compartidos como por ejemplo librerías (`.dll`, `.so`, `.jar`, etc.).

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

### Cultura General

* GNU LGPL en Wikipedia
* LGPL License en gnu.org
ATAG
====

ATAG (Authoring Tool Accessibility Guidelines/Pautas de accesibilidad de herramientas de autor) es una recomendación de la W3C (en-US) para la construcción de herramientas de autor y producir contenido accesible.

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

### Conocimiento general

* ATAG como parte de la Iniciativa de Accesibilidad Web en la WikiPedia
### Referencia técnica

* Resumen de Authoring Tool Accessibility Guidelines (ATAG)
* La recomendación ATAG 2.0
SVG
===

Gráficos vectoriales escalables (del inglés ***S**calable **V**ector **G**raphics*) o **SVG** es un formato de imagen vectorial 2D basado en una sintaxis de XML .

W3C (en-US) comenzó a trabajar en SVG a finales de la década de 1990, pero SVG solo se hizo popular cuando Internet Explorer (en-US) 9 salió con soporte para SVG. Todos los principales navegadores ahora son compatibles con SVG.

Basado en una sintaxis de XML, SVG se puede diseñar con CSS e interactuar usando JavaScript. HTML5 ahora permite la inserción directa de etiquetas SVG en un documento HTML.

Como formato de imagen vectorial, los gráficos SVG pueden escalarse infinitamente, lo que los hace inestimables en responsive design (en-US), ya que puede crear elementos de interfaz y gráficos que se adaptan a cualquier tamaño de pantalla. SVG también proporciona un útil conjunto de herramientas, como recorte, enmascaramiento, filtros y animaciones.

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

### Conocimientos generales

* SVG en Wikipedia
### Aprendiendo SVG

* W3.org's SVG Primer
### Información técnica

* Documentación de SVG en MDN
* Última especificación SVG
Promesa
=======

Una **`Promesa`** es un objeto devuelto por una función que no ha completado su tarea. La promesa representa literalmente una promesa creada por una función a la que le llegará un resultado en un futuro.

Cuando la función termina su tarea de forma asíncrona, una función del objeto "promesa" será ejecutada.

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

Para obtener más información, echa un vistazo a los siguientes enlaces

### Conocimientos generales

* Valor futuro
### Referencias técnicas

* `Promise` en la Referencia JavaScript.
* Usando promesas
undefined
=========

Un valor **primitivo** automáticamente asignado a las **variables** que solo han sido declarados o a los **argumentos** formales para los cuales no existe argumentos reales.

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

### Conocimientos generales

* Tipos de datos y estructuras de datos en JavaScript
* Valor undefined en Wikipedia
Algoritmo criptográfico
=======================

En criptografía, un algoritmo criptográfico es un algoritmo que puede encriptar texto en lenguaje natural (en-US) para hacerlo ilegible, y para que sea desencriptado con el fin de recuperar el texto original.

Los algoritmos de cifrado eran muy comunes mucho antes de la era de la información (e.g., cifrados por sustitucion y cifrados por transposición), pero ninguno de ellos era criptográficamente seguros excepto one-time pad.

Los algoritmos modernos de cifrado están diseñados para resistir a ataques descubiertos por un criptoanalista. No hay garantía de que todos los métodos de ataque hayan sido descubiertos, pero cada algoritmo es probado contra todos los tipos de ataque conocidos.

Los algoritmos de cifrado funcionan de dos maneras, una es como cifrado por bloques en bloques sucesivos o buffers de datos, y la otra es como un cifrado en flujo en un flujo continuo de datos (generalmente de audio o vídeo).

También son clasificados en función de cómo se manejan sus claves:

* Los algoritmos de clave simétrica usan la misma clave para codificar y para decodificar un mensaje. La clave debe ser enviada de forma segura para mantener la confidencialidad del mensaje.
* Los algoritmos de clave asimétrica usan claves diferentes para codificar y para decodificar.
Saber más
---------

### Conocimiento general

* Algoritmo criptográfico en Wikipedia
MitM
====

Un ataque de Intermediario [**Man-in-the-middle attack** (MitM)] intercepta una comunicación entre dos sistemas. Por ejemplo, un router Wi-Fi puede estar en peligro.

Comparémoslo con un correo físico: si usted está escribiendo una carta a una persona, el cartero puede interceptar cada carta que envíe. Ellos la abren, la leen y finalmente la modifican, y entonces la reempaquetan y solamente entonces la envían a los destinatarios que usted pretendió. El receptor original podría entonces contestarle y el cartero abriría de nuevo la carta, la leería y finalmente la modificaria, la reempaquetaría y se la da. Usted ignoraría que hay un hombre en medio de su canal de comunicación – el cartero es invisible para usted y para su destinatario.

En el correo físico y en la comunicación online, los ataques MITM son difíciles de defender. Unos pocos consejos:

* No ignore los certificados de advertencia. Podría estar conectándose a un servidor de *phising* o a un servidor falso.
* Los sitios confidenciales sin encriptación HTTPS en redes públicas Wi-Fi no son dignas de confianza.
* Compruebe que aparece HTTPS en su barra de direcciones y asegúrese de que la encriptación está activa antes de hacer *log-in*.
Saber más
---------

* OWASP Article: Man-in-the-middle attack
* Wikipedia: Man-in-the-middle attack
* El encabezamiento `Public-Key-Pins` (en-US) (HPKP (en-US)) pude reducir considerablemente el riesgo de MITM pidiendo a los buscadores que requieran un certificado de lista blanca a las siguientes conexiones a esa website.
SGML
====

El *Lenguaje de marcado generalizado estándar* (**SGML**) es una especificación ISO (en-US) para definir lenguajes de marcado declarativos.

En la Web, HTML 4, XHTML, y XML son lenguajes populares basados en SGML. Vale la pena señalar que desde la quinta edición, HTML ya no está basado en SGML y tiene sus propias reglas de análisis.

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

* SGML en Wikipedia
* Introduction to SGML
Viewport
========

Un viewport representa la región poligonal (normalmente rectangular) en gráficas de computación que está siendo visualizada en ese instante. En términos de navegadores web, se refiere a la parte del documento que usted está viendo, la cual es actualmente visible en su ventana (o la pantalla, si el documento está siendo visto en modo pantalla completa). El contenido fuera del viewport no es visible en la pantalla hasta que sea desplazado dentro de él.

La porción del viewport que se encuentra visible en ese momento se denomina **visual viewport**. Este puede ser más pequeño que el viewport de diseño, por ejemplo, cuando el usuario hace uso del zoom. El viewport de diseño (**layout viewport**), sigue siendo el mismo, pero el visual viewport se empequeñeció.

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

### Conocimiento General

* Viewport en Wikipedia
* What is viewport in HTML en Stackoverflow
* Get viewport/window size (width and height) with javascript
* A tale of two viewports (Quirksmode)
* VisualViewport API (en-US)
Flex
====

flex es una nueva herramienta agregada a la propiedad CSS `display`. Junto con inline-flex, hace que el elemento al que se aplica se convierta en un flex container, y los hijos del elemento se conviertan cada uno en un flex item (en-US).

Luego, los elementos participan en el diseño flexible y se pueden aplicar todas las propiedades definidas en el módulo de diseño de caja flexible CSS (CSS Flexible Box).

La propiedad flex es una abreviatura de las propiedades flexbox flex-grow, flex-shrink y flex-base.

Además, <flex> puede referirse a una longitud flexible en CSS Grid Layout.

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

### Propiedades de referencia

* `align-content`
* `align-items`
* `align-self`
* `flex`
* `flex-basis`
* `flex-direction`
* `flex-flow`
* `flex-grow`
* `flex-shrink`
* `flex-wrap`
* `justify-content`
* `order`
### Para más información

* *Especificación de nivel 1 del módulo de diseño de flexbox CSS*
* Guía de Flexbox CSS: *Conceptos básicos de flexbox*
* Guía de Flexbox CSS: *Relación de flexbox con otros métodos de diseño (en-US)*
* Guía de Flexbox CSS: *Alinear elementos en un contenedor flexible*
* Guía de Flexbox CSS: *Ordenar elementos flexibles (en-US)*
* Guía de Flexbox CSS: *Controlar proporción de elementos flexibles a lo largo del eje principal (en-US)*
* Guía de Flexbox CSS: *Dominar la envoltura de elementos flexibles (en-US)*
* Guía de Flexbox CSS: *Casos de uso típicos de flexbox*
CRUD
====

**CRUD** (Create, Read, Update, Delete) es un acrónimo para las maneras en las que se puede operar sobre información almacenada. Es un nemónico para las cuatro funciones del almacenamiento persistente. CRUD usualmente se refiere a operaciones llevadas a cabo en una base de datos o un almácen de datos, pero también pude aplicar a funciones de un nivel superior de una aplicación como soft deletes donde la información no es realmente eliminada, sino es marcada como eliminada a tráves de un estatus.

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

### Conocimiento general

* CRUD en Wikipedia
Operando
========

**Un operando** es la parte de una instruccion que representa los datos manipulados por el Operator. por ejemplo, cuando sumas dos numeros, los numeros son el operando y "+" es el operador.

Aprende mas
-----------

* Operador en Wikipedia
URI
===

Un **URI** *(Identificador Uniforme de Recursos de sus siglas en inglés: Uniform Resource Identifier)* es una cadena que se refiere a un recurso. Los más comunes son URLs, que identifican el recurso dando su ubicación en la Web. URNs (en-US), por el contrario, se refiere a un recurso por un nombre, en un espacio de nombres determinados, como el ISBN(International Standard Book Number) de un libro.

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

### Conocimientos Generales

* URI en Wikipedia
* RFC 3986 on URI
* data URIs (en-US)
* www vs non-www (en-US)
Protocolos desafío-respuesta
============================

En protocolos de seguridad, un *desafío* es una información enviada al cliente por el servidor con el fin de generar una respuesta diferente cada vez . Los protocolos desafío-respuesta son una forma de batallar contra los ataques de REPLAY donde un atacante escucha los mensajes previos y los reenvía en un momento posterior para obtener las mismas credenciales que el mensaje original.

El protocolo de autenticación HTTP está basado en los protocolos desafío-respuesta, aunque la autenticación "Basic" no usa un desafío real (el *realm* siempre es el mismo).

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

* Protocolos desafío-respuesta en Wikipedia.
Descifrado
==========

En criptografía, el descifrado es la conversión de texto cifrado en texto simple.

El descifrado es una primitiva criptográfica: transforma un mensaje de texto cifrado en texto simple utilizando un algoritmo criptográfico llamado cifrado. Al igual que el cifrado, el descifrado en cifrados modernos se realiza mediante un algoritmo específico y una clave. Dado que el algoritmo suele ser público, la clave debe permanecer secreta si el cifrado se mantiene seguro.

![La primitiva de descrifrado.](/es/docs/Glossary/Decryption/decryption.png)

El descifrado es el reverso del cifrado y si la clave permanece secreta, el descifrado sin conocer el secreto específico, entonces el descifrado es matemáticamente difícil de realizar. El grado de dificultad depende de la seguridad del algoritmo criptográfico elegido, que está en constante evolución mediante el progreso del criptoanálisis.

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

* Cifrado y descifrado
HTML5
=====

La última versión estable de HTML, HTML5 convierte a HTML de un simple formato de marcado para estructurar documentos en una plataforma completa de desarrollo de aplicaciones. Entre otras características, HTML5 incluye nuevos elementos y API de JavaScript para mejorar el almacenamiento, la multimedia y el acceso al hardware.

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

* Nuestra guía HTML5 (en-US)
Null
====

En ciencias informáticas, un valor **null** representa una referencia que apunta, generalmente intencionadamente, a una inexistente o inválido objeto o dirección. El significado de una referencia null varía entre las implementaciones de lenguajes.

En JavaScript, null es uno de los valores primitivos.

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

### Referencia técnica

* Tipos de datos y estructuras de datos en JavaScript
* `Referencia JavaScript para los valores null`
### Conocimientos generales

* Puntero Null en Wikipedia
Mixin
=====

Un *mixin* es un conjunto coherente de métodos y propiedades implementadas por otras interfaces y clases.

Ejemplo

@mixin nombre\_del\_mixin{

width: 100% ;

}

La forma más común de llamar a un mixin y aplicar esas propiedades y métodos es el *include* (ejemplo `@include nombre_del_mixin`). Al utilizar el *include* para llamar las propiedades y métodos incluidos en el mixin, son entonces parte de la nueva interfaz.

**Esa definición es un poco confusa. Propongo que reemplazamos ésto con:** Un mixin es una clase u objeto que contiene uno o más métodos y/o propiedades implementadas por otra interface o clase. Las propiedades y los métodos son entonces parte de la nueva interfaz o clase y se utilizan simplemente como un definido explícitamente por la clase o interfaz.

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

### Conocimiento general

* Mixin en Wikipedia
### Referencia técnica

* Ejemplo de mixin: Body