recursal/MDN huggingface dataset:
JSON
====

*JavaScript Object Notation* (**JSON**) é um formato de intercâmbio de dados. Embora não seja um subconjunto estrito, JSON se assemelha a um subconjunto da sintaxe JavaScript. Embora muitas linguagens de programação suportem JSON, é especialmente útil para aplicativos baseados em JavaScript, incluindo sites e extensões de navegador.

JSON pode representar números, booleanos, strings, `null`, arrays (sequências ordenadas de valores) e objetos (mapeamentos de valores de strings) compostos por esses valores (ou de outros arrays e objetos). O JSON não representa nativamente tipos de dados mais complexos, como funções, expressões regulares, datas e assim por diante. (Os objetos de data, por padrão, serializam para uma string contendo a data no formato ISO, para que as informações não sejam completamente perdidas.) Se você precisar de JSON para representar tipos de dados adicionais, transforme os valores à medida que são serializados ou antes de serem desserializados.

Veja também
-----------

* JSON na Wikipedia
* JSON no MDN
IRC
===

O **IRC** (*Internet Relay Chat*) é um sistema de chat mundial que requer uma conexão à Internet e um cliente de IRC, que envia e recebe mensagens através do servidor de IRC.

Projetado no final dos anos 80 por Jarrko Oikarinen, o IRC usa TCP e é um protocolo aberto. O servidor de IRC transmite mensagens para todos os usuários conectados a um dos muitos canais de IRC (cada um com seu próprio ID).

### Aprenda mais

* Começando com o IRC
* Usando o IRC no Mozilla
Array
=====

Um *array (arranjo ou vetor)* é um conjunto de dados (que pode assumir os mais diversos tipos, desde do tipo primitivo, a objeto dependendo da linguagem de programação). Arrays são utilizados para armazenar mais de um valor em uma única variável. Isso é comparável a uma variável que pode armazenar apenas um valor.

Cada item do array tem um número ligado a ele, chamado de índice numérico, que permite acesso a cada "valor" armazenado na váriavel.

Em JavaScript, um `array` começa no índice zero e pode ser manipulado a partir de vários métodos (en-US).

Um exemplo simples de Array em Javascript:
```

var myArray = [1, 2, 3, 4];

var catNamesArray = ["Jacqueline", "Sophia", "Autumn"];

//Um array em JavaScript pode conter vários tipos de dados, como mostrado acima.
```

Saiba mais
----------

### Conhecimentos Gerais

* Array no Wikipedia
### Referência técnica

* `Array` Javascript no MDN
Nulo
====

Em ciência da computação, um valor nulo representa uma referencia que aponta, geralmente de maneira intencional, para um objeto ou endereço de memória inválido ou inexistente. O significado do valor nulo varia entre as implementações das linguagens.

Em JavaScript, o null é um dos tipos primitivos.

Veja mais
---------

### Referência técnica

* `Null na linguagem JavaScript`
### Referências externas

* Null - Programação
Class
=====

Em programação orientada a objeto, uma classe define as características de um objecto. A classe é uma definição de modelo de propriedades e metódos (en-US) de um objeto, o "projeto" a partir do qual outras instâncias mais específicas do objeto são desenhados.

Aprenda mais
------------

### Conhecimentos gerais

* Class-based vs. prototype-based programming languages (como JavaScript)
* Using functions as classes in JavaScript (en-US)
* Class-based programming na Wikipedia
* Object-oriented programming na Wikipedia
Forbidden response header name
==============================

Um *nome de cabeçalho de resposta proibido* é um nome de cabeçalho HTTP (ou `Set-Cookie` ou `Set-Cookie2`) que não pode ser modificado programaticamente.
WebRTC
======

**WebRTC** (*Web Real-Time Communication*) é uma API que pode ser usado por chat de vídeo, chamadas de voz e aplicativos da Web de compartilhamento de arquivos P2P.

O WebRTC consiste principalmente destas partes:

`getUserMedia()` (en-US)

Concede acesso à câmera e/ou microfone de um dispositivo e pode conectar seus sinais a uma conexão RTC.

