recursal/MDN huggingface dataset:
Blob.type
=========

A propriedade **`type`** de um objeto `Blob` fornece MIME type (en-US) do arquivo. Ela retorna uma string vazia se o tipo não puder ser determinado.

Syntaxe
-------
```

var mimetype = instanceOfFile.type
```

Valor
-----

Uma string

Exemplo
-------


```js
var i, fileInput, files, allowedFileTypes;

// fileInput é um HTMLInputElement: <input type="file" multiple id="myfileinput">
fileInput = document.getElementById("myfileinput");

// files é um objeto FileList (similiar ao NodeList)
files = fileInput.files;

// nossa aplicação permite apenas imagens dos tipos \*.png, \*.jpeg and \*.gif
allowedFileTypes = ["image/png", "image/jpeg", "image/gif"];

for (i = 0; i < files.length; i++) {
  // Testa se file.type é um tipo de arquivo permitido.
  if (allowedFileTypes.indexOf(files[i].type) > -1) {
    // file type é um dos tipos permitidos. Código aqui.
  }
});
```

Especificações
--------------

| Specification |
| --- |
| File API # dfn-type |

Compatibilidade com navegadores
-------------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

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

* `Blob`
EventSource.onerror
===================

A propriedade **`onerror`** da interface `EventSource` é um `event handler` chamado quando um erro ocorre e um evento `error (en-US)` é despachado para o objeto `EventSource`.

Sintaxe
-------
```

eventSource.onerror = function
```

Exemplos
--------


```js
evtSource.onerror = function () {
  console.log("EventSource failed.");
};
```


**Nota:** Você pode encontrar um exemplo completo no GitHub — veja Simple SSE demo using PHP.

Especificações
--------------

| Specification |
| --- |
| HTML Standard # event-error |
| HTML Standard # handler-eventsource-onerror |

Compatibilidade com navegadores
-------------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

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

* `EventSource`
EventSource()
=============

O construtor **`EventSource()`** retorna uma nova `EventSource`, que representa um recurso remoto.

Sintaxe
-------
```

eventSource = new EventSource(url, configuration);
```

### Parâmetros

`url`

Uma `USVString` (en-US) que representa a localização de um recurso remoto servindo os eventos/mensagens.

`configuration` Optional

Fornece opções para configurar a nova conexão. Os atributos possíveis são:

* `withCredentials`, valor padrão `false`, indicando se o CORS deve ser instruído a `incluir` credenciais.

Exemplos
--------


```js
var evtSource = new EventSource("sse.php");
var eventList = document.querySelector("ul");

evtSource.onmessage = function (e) {
  var newElement = document.createElement("li");

  newElement.textContent = "message: " + e.data;
  eventList.appendChild(newElement);
};
```


**Nota:** Você pode encontrar um exemplo completo no GitHub — veja Simple SSE demo using PHP.

Especificações
--------------

| Specification |
| --- |
| HTML Standard # dom-eventsource-dev |

Compatibilidade com navegadores
-------------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

See also
--------

* `EventSource`
Contêiner de Alinhamento
========================

O **contêiner de alinhamento** é um retângulo dentro do qual os tópicos de alinhamento são alinhados, isto é, definidos. Isso é definido pelo modelo de layout; geralmente é o bloco que contém o tópico de alinhamento, e assume o modo de escrita do box estabelecendo o bloco de conteúdo.

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

* CSS Alinhamento de Box (en-US)
Python
======

**Python** é uma linguagem de programação de alto nível e de uso geral. Ele usa uma abordagem multi-paradigma, o que significa que ele suporta procedural, orientação a objetos, e algumas construções de programação funcional.

Ele foi criado por Guido van Rossum como sucessor de outra linguagem (chamado ABC) entre 1985 e 1990, e atualmente é usado em uma grande variedade de domínios, como desenvolvimento web, como linguagem de script para outras aplicações e para construir aplicações reais.

Saiba Mais
----------

* Python na Wikipedia
* Um tutorial python
Atributo HTML
=============

