JSON-LD sintaticamente valido pode estar
semanticamente errado. O parser aceita qualquer tipo no lugar de qualquer propriedade — quem reclama e o validador do schema.org, e so se voce for olhar.
// log de aprendizado
Conceito que eu precisei entender de verdade para resolver um problema real, anotado no momento em que o problema apareceu — não depois, quando já virou lembrança arrumada.
semanticamente errado. O parser aceita qualquer tipo no lugar de qualquer propriedade — quem reclama e o validador do schema.org, e so se voce for olhar.
visivel e mentira legivel por maquina. O FAQPage so vale se as perguntas existirem na pagina — entao a ordem certa e escrever o conteudo primeiro e derivar o schema dele, nunca o contrario.
Quatro servicos bem escritos convertem menos que um servico com escopo, prazo e proximo passo explicitos — porque quem le nao quer escolher, quer saber se serve pra ele.
O formulário chamava preventDefault e depois só abria o modal de sucesso, sem enviar nada. O endpoint estava no HTML, mas o JavaScript ainda rodava a simulação de envio da versão acadêmica. Resultado: seis semanas exibindo "mensagem enviada com sucesso" enquanto descartava tudo em silêncio. A lição não é sobre fetch: é que testar o caminho feliz não prova nada quando o caminho feliz é justamente o que foi simulado. Verificar o efeito, não a resposta.
Usei `<link rel="icon"[^>]*>` para substituir o favicon. O problema é que o valor era um data-URI com SVG dentro, e SVG tem `>` no meio. O padrão cortou no primeiro `>` que encontrou e deixou lixo em todos os arquivos. Regex casa padrão de texto, não hierarquia — quando o conteúdo pode conter o próprio delimitador, ou se usa um parser, ou se aceita conferir o resultado depois.
O botão de tema lia o atributo data-theme para decidir se invertia para claro ou escuro. Quando o tema vinha da preferência do sistema, esse atributo estava vazio — o código concluía "está claro" e tentava ir para o escuro, que já era o estado atual. Clique morto. Passei a calcular o tema efetivo antes de inverter. Estado derivado de duas fontes precisa de uma função que resolva as duas, nunca da leitura de uma só.
O wordmark da marca usava `<text>` num SVG. Na primeira renderização saiu em fonte serifada, porque texto em SVG depende da fonte existir na máquina de quem abre. Num favicon isso não importa; num og:image ou num cartão, a marca simplesmente vira outra coisa. Tipografia de identidade tem que ir rasterizada ou convertida em curvas.
Uma vírgula fora do lugar no JSON-LD faz o Google descartar o bloco inteiro, sem aviso e sem erro visível em lugar nenhum. Diferente de HTML, que o navegador tenta consertar, aqui não existe degradação graciosa: ou vale tudo, ou não vale nada. Passei a validar em três níveis — o JSON puro, o parse dentro do navegador e o resultado no inspetor externo.
Esta página não é escrita à mão. Um script lê o histórico do
repositório, procura o que vem depois de Aprendi: nas
mensagens de commit e monta o resultado. O registro acontece no
momento em que o problema é resolvido, que é quando eu ainda lembro
por que ele era difícil.