`RTCPeerConnection` (en-US)

Uma interface para configurar chat de vídeo ou chamadas de voz.

`RTCDataChannel`

Fornece um método para configurar um caminho de dados peer-to-peer (en-US) entre navegadores.

Veja também
-----------

* WebRTC na Wikipedia
* WebRTC API na MDN
* Suporte do navegador para WebRTC
CRUD
====

**CRUD** (Create, Read, Update, Delete) é um acrônimo para as maneiras de se operar em informação armazenada. É um mnemônico para as quatro operações básicas de armazenamento persistente. CRUD tipicamente refere-se a operações perfomadas em um banco de dados ou base de dados, mas também pode aplicar-se para funções de alto nível de uma aplicação, como exclusões reversíveis, onde a informação não é realmente deletada, mas é marcada como deletada via status.

Saiba mais
----------

### Conhecimento geral

* CRUD on Wikipedia
W3C
===

O Consórcio da Rede Mundial (tradução livre de *World Wide Web Consortium*), ou simplesmente W3C é uma sociedade internacional que mantém as regras e frameworks relacionadas à Web (en-US)

Consiste de mais de 350 membros e organizações que, conjuntamente, desenvolvem a padronização da Internet, coordenam programas de divulgação, e mantém um fórum aberto para falar de Internet. O W3C coordena empresas na indústria para certificar que elas implementam os mesmos padrões da W3C.

Cada padrão passa por quatro estágios de maturidade: Rascunho em Desenvolvimento (WD - Working Draft), Candidato a Recomendação (CR - Candidate Recommendation), Recomendação Proposta (PR - Proposed Recommendation), e Recomendação da W3C (REC - Recommended by the W3C).

Saiba mais
----------

### Conhecimentos Gerais

* Site Oficial da W3C
* W3C na Wikipedia
Falsy
=====

Um valor **falsy** é um valor que se traduz em falso quando avaliado em um contexto Boolean.

JavaScript usa tipo coercion em contextos booleanos.

Exemplos de valores *falsy* em JavaScript (que se traduzirá em false e assim *ignorar* o bloco `if`):


```js
if (false) {
  // Not reachable
}

if (null) {
  // Not reachable
}

if (undefined) {
  // Not reachable
}

if (0) {
  // Not reachable
}

if (-0) {
  // Not reachable
}

if (0n) {
  // Not reachable
}

if (NaN) {
  // Not reachable
}

if ("") {
  // Not reachable
}
if (document.all) {
  // [1], not reachable
}
```


[1] `document.all` tem sido utilizado para a detecção do navegador no passado e a especificação HTML define uma violação intencional do padrão ECMAScript aqui para manter a compatibilidade com código legado (`if (document.all) { // Internet Explorer code here }` ou usando `document.all` sem verificar sua presença em primeiro lugar: `document.all.foo`).

Aprender mais
-------------

* Truthy
* Coercion
* Boolean
SGML
====

O *Standard Generalized Markup Language* (**SGML**) é uma ISO especificação que veio para definir as declarações/sintaxe Linguagens de Marcação.

On the web, HTML 4, XHTML, and XML are popular SGML-based languages. It is worth noting that since its fifth edition, HTML is no longer SGML-based and has its own parsing rules.

Leia mais
---------

* SGML no Wikipedia
* Introducão ao SGML
Endereço IP
===========

Um endereço IP é um número atribuído a cada dispositivo conectado a uma rede que usa o protocolo de Internet.

"Endereço IP" geralmente refere-se a endereços IPv4 de 32 bits até que o IPv6 seja implantado de forma mais ampla.

Saiba mais
----------

### General knowledge

* Endereço IP na Wikipedia
Flex
====

`flex` é um novo valor adicionado à propriedade `display`. Junto com o `inline-flex`, este valor faz com que o elemento aplicado seja um flex container (en-US), e seus filhos se transformem então em flex item (en-US).Os itens então farão parte de um layout flex, e todas as propriedades definidas no CSS Flexbox poderão ser aplicadas.

A propriedade flex é um atalho para as propriedades flexbox`flex-grow`, `flex-shrink` e `flex-basis`.