*Atributos* estendem uma tag ("etiqueta"), modificando o comportamento dela ou fornecendo meta dados.
 Um atributo sempre tem a forma `nome=valor` (especificando o identificador do atributo e o valor associado a ele).

Exemplo:

<div id="principal" class="principal"> Neste cado o `id` e `class` são o atributo e o nome pricipal o valor.

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

### Referência Técnica

* Referência de atributos de HTML
* Informações sobre atributos globais de HTML.
Função First-class
==================

Entende-se que uma linguagem de programação tem **Função First-class** quando suas funções são tratadas como qualquer outra variável. Por exemplo, numa linguagem desse tipo, a função pode ser passada como argumento pra outras funções, ser retornada por outra função e pode ser atribuída como um valor à uma variável.

Exemplo | Atribuir uma função à uma variável
--------------------------------------------

### JavaScript


```js
const foo = function () {
  console.log("foobar");
};
// Chamar a função usando a variável
foo();
```


Nós atribuímos uma `Função Anônima` à uma `Variável`, então usamos a variável pra chamar a função adicionando parênteses `()` no fim.

**Nota:** **Mesmo se sua função for nomeada,** você pode usar o nome da variável pra chamá-la. Nomeá-la será útil quando for debugar seu código. *Mas não afetará a maneira que à chamamos.*

Exemplo | Passar uma função como um Argumento
---------------------------------------------

### JavaScript


```js
function sayHello() {
  return "Hello, ";
}
function greeting(helloMessage, name) {
  console.log(helloMessage() + name);
}
// Passar `sayHello` como um argumento pra função `greeting`
greeting(sayHello, "JavaScript!");
```


Nós estamos passando a função `sayHello()` como um argumento pra função `greeting()`, isso explica como estamos tratando a função como um `valor`.

**Nota:** A função que passamos como um argumento pra outra função, chamou uma **Função Callback.** *`sayHello` é uma Função Callback.*

Exemplo | Retornar uma função
-----------------------------

### JavaScript


```js
function sayHello() {
  return function () {
    console.log("Hello!");
  };
}
```


Neste exemplo; Precisamos retornar uma função de outra função - *Podemos retornar uma função porque tratamos função em JavaScript como um **`valor`**.*

**Nota:** Uma função que retorna uma função é chamada de **Higher-Order Function**

De volta ao nosso exemplo; Agora, precisamos chamar a função `sayHello` e a `Função anônima` retornada. Existem duas maneiras para fazermos isso:

### 1- Usando uma variável


```js
const sayHello = function () {
  return function () {
    console.log("Hello!");
  };
};
const myFunc = sayHello();
myFunc();
```


Dessa maneira, ela retorna a mensagem `Hello!`.

**Nota:** Você tem que usar outra variável. Se você fosse chamar `sayHello` diretamente, ela retornaria a função em si **sem chamar a função retornada**.

### 2- Usando parênteses duplo


```js
function sayHello() {
  return function () {
    console.log("Hello!");
  };
}
sayHello()();
```


Estamos usando parênteses duplo `()()` pra chamar também a função retornada.

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

### Conhecimento geral

* First-class functions na Wikipedia
CORS
====

**CORS** (Cross-Origin Resource Sharing) é um sistema que consiste na transmissão de HTTP headers (en-US), que determina se navegadores vão bloquear código JavaScript de acessarem respostas provindas de requisições entre origens.

A same-origin security policy (en-US) proíbe acesso aos recursos entre origens. Mas CORS dá aos servidores web a habilidade de dizer quando eles querem optar em permitir o acesso aos seus recursos entre origens.

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

### Conhecimento geral

* Cross-Origin Resource Sharing (CORS) na MDN
* Cross-origin resource sharing na Wikipedia
### Cabeçalhos CORS

`Access-Control-Allow-Origin`

Indica quando uma resposta pode ser compartilhada.

`Access-Control-Allow-Credentials`

Indica quando uma resposta a uma requisição pode ou não ser exposta quando a bandeira de credenciais é verdadeira.

`Access-Control-Allow-Headers`

