Cheat sheet

Regras para prever HTML, CSS, PHP, JavaScript, HTTP, segurança, regex e XPath.

Perguntar sobre esta página

ChatGPTClaudePerplexityGrokGeminiCopiar e abrirDeepSeekCopiar e abrir

Confirma primeiro o contexto: árvore HTML, nível da cascata, tipo da entrada, ordem dos callbacks ou nó XPath. As ligações levam à explicação de cada regra.

HTML: o que o pedido contém

DadoPara onde vai
idÀ label (for), nunca ao pedido
nameAo pedido, como nome do parâmetro
Sem name, disabled, checkbox por marcarNão viaja
readonly, checkbox marcada, botão usadoViaja (marcada sem value: on)
Fragmento #...Fica no navegador

Formulários · POST não cifra; o servidor valida tudo de novo. Tabela usa th com scope; rowspan/colspan ocupam posições que não se repetem.

CSS: especificidade e caixa

Ordem de decisão: origem e importância, camadas, especificidade (ID, classes, elementos), posição. Herança decide-se à parte: declaração no filho vence a herdada.

CasoRegra
1 ID contra 10 classesGanha o ID
:whereVale 0
!important, estilo em linhaMudam importância/nível, não especificidade
content-box / border-boxwidth exclui / inclui padding e borda; margem sempre fora
em / remPróprio elemento ou pai / raiz
relative / absolute+fixed / stickyConserva lugar / sai do fluxo / prende no scroll
frReparte o que sobra após fixos e gaps; item em span inclui gaps interiores

Seletores · Cascata · Caixa · Fr

PHP: fronteira e persistência

EntradaVerificação
Ausente, string com lixo, arrayRejeita antes de converter (is_string, inteiro completo, limites)
$_POSTSó corpos de formulário; JSON lê-se em php://input
Coluna de ordenaçãoLista fixa de nomes; marcador é só valor
Stock concorrenteUPDATE ... WHERE stock >= :q + rowCount, em transação com commit/rollback

intval('2x') dá 2: converter não valida. header antes de saída + exit; após POST, 303 para GET. password_hash / password_verify; sessão regenerada ao autenticar; dono verificado em cada ação a partir de $_SESSION.

Pedir · PDO · Transação · Sessão · Âmbito · Foreach com &: unset($v) após o ciclo

JavaScript: valores e eventos

+ concatena, - numericiza; ?? só para null/undefined, || para falsos. map/filter criam, forEach devolve undefined, sort altera (números: (a,b) => a-b sobre cópia). [1] === [1] é falso.

Closure guarda o ambiente de criação; this normal depende da chamada; arrow herda. target é a origem, currentTarget o listener em execução; delegação via closest serve itens futuros. preventDefault trava a ação, stopPropagation o percurso. Cada bind é função nova: guarda-a para remover, com igual tipo e captura. textContent para texto; innerHTML nunca com entrada.

Tipos · Eventos · Remover listener

HTTP: método, estado e origem

GET/HEAD/OPTIONS seguros e idempotentes; PUT/DELETE idempotentes; POST em geral não. Efeito igual, resposta pode diferir. Accept pede, Content-Type descreve. 201 criado, 204 sem corpo, 303 por GET, 304 cache válida, 400/401/403/404/405/500.

fetch resolve com 404: testa ok. json() é assíncrono. Parâmetros com URLSearchParams; respostas fora de ordem pedem contador ou AbortController. POST JSON entre origens exige preflight OPTIONS; a resposta real também autoriza a origem. Credenciais pedem origem concreta, nunca *.

Métodos · Mensagens · Fetch · CORS

Segurança: cada risco, a sua defesa

SQL preparado para valores; escape do contexto de saída; token CSRF não vazio com hash_equals; autorização no registo com o utilizador da sessão; caminhos de mapa fixo fora da raiz pública; HTTPS só no transporte. HttpOnly esconde o cookie, não trava pedidos. Salt público não salva palavra-passe fraca.

Injeção · XSS · CSRF · Autorização · Palavras-passe · Percurso de revisão

Regex e XPath: âncoras e alcance

ab+ repete b; (ab)+ o par; ^A|B$ prende cada lado; ^(?:A|B)$ prende ambas. Guloso consome o máximo, preguiçoso o mínimo; classe negada nunca atravessa o delimitador. \1 repete a captura; g guarda lastIndex em JS; PCRE usa \A...\z; pattern testa o valor completo e o servidor valida de novo.

XPath: / raiz e filhos, // descendentes, @ atributos, text() texto, posições desde 1. [f][1] filtra e escolhe; [1][f] escolhe e testa. //livro[1] por grupo, (//livro)[1] global. != com vários nós pede not(x = ...). Sem prefixo só há namespace vazio: regista prefixo para o URI.

Peças · Motores · Caminhos · Predicados

À tua maneira

Aparência

Modo de cor
Tema
Cor de destaque

Leitura

Fonte de leitura

Álgebra, lógica e uma ideia de cada vez.

Código

Fonte do código

Navegação

Cursor de leitura, sem edição. h, j, k, l movem; / pesquisa nesta página. v seleciona caracteres; V seleciona linhas; y copia. Tab permite destacar ou comentar. Espaço ou Enter abre blocos recolhíveis. Nos cartões, h, j, k, l mudam o foco.

CSS personalizado

Ativa uma sugestão ou guarda o teu CSS. Só muda este navegador.

Usa --page, --text e --accent para acompanhar o tema.

Seletores e recuperação

.site-header, .prose, .course-card, [data-reading-history], [data-playground] e .page-actions.

Abre a aparência com a tecla vírgula ou no rodapé. Se o CSS esconder os controlos, abre esta página sem CSS personalizado.

Pesquisar

Escreve para pesquisar em todo o site.

para escolher · Enter para abrir · Esc para fechar

Copiar fórmula

A cópia automática não está disponível. Copia o LaTeX abaixo.

Pesquisar nesta página

Enter procura · n / N repetem · Esc cancela. Ctrl / Cmd K pesquisa todo o site.

Atalhos de teclado

Clica numa tecla para a mudar. Esc cancela. Backspace desativa.

PesquisarCtrl / Cmd K

Os atalhos não interferem enquanto escreves. Tab e Enter funcionam sempre.