Categoria
Codificação e dados
Todas as ferramentas e artigos desta categoria, reunidos em um só lugar.
Ferramentas
Calculadora de tempo
Aritmética exata de tempo: o intervalo entre dois instantes, ou um instante mais ou menos uma duração, em ISO 8601 ou notação simples. Meses e anos são recusados com honestidade: são unidades de calendário sem duração exata única.
Códec Base64, Base32, Hex e Porcentual
Codifica texto para Base64, Base64 seguro para URL, Base32, hexadecimal ou codificação porcentual, e decodifica qualquer um deles de volta. Tolera preenchimento e espaços em branco ausentes, e sinaliza resultados binários (não UTF-8). É executado inteiramente no seu navegador.
Conversor de charsets e reparo de mojibake
Transforme texto em bytes e bytes em texto em catorze charsets, do UTF-8, UTF-16 e UTF-32 ao windows-1252, IBM 850 e EBCDIC, com cada byte malformado substituído exatamente como um navegador substitui. Cole um dump hexadecimal, escapes, %XX ou Base64, compare o que cada charset faz dos mesmos bytes e devolva um texto embaralhado como café ao que ele era.
Conversor de números romanos
Números para numerais e de volta, com a forma subtrativa canônica, a construção casa a casa e validação honesta: IIII é aceito e explicado, IL é recusado com a regra que viola.
Conversor de tempo Unix
Digite um timestamp Unix — segundos, milissegundos, microssegundos ou nanossegundos, detectado automaticamente — ou uma data ISO-8601, e leia de volta em todos os formatos comuns. Tudo no seu navegador.
Conversor JSON ↔ YAML
Converta JSON para YAML em estilo de bloco ou YAML de volta para JSON, inteiramente no seu navegador. Erros de análise apontam a linha e a coluna exatas, e notas de conversão sinalizam as bordas com perda, como comentários descartados e âncoras expandidas.
Explorador da tabela ASCII
Os 128 códigos ASCII em todas as notações, com os nomes da RFC 20 ao Unicode 18.0.0, como escrever cada um em C, JSON, JavaScript, Python, Tcl, HTML e URLs, e uma consulta que avisa quando um caractere nem é ASCII.
Formatador e Validador JSON
Valide, formate, minifique e ordene JSON. Erros de análise apontam a linha, coluna e o caminho exatos; chaves duplicadas são sinalizadas; e números grandes são preservados exatamente. Roda inteiramente no seu navegador.
Inspetor Unicode
Veja o que há de fato num texto: cada ponto de código com o seu nome, e os caracteres que se escondem ou enganam, de espaços de largura zero e controles bidirecionais do Trojan Source a letras cirílicas fingindo ser latinas. Consulte qualquer ponto de código, encontre um pelo nome, limpe um texto e escreva-o como escapes em oito linguagens.
Planejador de reunião multifuso
Um instante, lido no fuso IANA de cada participante: hora local, offset UTC, mudança de data e sinalização de horário comercial. O horário de verão é o que a base de fusos disser para aquela data, e é exatamente por isso que se planeja com uma data real.
Artigos
A anatomia de uma URL
Toda URL é construída a partir do mesmo punhado de partes definidas pela RFC 3986: esquema, autoridade (userinfo, host, porta), caminho, query e fragmento. O que cada parte significa, como um parser as distingue e onde os limites realmente caem.
LerA gramática JSON: seis tipos e algumas regras estritas
JSON é menor do que parece. O formato inteiro são seis tipos de valor e um punhado de caracteres estruturais, governados por regras mais estritas do que a maioria lembra: sem comentários, sem vírgulas finais e chaves que precisam ser strings entre aspas.
LerBytes, pontos de código e UTF-8
A diferença entre um caractere e um byte, por que existem o Unicode e o UTF-8, e o que isso tem a ver com o Base64.
LerJSON vs YAML: o que converte limpo e o que não converte
O YAML foi projetado para que todo documento JSON também seja YAML válido, e é por isso que a conversão entre eles geralmente simplesmente funciona. A parte interessante são as bordas: comentários, âncoras, múltiplos documentos e tipos exclusivos do YAML que não têm equivalente em JSON.
LerO que o tempo Unix realmente é
O tempo Unix é um único inteiro: o número de segundos desde 1970-01-01T00:00:00Z, a época (epoch). É independente de fuso horário, compacto e ordenável, e por isso sustenta quase todo relógio de sistema, linha de log e timestamp de API. Convertê-lo em uma data de calendário é pura aritmética.
LerBase64 e Base64URL, explicados
Como dados binários viram texto seguro para transmitir, por que existe o preenchimento e o que muda na variante segura para URL.
LerCoerção de tipos no YAML e o problema da Noruega
O YAML adivinha o tipo de todo escalar sem aspas, e seus palpites são surpreendentes: o código de país NO vira false, uma versão como 1.0 vira número, e um código com zeros à esquerda perde os zeros. Conhecer a regra é a chave para uma conversão segura.
LerNúmeros JSON e a armadilha da precisão
O JSON não impõe limite ao tamanho ou à precisão de um número, mas a maioria dos parsers converte silenciosamente todo número para um float de 64 bits. Essa incompatibilidade corrompe silenciosamente inteiros grandes e decimais exatos, e por isso um formatador deveria preservar os dígitos originais.
LerQuery strings: parâmetros, sinais de mais e chaves repetidas
A parte de uma URL após o ponto de interrogação parece simples mas esconde ambiguidade real: como os parâmetros são separados, por que um sinal de mais às vezes significa espaço, como chaves repetidas se comportam e por que não há um único padrão governante.
LerSegundos, milissegundos, microssegundos, nanossegundos: como distinguir unidades de época
O mesmo instante pode ser escrito como 1700000000, 1700000000000 ou maior, dependendo de o timestamp contar segundos, milissegundos, microssegundos ou nanossegundos. Confundi-los é um bug clássico. Quase sempre dá para saber qual é qual pela magnitude do número.
LerBase64URL e o alfabeto seguro para URLs
Por que JWTs e PKCE usam um alfabeto Base64 diferente, os dois caracteres que mudam e o que acontece com o preenchimento.
LerChaves duplicadas em JSON: legais, perigosas e dignas de detecção
A sintaxe JSON permite que a mesma chave apareça mais de uma vez em um objeto, mas a especificação não diz o que isso significa. Parsers diferentes resolvem isso de formas diferentes, o que torna chaves duplicadas uma fonte silenciosa de bugs e até de problemas de segurança.
LerCodificação de URL e hosts internacionalizados
URLs são restritas a um pequeno conjunto de caracteres ASCII, então todo o resto é codificado. A codificação percent cuida de caminhos e queries; o punycode cuida de nomes de host não-ASCII. Como ambos funcionam, e por que hosts internacionalizados são uma preocupação de phishing.
LerJSON e YAML na prática: APIs, declarações e orquestração
A divisão não é aleatória: APIs e declarações máquina-a-máquina tendem a ser JSON, enquanto arquivos de orquestração e pipeline escritos por humanos tendem a ser YAML. Entender por que cada domínio escolheu o que escolheu explica quando converter entre eles é útil.
LerO problema do ano 2038
Um inteiro de 32 bits com sinal só consegue contar segundos até 2147483647, que cai em 2038-01-19T03:14:07Z. Um segundo depois ele transborda e dá a volta para um número negativo, jogando os sistemas afetados de volta a 1901. É o sucessor mais silencioso do Y2K, e a correção é um inteiro mais largo.
LerÂncoras, aliases e merge keys em YAML
O YAML pode definir um valor uma vez e reutilizá-lo com uma âncora e um alias, e mesclar um mapping em outro com uma merge key. Nada disso existe em JSON, então a conversão expande e duplica tudo. Este artigo cobre a sintaxe, o que acontece na conversão, e a armadilha de negação de serviço que eles habilitam.
LerEscapes de string e Unicode em JSON
Dentro de uma string JSON, alguns caracteres precisam ser escritos como escapes, e qualquer caractere pode ser escrito como \uXXXX. As regras são poucas mas estritas, e a que pega as pessoas é como caracteres além do plano básico, como emoji, precisam de um par substituto (surrogate pair).
LerISO 8601, RFC 3339 e a Data HTTP
Depois que um timestamp Unix é convertido de volta em uma data humana, ele é escrito em um de poucos formatos de texto padrão. O ISO 8601 é o padrão amplo, o RFC 3339 é seu perfil estrito para a internet, e a data HTTP é a exceção. Saber a diferença evita muita dor de cabeça com parsing.
LerOnde o Base64 aparece: data URIs, MIME, PEM e Basic auth
Os lugares reais em que binário é embrulhado em texto, o custo de tamanho de fazer isso e por que Base64 em um cabeçalho de autenticação não é criptografia.
LerBase32, explicado
Por que o Base32 troca tamanho por um alfabeto sem ambiguidades e insensível a maiúsculas, como funciona seu agrupamento de 5 bits, e onde ele aparece (segredos TOTP, endereços onion, DNS).
LerBlock scalars e strings multilinha em YAML
O YAML tem duas formas de escrever uma string multilinha, e elas tratam quebras de linha de modo diferente: o estilo literal as mantém, o estilo folded as transforma em espaços. Indicadores de chomping então decidem o que acontece com a quebra de linha final. Errar isso é por que um script ou certificado embutido sai sutilmente corrompido.
LerPor que o tempo Unix ignora os segundos bissextos
O UTC ocasionalmente insere um segundo bissexto para se manter alinhado com a rotação da Terra, mas o tempo Unix finge que todo dia tem exatamente 86.400 segundos. Essa simplificação deliberada significa que um timestamp Unix não é uma contagem verdadeira de segundos decorridos desde a época — e é a escolha certa para o tempo civil.
LerVírgulas finais, comentários e a família JSON5
O JSON estrito não tem comentários nem vírgulas finais, o que surpreende quem usa um editor que aceita ambos. A razão é que o JSON é um formato mínimo de interchange, e as variantes tolerantes (JSONC, JSON5) são coisas separadas. Saber qual é qual evita arquivos de config que quebram em outra ferramenta.
LerCodificação hexadecimal (Base16), explicada
Como o hexadecimal representa cada byte com dois caracteres, por que é a forma padrão de imprimir bytes brutos, e como ele se compara ao Base64 e ao Base32.
LerFormatação, minificação e JSON canônico
O espaço em branco não muda o que o JSON significa, então JSON identado e minificado são o mesmo dado. Mas quando o JSON é assinado ou hasheado, os bytes exatos importam, e é aí que entra o JSON canônico: uma forma determinística de serializar o mesmo dado exatamente na mesma string toda vez.
LerNúmeros romanos: como o sistema realmente funciona
Sete símbolos, nenhum zero e uma regra de subtração que chegou mil anos depois de Roma. Por que IIII está no seu relógio e IV está no livro didático, o que IL viola e por que o sistema clássico termina em 3999.
LerURLs relativas e como elas resolvem
Uma URL relativa deixa de fora o esquema e o host e é completada contra uma URL base. As regras de como um navegador preenche o resto, e como ./ e ../ e uma barra inicial mudam o resultado, explicam muitos links quebrados e algumas surpresas de segurança.
LerAritmética de tempo e fusos horários: durações exatas, reuniões honestas
Por que 'mais um mês' não tem resposta exata, o que as durações ISO 8601 realmente prometem e como um instante UTC vira quatro relógios de parede diferentes. A armadilha do horário de verão, a armadilha da mudança de data e o argumento para planejar reuniões com uma data real.
LerCodificação por porcentagem (codificação de URL), explicada
Por que as URLs escapam certos caracteres como %XX, quais caracteres é seguro deixar como estão, e em que a codificação por porcentagem difere do Base64.
LerURLs enganosas: como enxergar além dos truques
URLs são uma ferramenta favorita para phishing porque o destino real é fácil de disfarçar. O truque do userinfo, os parâmetros de redirecionamento e os caracteres parecidos, todos fazem um link hostil parecer amigável. Este artigo mostra os disfarces comuns e o único hábito confiável para encontrar o host real.
LerBase16, Base32, Base64 e codificação por porcentagem comparadas
Um olhar lado a lado para as quatro codificações de texto: seus alfabetos, sobrecarga de tamanho, legibilidade, e quando recorrer a cada uma.
LerComo funciona o diff de texto
Um diff encontra o menor conjunto de inserções e remoções que transforma um texto em outro. Por baixo está a maior subsequência comum: as linhas que as duas versões compartilham, na mesma ordem, formam a espinha dorsal inalterada, e todo o resto é uma adição ou uma remoção.
LerComo ler um diff
Como ler um diff linha a linha: linhas inalteradas, adicionadas e removidas, os marcadores de mais e menos, os números de linha dos dois lados, o destaque palavra a palavra e o que ignorar espaços e ignorar maiúsculas realmente mudam. Mais o que um diff não consegue dizer.
LerDiffs em nível de palavra e de caractere
Um diff de linha marca a linha inteira como alterada mesmo quando um único caractere mudou. Diffs em nível de palavra e de caractere destacam exatamente a parte da linha que mudou, o que é muito mais fácil de ler para prosa, linhas longas e edições pequenas. Este artigo cobre a diferença e quando cada lente é a certa.
LerDiffs de três vias e conflitos de merge
Um diff normal compara duas versões e não consegue dizer qual delas mudou. Um diff de três vias adiciona um ancestral comum, que é o que torna o merge automático possível e o que produz os marcadores de conflito <<<<<<< ======= >>>>>>>. Este artigo explica o terceiro insumo e como ler e resolver um conflito.
LerEdições mínimas: por que um diff pode parecer errado
Um diff mostra o menor conjunto de inserções e remoções que transforma um texto no outro. Como o menor conjunto não é único e o algoritmo precisa escolher, um diff pode alinhar linhas de formas contraintuitivas, culpando o bloco errado ou dividindo uma seção movida. Saber disso torna diffs estranhos legíveis.
LerComo ler a estrutura do XML
XML é uma árvore de elementos construída a partir de um punhado de partes: uma declaração opcional, elementos com atributos, texto e algumas construções especiais. Uma vez que você consegue nomear cada parte e ver como elas se aninham, ler um documento desconhecido de cima a baixo vira rotina em vez de um jogo de adivinhação.
LerNamespaces XML explicados
Quando dois vocabulários XML usam o mesmo nome de elemento para coisas diferentes, namespaces os mantêm separados vinculando um prefixo a uma URI única. O prefixo é apenas um atalho local; a URI é a identidade real. Entender essa divisão resolve a maior parte da confusão com namespaces.
LerXML bem formado vs válido
Boa formação é a linha de base do XML: uma raiz, tags aninhadas e correspondidas corretamente, atributos entre aspas e especiais escapados. Validade é uma afirmação mais forte e separada de que um documento também segue um schema. Um parser rejeita XML mal formado de imediato, que é por que estas regras vêm primeiro.
LerCDATA, comentários e instruções de processamento
Nem tudo em XML é um elemento. Seções CDATA guardam texto cru que de outra forma precisaria de escape, comentários anotam sem afetar o conteúdo, e instruções de processamento carregam direções para uma aplicação. Reconhecer estas três impede que pareçam ruído misterioso.
LerOs formatos do meio: por que todo defeito de intercâmbio é o mesmo defeito
JSON, YAML, XML, carimbos de tempo, codificações de texto, base64, URLs, diffs. Parecem assuntos separados com páginas de referência separadas. São um assunto só: cada um é uma convenção para pôr significado numa cadeia de caracteres de modo que outra coisa consiga tirá-lo de volta, e quase todo defeito do conjunto é as duas pontas discordando sobre o que saiu.
LerFormulários HTML e codificação de requisições: como a web despacha sua entrada
Um formulário é um contrato entre página e servidor: quais campos, qual verbo, qual formato de fio. GET põe as respostas na URL; POST põe no corpo; e o enctype escolhe o dialeto do corpo - as correntes chave=valor do urlencoded, as partes delimitadas por boundary do multipart, feitas para arquivos. O que cada escolha significa para logs, caches, limites de tamanho e depuração, mais a nota da era fetch: o FormData manteve os formatos vivos depois que formulários deixaram de ser o único remetente.
LerURI, URL, URN: qual é mesmo a diferença?
As três siglas que todo mundo usa como sinônimo codificam uma ideia limpa: identificar vs localizar vs nomear. URI é o guarda-chuva - qualquer identificador na gramática padrão; URL é o identificador que também diz onde e como buscar; URN era o esquema para nomes puros, sem localização (urn:isbn:...). Por que o próprio W3C declarou a tricotomia clássica obsoleta, o que 'URI' significa em especificações vs 'URL' na conversa, e a lição de nomes que este site vive colecionando.
LerUnicode: pontos de código, planos, nomes e propriedades
O que é um ponto de código, como os 1.114.112 deles se organizam em planos, por que um caractere na tela pode ser vários pontos de código, como o Unicode nomeia e classifica cada caractere, e por que o mesmo emoji mede 1, 2, 4 ou 4 conforme a linguagem que conta.
LerUTF-8, UTF-16 e UTF-32, byte por byte
Como cada codificação do Unicode distribui um ponto de código em bytes, como reconhecer cada uma num dump hexadecimal, quais sequências de bytes são malformadas e exatamente o que um decodificador substitui por U+FFFD, e o que faz uma marca de ordem de bytes, incluindo o ponto em que um navegador e o padrão Unicode discordam.
LerMojibake: por que café vira café, e como recuperar o texto
O texto fica embaralhado quando bytes gravados num charset são lidos em outro. Como surgem os padrões clássicos (UTF-8 lido como windows-1252, arquivos do DOS e do Windows lidos um como o outro, EBCDIC lido como Latin-1), por que o navegador lê Latin-1 como windows-1252, como um único caractere invisível no rótulo do charset embaralha uma página inteira, como desfazer o estrago e quando isso não é possível, e o que a codificação de uma política de WAF do BIG-IP tem a ver com tudo isso.
Ler