Além disso, `<flex>` pode ser também uma unidade flexível (en-US) em um CSS Grid Layout.

Veja mais
---------

### Referências

* `align-content`
* `align-items`
* `align-self`
* `flex`
* `flex-basis` (en-US)
* `flex-direction`
* `flex-flow`
* `flex-grow` (en-US)
* `flex-shrink` (en-US)
* `flex-wrap`
* `justify-content` (en-US)
* `order` (en-US)
### Leitura complementar

* *CSS Flexible Box Layout Module Level 1 Specification*
* CSS Flexbox Guide: *Basic Concepts of Flexbox*
* CSS Flexbox Guide: *Relationship of flexbox to other layout methods (en-US)*
* CSS Flexbox Guide: *Aligning items in a flex container*
* CSS Flexbox Guide: *Ordering flex items (en-US)*
* CSS Flexbox Guide: *Controlling Ratios of flex items along the main axis (en-US)*
* CSS Flexbox Guide: *Mastering wrapping of flex items (en-US)*
* CSS Flexbox Guide: *Typical use cases of flexbox (en-US)*
IPv4
====

IPv4 é a quarta versão do protocolo de comunicação subjacente à Internet e a primeira versão a ser amplamente implantada.

Formalizada primeiramente em 1981, o IPv4 traça suas raízes para o trabalho de desenvolvimento inicial do ARPAnet. IPv4 é um protocolo sem conexão para ser usado na comutação de dados em redes da camada de enlace de dados (ethernet). IPv6 está gradualmente substituindo o IPv4 devido a problemas de segurança que o IPv4 possui e as limitações de seus campos de endereços. (Versão número 5 foi atribuído em 1979 para o experimental *Internet Stream Protocol*, que no entanto, nunca foi chamado de IPv5).

Saiba mais
----------

### Conhecimento Geral

IPv4 na Wikipedia
Assíncrono
==========

**Assíncrono** refere-se a um ambiente de comunicação onde cada parte recebe e processa mensagens quando for conveniente ou possível em vez de imediatamente.

Isto pode ser usado para descrever um ambiente de comunicação humana como o e-mail — o remetente enviará um e-mail, e o destinatário irá responder quando for conveniente; eles não precisam responder imediatamente.

Também pode ser usado para descrever um ambiente de comunicação programática, por exemplo, `Ajax`é um mecanismo assíncrono para solicitar pequenos bits de dados por HTTP; o resultado é enviado de volta quando a resposta está completa, não imediatamente.

Saiba mais
----------

### Referência técnica

* Fetching data from the server (Learning Area)
* Sincrono
Protocolo
=========

Um **protocolo** é um sistema de regras que define como o dado é trafegado dentro ou entre computadores. Comunicações entre dispositivos requer que estes concordem com o formato do dado que estiver sendo trafegado. O conjunto de regras que define esse formato é chamado de protocolo.

Saiba mais
----------

### Conhecimento Geral

* Protocolo na Wikipedia
* RFC Official Internet Protocol Standards
ASCII
=====

ASCII (Código Padrão Americano para o Intercâmbio de Informação) é um dos mais populares métodos de codificação usado por computadores para converter letras, números, pontuações e códigos de controle dentro do formato digital. Desde 2007, UTF-8 substituiu-o na web.

Aprenda mais
------------

### Conhecimento geral

ASCII no Wikipedia
UTF-8
=====

UTF-8 (UCS Transformation Format 8) é a codificação de caracteres mais comum da World Wide Web. Cada caractere é representado por um a quatro bytes. UTF-8 é compatível com versões anteriores do ASCII e pode representar qualquer caractere Unicode padrão.

Os primeiros 128 caracteres UTF-8 correspondem exatamente aos primeiros 128 caracteres ASCII (numerados de 0 a 127), o que significa que o texto ASCII existente já é UTF-8 válido. Todos os outros caracteres usam dois a quatro bytes. Cada byte tem alguns bits reservados para fins de codificação. Como caracteres não ASCII requerem mais de um byte para armazenamento, eles correm o risco de serem corrompidos se os bytes forem separados e não forem recombinados.