Usado na resposta a uma requisição *on-the-fly* que indica quais cabeçalhos HTTP podem ser usados quando a requisição verdadeira for feita.

`Access-Control-Allow-Methods`

Especifica o método ou métodos de acesso ao recurso na requisição *on-the-fly.*

`Access-Control-Expose-Headers`

Indica quais cabeçalhos podem ser expostos como parte da resposta listando seus nomes.

`Access-Control-Max-Age`

Indica quanto tempo os resultados da requisição *on-the-fly* podem ser cacheados.

`Access-Control-Request-Headers`

Usado ao emitir uma requisição *on-the-fly* para deixar o servidor sabendo quais cabeçalhos HTTP serão utilizados quando a requisição verdadeira for feita.

`Access-Control-Request-Method`

Usado ao emitir uma requisição *on-the-fly* para deixar o servidor sabendo qual método HTTP será usado quando a requisição verdadeira for feita.

`Origin`

Indica de onde uma busca se origina.

### Referência técnica

* Especificação Fetch
Arpanet
=======

A **ARPAnet** (*Advanced Research Projects Agency Network*, em português, Rede da Agência de Pesquisas em Projetos Avançados) foi a primeira rede de computadores, construída em 1969 como um meio robusto para transmitir dados militares sigilosos e para interligar os departamentos de pesquisa por todo os Estados Unidos. ARPAnet primeiro executou NCP (*Network Control Protocol*, em português, Protocolo de Controle de Rede) e posteriormente a primeira versão do protocolo de internet ou o conjunto de protocolos TCP/IP (*Transmission Control Protocol/Internet Protocol*, em português, Protocolo de Controle de Transmissão/Protocolo de Internet), fazendo da ARPAnet uma parte proeminente da nascente Internet. ARPAnet foi fechado no início de 1990.

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

### Conhecimento Geral

* ARPANET na Wikipédia
Mozilla Firefox
===============

Mozilla Firefox é um browser open-source cujo desenvolvimento é supervisionado pela Mozilla Corporation. Firefox roda em Windows, OS X, Linux, e Android.

O primeiro lançamento foi em Novembro de 2004, Firefox é completamente customizável com temas, plug-ins, e complementos. Firefox usa o Gecko para renderizar páginas web, e implementa ambos padrões corrente e a vir da Web.

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

### Conhecimento geral

* Site oficial do Mozilla Firefox
### Referência técnica

* Informações de documentação/desenvolvimento na MDN
WHATWG
======

O GRUTTAH (WHATWG - sigla em inglês) (Grupo de Trabalho da Tecnologia de Aplicação Hipertexto da Web tradução livre de *Web Hypertext Application Working Group*) é uma organização que mantém e desenvolve o HTML e as APIs para aplicações Web. Antigos funcionários da Apple, Mozilla e Opera, estabeleceram o GRUTTAH em 2004.

 Os editores de especificações na GRUTTAH pesquisam e colhem feedbacks para a especificação de documentos. O grupo també tem um pequeno comitê de membros convidados e autorizados a sobrescrever ou substituir as especificações dos editores.
 Você também pode se juntar como contribuidor, assinando a lista de correspondência.

De acordo com o site deles, GRUTTAH é uma resposta ao lento progresso de padronização da Web da W3C's, especialmente o HTML, que teve seu desenvolvimento parado para a W3C concentrar no XHTML.

O GRUTTAH mantém especificações para HTML, DOM e JavaScript.

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

### Conhecimentos gerais

* WHATWG na Wikipedia
* Site Oficial da WHATWG.org
HTTP
====

HTTP (HyperText Transfer Protocol) é o protocolo básico que habilita a transferência de arquivos na Web (en-US), normalmente entre um navegador e um servidor para que os humanos possam lê-los. A versão atual da especificação HTTP é chamada HTTP / 2.

Como parte de um URI, o "http: //" é chamado de "esquema" e geralmente fica no início de um endereço, por exemplo em "https://developer.mozilla.org" para indicar ao navegador que solicite o documento usando o protocolo HTTP. O https neste caso refere-se à versão segura do protocolo HTTP, SSL (en-US) (também chamado TLS).

