Ir para o conteúdo
OneKitly
Daniel Okonkwo

Artigos de Daniel Okonkwo

Programador front-end e redator de Tecnologia · Ver perfil

· 3 min de leitura

Bases de regex: guia para principiantes

Uma expressão regular é um padrão para procurar texto. Eis os blocos — classes de caracteres, quantificadores e âncoras — com um exemplo.

· 3 min de leitura

O que é um código QR?

Um código QR é um código de barras 2D que uma câmara lê para abrir um link ou texto. Eis o que é, porque guarda tanto, a sua anatomia e uma nota de segurança.

· 12 min de leitura

Contar palavras é ambíguo, e cada ferramenta responde de forma diferente

Uma contagem de palavras é uma definição, não uma medição. Contámos o mesmo parágrafo de quatro maneiras e obtivemos 25, 28, 33 e 38; depois contámos 50 000 caracteres de prosa vulgar e obtivemos acordo dentro de 4,5 %. A diferença deve-se inteiramente a compostos, algarismos e URL.

· 14 min de leitura

Formatar números para seis línguas: separadores, moeda e o regresso ao valor

1 234,56 e 1,234.56 são o mesmo número, e confundi-los muda o valor que um leitor lê. Corremos Intl.NumberFormat para as seis localizações do site e imprimimos cada separador — incluindo o invisível que o francês usa — e depois medimos porque parseFloat não consegue desfazer nada disso.

· 2 min de leitura

O que é uma função de hash? (MD5, SHA-256)

Uma função de hash transforma qualquer entrada numa impressão de tamanho fixo. Eis o que faz, as suas propriedades-chave, usos comuns e que algoritmos são seguros.

· 3 min de leitura

Markdown: guia para principiantes

Formate texto simples com alguns símbolos: # para títulos, ** para negrito, - para listas. Eis o que é markdown, a sintaxe básica, porque está em todo o lado e os truques.

· 3 min de leitura

HEX vs RGB: como ler e converter cores

HEX e RGB são duas notações para as mesmas cores. Eis como ler cada uma, converter entre elas e adicionar transparência.

· 2 min de leitura

O que é um JWT (JSON Web Token)?

Um JWT é um token compacto e assinado que transporta identidade entre serviços. Eis as suas três partes, o uso para autenticação e os limites de segurança.

· 3 min de leitura

Contagem de palavras: tempo de leitura e limites

Uma contagem de palavras são palavras separadas por espaços. Eis como se conta, porque existem limites, como se traduz em páginas e tempo de leitura, e quando contam os caracteres.

· 2 min de leitura

O que é um UUID (e quando usá-lo)?

Um UUID é um identificador de 128 bits único sem autoridade central. Eis como se parece, porque é útil, as versões e quando usar um.

· 20 min de leitura

Taxas de fotogramas, código de tempo e o drop-frame que não descarta nada

Fotogramas = duração × taxa é trivial até a taxa ser 29,97. O código de tempo non-drop deriva então exatamente 3,6 segundos por hora. O drop-frame corrige saltando 108 números de fotograma — os mesmos 108 — mas a correção não é perfeita: contar cada fotograma revela um resíduo de 3,6 milissegundos por hora.

· 17 min de leitura

Que tamanho tem esse ficheiro de áudio?

O tamanho do áudio não comprimido é aritmética exata: frequência de amostragem × profundidade de bits × canais × segundos ÷ 8. O áudio de CD são 176 400 bytes por segundo. Um MP3 a 320 kbps, pelo contrário, é débito × duração e não depende de todo da frequência de amostragem — 2 400 000 bytes por minuto venha de 44,1 ou de 48 kHz.

· 18 min de leitura

Gradientes, bandas e porque o meio parece turvo

Interpolar em sRGB faz a média de números codificados em gama: o ponto médio de vermelho para verde é #808000 quando a resposta a meia-luz é #bcbc00 — menos 57,2 % de luz. As bandas são outro problema aritmético: 8 bits dão 256 degraus, e um gradiente escuro pode ter apenas 28. Eis ambos, calculados.

· 16 min de leitura

Os esquemas de cor são geometria numa roda — e a roda está errada

Complementar, tríade, análogo e complementar dividido são apenas rotações: some 180°, 120°, 30° ou 150° a um matiz. A aritmética é trivial. O problema é que o círculo de matizes HSL não é percetualmente uniforme — o amarelo e o azul com a mesma luminosidade HSL diferem 12,85 vezes em luminância — por isso uma paleta gerada tem de ser verificada em contraste depois.

· 19 min de leitura

Resolução de ecrã, densidade de píxeis e os números do marketing

Uma diagonal e uma relação de aspeto dão largura e altura por Pitágoras, e o resultado não é o que o marketing sugere: um de 27 polegadas em 21:9 tem menos 16,2 % de superfície do que um de 27 polegadas em 16:9. Depois os píxeis por grau, que mostram que o telemóvel com mais PPI não é o mais nítido que tem.

· 21 min de leitura

A formatação SQL e a cláusula IN que parte a produção

Construir uma lista IN por concatenação de strings é ao mesmo tempo o vetor de injeção clássico e um precipício de desempenho. A parametrização corrige o primeiro estruturalmente, porque o plano é compilado antes de chegar qualquer valor. O segundo exige aritmética: os tetos de parâmetros documentados pelos fabricantes, e o que uma consulta cujo texto muda a cada comprimento de lista faz a uma cache de planos.

· 18 min de leitura

O YAML parece simpático e morde

O YAML é JSON mais uma camada de inferência de tipos, e a inferência é a parte perigosa. O mesmo ficheiro passado por um analisador YAML 1.2 e por um 1.1: no é uma string num e false no outro, 01234 é 1234 num e 668 no outro, e 12:30:00 é um número num dos dois.

· 20 min de leitura

JSON é mais simples do que julga, e é esse o problema

O JSON não tem tipo inteiro, nem tipo data, nem comentários, nem esquema. Cada uma dessas ausências produz um erro concreto: um identificador de 19 dígitos volta desviado em 21, um carimbo temporal torna-se uma string que ninguém acordou, NaN não se escreve e as chaves duplicadas são legais. Tudo executado, em duas linguagens.

· 3 min de leitura

O que é uma expressão cron?

Uma expressão cron agenda uma tarefa para correr automaticamente a horas definidas. Eis para que serve, os seus cinco campos, como lê-la, e os erros comuns.