Leia mais
---------

### Conhecimento Geral

* UTF-8 no Wikipedia
* Perguntas frequentes sobre o UTF-8 no site Unicode
Jank
====

**Jank** se refere à lentidão em uma interface de usuário, geralmente causado por execução de tarefas longas na Thread principal, o bloqueio de renderização, ou esforço demais do processador com processos em segundo plano.
Application Context
===================

Um **application context** de nível superior é um contexto de navegação (en-US) que tem um manifest

Se um *application context* for criado como resultado da solicitação do user agent para navegar para um link direto, o user agent deverá navegar imediatamente para o link direto com a substituição habilitada. Caso contrário, quando o contexto do aplicativo for criado, o user agent deverá navegar imediatamente para a URL inicial com a substituição ativada.

Observe que o URL inicial não é necessariamente o valor do membro start\_url: o usuário ou user agent pode tê-lo alterado quando o aplicativo foi adicionado à tela inicial ou marcado de outra forma.
Stacking context
================

**Stacking context** refere-se refere a como elementos de uma página se empilham sobre outros elementos, assim como você pode organizar cards em cima de sua mesa, lado a lado ou sobrepostas.

Leia mais
---------

### General knowledge

* Further explanation and example (en-US)
ATAG
====

ATAG (Authoring Tool Accessibility Guidelines) é uma recomendação do W3C para construir ferramentas de autoria acessíveis que produzem conteúdo acessível.

Veja também
-----------

* ATAG como parte da Iniciativa de Acessibilidade da Web na WikiPedia
* Visão geral das Diretrizes de acessibilidade da ferramenta de autoria (ATAG)
* A recomendação do ATAG 2.0
XSLT
====

*eXtensible Stylesheet Language Transformations* (**XSLT**) é uma linguagem declarativa usada para converter documentos XML em outros documentos XML, HTML, PDF (en-US), texto simples e assim por diante.

O XSLT possui seu próprio processador que aceita entrada XML ou qualquer formato conversível para um modelo de dados XQuery e XPath. O processador XSLT produz um novo documento baseado no documento XML e em uma folha de estilo XSLT, não fazendo alterações nos arquivos originais no processo.

Veja também
-----------

* XSLT on Wikipedia
* XSLT documentation on MDN (en-US)
XML
===

eXtensible Markup Language (XML) é uma linguagem de marcação genérica especificada pela W3C. A indústria de tecnologia da informação (TI) utiliza várias linguagens baseadas em XML para descrição de dados.

Tags XML são muito semelhantes a tags HTML, mas XML é muito mais flexível porque permite os usuários definirem suas próprias tags. Dessa forma o XML atua como uma meta-linguagem — isto é, pode ser usada para definir outras linguagens, como RSS (en-US). Além disso, HTML é uma linguagem para apresentação, enquanto XML é uma linguagem para descrever dados. Isto significa que XML tem aplicações muito mais amplas do que apenas a Web. Por exemplo, Web services podem usar XML para trocar requisições e respostas.

Saiba mais
----------

* Introdução a XML (en-US)
CMS
===

O CMS da sigla em inglês( Content Management System) ou seja, Sistema de Gerenciamento de Conteúdo, é um software que permite usuários publicar, organizar, mudar ou remover vários tipos de conteúdo, não apenas textos mas também incorporação de imagens, vídeos , aúdios e códigos interativos

Saiba mais
----------

### Conhecimento Geral

* Sistema de gerenciamento de conteudo no Wikipedia
Variável
========

Uma **variável (variable)** é um local nomeado para armazenar um valor. Dessa forma, um valor pode ser acessado através de um nome predeterminado.

Leia mais
---------

### Conhecimento geral

* Variável (programação) na Wikipédia
### Referências técnicas

* Declarando Variáveis no JavaScript
* **`var`** **statement** no JavaScript
Origem
======

O conteúdo de **origem** é definido pelo *esquema* (protocolo), *host* (domínio), e *porta* da URL usada para acessá-lo. Dois objetos tem a mesma origem somente quando o esquema, host, e porta batem.