O HTTP é textual (toda a comunicação é feita em texto simples) e sem estado (nenhuma comunicação está ciente das comunicações anteriores). Esta propriedade torna ideal para humanos ler documentos (sites) na web. No entanto, o HTTP também pode ser usado como base para os serviços da Web REST de servidor para servidor ou solicitações AJAX dentro de sites para torná-los mais dinâmicos.

Leia mais
---------

* HTTP no MDN
* HTTP na Wikipedia
Palavra-chave
=============

Uma **palavra-chave** é a palavra ou a frase que descreve conteúdo. Palavras-chave on-line são utilizadas como pistas para buscadores ou como um conjunto de palavras que identifica e sintetiza o conteúdo dos sites.

Quando você usa uma máquina de busca, utiliza palavras ou expressões para especificar o conteúdo que está procurando e, como resultado, a máquina de busca retorna endereços e páginas relevantes para os termos apresentados. Para resultados mais apurados, tente utilizar palavras mais específicas, a exemplo "Blue Mustang GTO" ao invés de simplesmente "Mustang". Páginas de internet também utilizam palavras na forma de meta tags (na seção `<head>` para descrever o conteúdo da página, assim os buscadores podem identificar e organizar de forma melhorada as páginas da internet.

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

### Conhecimento Geral

* Keyword on Wikipedia
* Motor de Busca no Wikipedia
CDN
===

CDN é a sigla para (Content Delivery Network) ou seja, Rede de Fornecimento de Conteúdo na tradução livre. É um grupo de servidores espalhados em muitos locais. Esses servidores armazenam cópias duplicadas de dados para que os servidores possam atender às solicitações de dados com base nos quais servidores estão mais próximos dos respectivos usuários finais. CDNs deixa os servidores menos sobrecarregados quando possuem alto tráfego de dados.
Three js
========

three.js é um motor WebGL (en-US) baseado em JavaScript que pode executar jogos movidos com GPU ou outros aplicativos gráficos diretamente do navegador. A biblioteca three.js fornece várias funções e APIs para desenhar cenas 3D em seu navegador.

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

### Conhecimento Geral

* Three.js na Wikipédia
* Site oficial do three.js
SDP
===

**SDP** (Session Description Protocol) é o padrão que descreve uma conexão ponto a ponto (en-US). SDP contém o codec (en-US), o endereço de origem e as informações de tempo de áudio e vídeo.

Aqui está uma mensagem SDP típica:
```

v=0
o=alice 2890844526 2890844526 IN IP4 host.anywhere.com
s=
c=IN IP4 host.anywhere.com
t=0 0
m=audio 49170 RTP/AVP 0
a=rtpmap:0 PCMU/8000
m=video 51372 RTP/AVP 31
a=rtpmap:31 H261/90000
m=video 53000 RTP/AVP 32
a=rtpmap:32 MPV/90000
```


O SDP nunca é usado sozinho, mas por protocolos como RTP (en-US) e RTSP (en-US). O SDP também é um componente do WebRTC, que usa o SDP como forma de descrever uma sessão.

Leia mais
---------

### Conhecimentos gerais

* Protocolos WebRTC (en-US)
* Session Description Protocol no Wikipedia
Apple Safari
============

Safari é um navegador Web desenvolvido pela Apple e fornecido com ambos Mac OS X e iOS. Baseia-se com o mecanismo de código aberto WebKit.

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

### Conhecimento geral

* Safari na Wikipedia
* Safari on apple.com
### Informação técnica

* The WebKit project
* WebKit nightly build
* Reporting a bug for Safari
Pixel
=====

Um pixel é o menor elemento de um dispositivo de exibição como, por exemplo, um monitor.

A resolução de exibição pode ser expressada utilizando-se pixels como unidade. Por exemplo, uma resolução de "800x600" pixels significa que podem ser exibidos 800 pixels na largura e 600 pixels na altura.

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

### Referência técnica

* Pixel na Wikipedia
Character encoding
==================

Uma codificação define um mapeamento entre bytes e texto. Uma sequência de bytes permite diferentes interpretações textuais. Ao especificar uma codificação específica (como UTF-8), especificamos como a sequência de bytes deve ser interpretada.

Por exemplo, em HTML, normalmente declaramos uma codificação de caracteres UTF-8, usando a seguinte linha:


```html
<meta charset="utf-8" />
```


Isso garante que você possa usar caracteres de praticamente qualquer idioma humano em seu documento HTML e eles serão exibidos com de forma confiável.

Leia mais
---------

### Conhecimento Geral

* Character encoding on W3C
* Codificação de caracteres no Wikipedia
Progressive web apps
====================

Progressive web apps é um termo usado para descrever o estado moderno do desenvolvimento de aplicações web. Isso envolve pegar web sites/apps que aproveitam de todas as melhores partes da Web - como descobertas por mecanismos de busca, tornando-se linkaveis via URLs, e trabalho em vários fatores de formas - e sobrecarregá-los com APIs modernas (como Service Works e Push) e funcionalidades que conferem outros benefícios comumente atribuídos para apps nativos.

Essas funcionalidades incluem possibilidade de instalação, funcionamento offline e ser de fácil sincronização e reconexão do usuário com o servidor.

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

* O App Center (en-US) na MDN
* Progressive web apps no Google Developers
Objeto
======

Objeto refere-se a uma estrutura de dados contendo dados e instruções para se trabalhar com estes dados. Objetos algumas vezes se referem a coisas do mundo real, por exemplo um objeto de carro ou um mapa em um jogo de corrida. JavaScript, Java, C++, Python, e Ruby são exemplos de Linguagens orientadas à objeto (object-oriented programming).

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

### Conhecimentos gerais

* Object-oriented programming on Wikipedia
* `Object` in the JavaScript reference
* Object data structures in JavaScript
Web Design Responsivo
=====================

*Web Design Responsivo* (**RWD em Inglês**) é um conceito de desenvolvimento Web focado em fazer a experiência e comportamento de websites mais otimizada para todos os dispositivos, desde o desktop até um dispositivo móvel.

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

### Conhecimento geral

* Progressive Web Apps (en-US)
* Responsive Web Design
Identificador (Identifier)
==========================

Uma sequência de caracteres no código, que identifica uma **variável, função, ou propriedade**.

Em JavaScript, identificadores podem conter somente caracteres alfanuméricos (ou "$" ou "\_"), e não podem iniciar com um dígito. Um identificador difere de uma **string** no sentido de que uma string é informação, enquanto um identificador é parte do código. Em JavaScript, não existe uma forma de converter identificadores para strings, mas as vezes é possível converter strings em identificadores.

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

### Conhecimento Geral

* Identificador no Wikipédia
HSTS
====

**O HTTP Strict Transport Security** permite que um site informe ao navegador que ele nunca deve carregar o site usando HTTP e deve converter automaticamente todas as tentativas de acessar o site usando HTTP para solicitações HTTPS. Consiste em um cabeçalho HTTP `Strict-Transport-Security`, enviado de volta pelo servidor com o recurso.

Em outras palavras, ele diz ao navegador que apenas altere o protocolo de HTTP para HTTPS em uma url (e será mais seguro) e solicitará que o navegador faça isso para cada solicitação.

Leia Mais
---------

* `Strict-Transport-Security`
* Artigo OWASP: HTTP Strict Transport Security
* Wikipedia: HTTP Strict Transport Security
Cache
=====

O **cache** (web cache ou HTTP cache) é uma forma de armazenar dados que foram recebidos por respostas HTTP temporariamente para que possam ser usados em requisições HTTP subsequentes enquanto as condições de seu uso forem satisfeitas.

O **cache** ajuda a reduzir o tempo de resposta de uma página após a primeira requisição à mesma. Arquivos estáticos como o HTML e o CSS que não se modificam com frequência, scripts e imagens, ao serem salvos no cache, não precisam ser baixados do servidor novamente, sendo assim, só informações dinâmicas vão precisar ser requeridas. Lembrando que, qualquer modificação dos arquivos estáticos, o navegador do cliente terá de baixar novamente para receber as atualizações deste arquivo.

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

### Conhecimento geral

* Web cache on Wikipedia
Viewport
========

Uma viewport representa uma área poligonal (normalmente retangular) que está sendo exibida no momento. Em termos de navegador web, se refere a parte do documento que é exibida na janela (ou tela, se o documento estiver exibido em modo tela-cheia). Conteúdos fora da viewport não são visíveis na janela/tela até que seja rolado para sua área de visualização.

A porção da viewport que está visível no momento é chamada de **visual viewport** . Esta pode ser menor que a viewport de layout, assim é quando o usuário efetua uma pinçada/zoom. O **viewport** **de** **layout** permanece o mesmo, mas a visual viewport se torna menor.

1. Conhecimentos gerais
    1. Viewport na Wikipedia (em inglês)
    2. O que é viewport ? em Stackoverflow (em português)
    3. Como obter a largura e altura da viewport com Javascript (em inglês)
    4. O conto de duas viewports (Quirksmode - em inglês)
    5. VisualViewport API (en-US)
2. MDN Web Docs Glossary
    1. Visual Viewport (en-US)
Reflow
======

**Reflow** acontece quando o browser deve processar e desenhar parte ou toda a página novamente, como após uma atualização em um site interativo.

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

* Artigo do Google "Minimizing browser reflow"
Elemento
========

Um **elemento** é parte de uma página web. Em XML e HTML, um elemento pode conter um item de dados, um bloco de texto, uma imagem ou talvez nada. Um elemento típico inclui uma tag de abertura com alguns atributos, o conteúdo de texto incluído e uma tag de fechamento.

![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.](/pt-BR/docs/Glossary/Element/anatomy-of-an-html-element.png)

Elementos e tags *não* são a mesma coisa. As tags começam ou terminam um elemento no código fonte, enquanto os elementos são parte do DOM, o modelo do documento para exibir a página no navegador.

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

* Começando com HTML
* Definindo Custom Elements
* A interface `Element` representando um elemento no DOM.
Árvore de Acessibilidade
========================

A **árvore de acessibilidade** contém informação relacionada à acessibilidade para a maioria dos elementos HTML.

Navegadores convertem a marcação em uma representação interna chamada árvore do DOM. A árvore do DOM contém objetos representando todas as marcações de elementos, atributos e nós de texto. Os navegadores, então, criam uma árvore de acessibilidade baseada na árvore do DOM, a qual é usada por APIs específicas de plataforma para fornecer uma representação que possa ser entendida por tecnologias assistivas, como leitores de tela.

Há quatro coisas em um objeto da árvore de acessibilidade:

**nome**

Como podemos nos referir a esse objeto? Por exemplo, um link com o texto "Leia mais" terá "Leia mais" como seu atributo *name* (saiba mais como os nomes são computados em Accessible Name and Description Computation spec).

**descrição**

Como podemos descrever esse objeto se quisermos fornecer mais detalhes além do nome? A descrição de uma tabela pode explicar que tipo de informação ela contém.

**função**

Que tipo de objeto é esse? Por exemplo, é um botão, uma barra de navegação ou uma lista de items?

**estado**

Tem um estado? Os exemplos incluem caixas de seleção marcadas ou desmarcadas, e recolhido ou expandido para o elemento `<summary>`.

Adicionalmente, a árvore de acessibilidade frequentemente contém informação sobre o que pode ser feito com um elemento: um link pode ser seguido, uma entrada de texto pode ser digitada, entre outras coisas.

Enquanto continua em forma de rascunho na Web Incubator Community Group, o Modelo de Objeto de Acessibilidade (**Accessibility Object Model,** AOM), tem a intenção de incubar APIs que facilitam expressar a semântica de acessibilidade e potencialmente permitir acesso de leitura à árvore de acessibilidade computada.

1. Glossário
    1. Acessibilidade
    2. ARIA