Algumas operações são restritas para conteúdos de mesma origem, e essa restrição pode ser ultrapassada usando CORS.

Exemplos de mesma origem
------------------------

| `http://example.com/app1/index.html` `http://example.com/app2/index.html` | Mesma origem pois possuem o mesmo esquema (`http`) e mesmo host (`example.com`) |
| --- | --- |
| `http://Example.com:80` `http://example.com` | Mesma origem pois o servidor entrega conteúdo HTTP através da porta 80 por padrão. |

Exemplos de origens diferentes
------------------------------

| `http://example.com/app1` `https://example.com/app2` | Esquemas diferentes |
| --- | --- |
| `http://example.com` `http://www.example.com` `http://myapp.example.com` | Hosts diferentes |
| `http://example.com` `http://example.com:8080` | Portas diferentes |

Aprenda mais
------------

Veja Same-origin policy (en-US) para mais informações.
ISO
===

A **Organização Internacional de Padronização,** popularmente conhecida como **ISO** (em inglês: International Organization for Standardization), é uma organização internacional que cria padrões/normas para cada tipo de indústria, visando uma melhor coordenação e união internacional. Atualmente 164 países fazem parte da ISO.

Veja mais
---------

* Site oficial
ARPA
====

**.arpa** (address and routing parameter area) é um top-level domain (en-US) usado para fins de infraestrutura da Internet, especialmente pesquisa de DNS reverso (ou seja, localiza o domain name para um determinado IP address).

See also
--------

* Website oficial
* .arpa Na Wikipedia
HTTP/2
======

**HTTP/2** é a principal revisão do protocolo de rede HTTP. Os princiais objetivos do HTTP/2 são reduzir a latência, permitindo a multiplexação total das requisições e respostas, minimizar a sobrecarga do protocolo por meio da compactação eficiente dos campos do cabeçalho HTTP e adicionar suporte para priorização de requisições e notificações dos servidores.

HTTP/2 não modifica a semântica de aplicativo do HTTP de nenhuma maneira. Todos os principais conceitos encontrados no HTTP 1.1, como métodos HTTP, códigos de status, URIs e campos de cabeçalho, permanecem no lugar. Em vez disso, o HTTP/2 modifica como os dados são formatados (enquadrados) e transportados entre o cliente e o servidor, sendo que ambos gerenciam todo o processo e ocultam a complexidade do aplicativo na nova camada de enquadramento. Como resultado, todas as aplicações existentes podem ser entregues sem modificação.

Veja também
-----------

* HTTP on MDN
* HTTP/2 na Wikipedia
Ruby
====

*Ruby* é uma linguagem de programação de código aberto. Em um contexto Web (en-US), Ruby é geralmente usado em servidores com o framework *Ruby On Rails* (ROR) para produzir websites/apps.

Aprenda Mais
------------

### Conhecimento geral

* Ruby on Wikipedia
### Referência técnica

* Site oficial do Ruby
* Site oficial do Ruby On Rails
Idempotente
===========

Um método HTTP é **idempotente** se uma requisição idêntica pode ser feita uma ou mais vezes em sequência com o mesmo efeito enquanto deixa o servidor no mesmo estado. Em outras palavras, um método idempotente não deveria possuir nenhum efeito colateral (exceto para manter estatísticas). Implementados corretamente, o `GET`, `HEAD`, `PUT`, e `DELETE` são métodos **idempotentes**, mas não o método `POST`. Todos os métodos seguros também são idempotentes.

Para ser idempotente, somente o estado atual do *back-end* de um servidor deve ser considerado, o código de status retornado por cada requisição pode variar: a primeira chamada de um `DELETE` vai provavelmente retornar um `200`, enquanto as chamadas sucessivas vão provavelmente retornar `404`. Outra implicação do `DELETE` ser idempotente é de que os desenvolvedores não deveriam implementar APIs RESTful com a funcionalidade de deleção de última entrada usando o método `DELETE`.

Note que a idempotência de um método não é garantida pelo servidor, algumas aplicações também podem quebrar a constante de idempotência.

`GET /pageX HTTP/1.1` é idempotente. Chamado diversas vezes em sequência, ele vai retornar o mesmo resultado:
```

GET /pageX HTTP/1.1
GET /pageX HTTP/1.1
GET /pageX HTTP/1.1
GET /pageX HTTP/1.1
```


`POST /add_row HTTP/1.1` não é idempotente. Se ele for chamado diversas vezes, ele adicionará novas entradas:
```

POST /add_row HTTP/1.1
POST /add_row HTTP/1.1   -> Adiciona a 2ª linha
POST /add_row HTTP/1.1   -> Adiciona a 3ª linha
```


`DELETE /idX/delete HTTP/1.1` é idempotente, mesmo que o código de status mude entre requisições:
```

DELETE /idX/delete HTTP/1.1   -> Retorna 200 se idX existe
DELETE /idX/delete HTTP/1.1   -> Retorna 404 como ele acabou de ser deletado
DELETE /idX/delete HTTP/1.1   -> Retorna 404
```

Aprenda mais
------------

### Conhecimento geral

* Definição de idempotente na especificação HTTP.
### Conhecimento técnico

* Descrição de métodos idempotentes comuns: `GET`, `HEAD`, `PUT`, `DELETE`, `OPTIONS`, `TRACE`
* Descrição de métodos não-idempotentes comuns: `POST`,`PATCH`, `CONNECT`
String
======

Em qualquer linguagem de programação, uma string é uma sequência de caracteres usados para representar texto

Em JavaScript, uma String é um dos valores primitivos e o objeto `String` é um wrapper em cima do tipo primitivo string.

Leia mais
---------

### Conhecimento Geral

* String (computer science) (em inglês) na Wikipedia
* Estruturas e tipos de dados em JavaScript
Cabeçalho de entidade
=====================

Um cabeçalho de entidade é um HTTP header (en-US) descrevendo o conteúdo do corpo da mensagem. Cabeçalhos da entidade são usados em ambos, respostas e requerimentos HTTP. Cabeçalhos como `Content-Length`, `Content-Language`, `Content-Encoding` são cabeçalhos de entidade.

Mesmo se cabeçalhos de entidade não sejam requerimentos ou cabeçalhos de resposta, eles são muitas vezes incluídos nestes termos.

No exemplo a seguir, `Content-Length` é um cabeçalho de entidade, enquanto `Host` e `User-Agent` são request headers:
```

POST /myform.html HTTP/1.1
Host: developer.mozilla.org
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:50.0) Gecko/20100101 Firefox/50.0
Content-Length: 128
```

Aprenda mais
------------

### Conhecimento técnico

* List of all HTTP headers
Função Callback
===============

Uma função callback é uma função passada a outra função como argumento, que é então invocado dentro da função externa para completar algum tipo de rotina ou ação.

Aqui está um pequeno exemplo:


```js
function greeting(name) {
  alert("Olá " + name);
}

function processUserInput(callback) {
  var name = prompt("Por favor insira seu nome.");
  callback(name);
}

processUserInput(greeting);
```


O exemplo acima é de uma synchronous callback, uma vez que é executada imediatamente.

Note, no entanto, que callbacks são normalmente utilizados para continuar a execução do código após uma operação asynchronous ser terminada — essas são chamadas asynchronous callbacks. Um bom exemplo são as funções callback executadas dentro de um bloco `.then()` encadeado ao final de uma promessa após essa promessa ser cumprida ou rejeitada. Essa estrutura é usada em muitas APIs da web modernas, como a `fetch()`.

Aprenda mais
------------

### Conhecimento geral

* Callback no Wikipedia
OTA
===

*Over-The-Air* (**OTA** ou "Pelo-Ar") refere-se à atualização automática de programas de dispositivos conectados a partir de um servidor central. Todos os proprietários de dispositivos recebendo um determinado conjunto de atualizações estão sob o mesmo "canal"; e cada dispositivo pode amiúde acessar vários canais (e.g. para "builds" de produção ou engenharia).

Aprenda mais
------------

### Conhecimentos Gerais

* Over-the-air na Wikipedia
* Criando e aplicando pacotes de atualização para o Firefox OS