Ir para o conteúdo
OneKitly
Daniel Okonkwo

Artigos de Daniel Okonkwo

Programador front-end e redator de Tecnologia · Ver perfil

· 12 min de leitura

As listas de tarefas em Markdown e o que se apresenta realmente em cada sítio

As listas de tarefas não estão no CommonMark. São uma extensão do GitHub Flavored Markdown, e por isso o mesmo ficheiro mostra caixas num sítio e parênteses retos literais noutro. A regra exata do marcador, o que faz o aninhamento e uma tabela do que é CommonMark, do que é GFM e do que não é nenhum — verificado contra ambas as especificações e quatro motores de apresentação.

· 13 min de leitura

Onde uma linha pode quebrar: o algoritmo Unicode por trás de cada parágrafo ajustado

«Quebrar nos espaços» falha na maioria dos sistemas de escrita. O UAX #14 dá a cada caráter uma classe de quebra de linha; procurámos as nossas no Unicode 17.0.0 e executámos uma implementação conforme sobre espaços inquebráveis, hifenes condicionais, espaços de largura zero, URL, japonês e tailandês.

· 14 min de leitura

Converter entre formatos de lista sem perder dados: as regras de aspas que ninguém lê

Passar de uma lista com quebras de linha para uma lista com vírgulas é trivial até um item conter uma vírgula. As regras de aspas da RFC 4180, porque um campo CSV pode conter uma quebra de linha, porque as folhas de cálculo europeias usam o ponto e vírgula, e o que um item vazio faz à ida e volta — cada caso executado e impresso.

· 13 min de leitura

Retirar o Markdown: o que o texto simples perde, e em que se engana uma regex

Uma ligação torna-se texto com o destino apagado, uma lista aninhada perde a hierarquia, uma tabela torna-se uma fila de palavras. Depois a metade técnica: o markdown não tem uma especificação única, e um limpador à base de regex estraga um nome de ficheiro, um sinal de multiplicação e o interior de um bloco de código — tudo confrontado com um analisador a sério.

· 12 min de leitura

O que um verificador de palíndromos tem de decidir antes de poder responder

Caixa, espaços, pontuação e diacríticos: quatro políticas, seis frases reais, e a resposta muda com cada uma. Depois a metade mais difícil — inverter uma cadeia não está definido em si, e a inversão por unidade de código parte os emojis e desprende os acentos, demonstrado no Node.

· 13 min de leitura

Converter entre PNG e JPG sem perder o que importa

Os dois sentidos falham de forma oposta. PNG para JPG achata em silêncio a transparência sobre uma cor de fundo que o conversor escolhe — obtivemos branco com uma ferramenta e preto com outra no mesmo ficheiro. JPG para PNG não recupera nada e custou até 11,4 vezes os bytes.

· 15 min de leitura

Marca de água: o que protege e o que não protege

Uma marca visível vive nos píxeis, por isso sobrevive a toda a cópia — e degrada a imagem para todo o espectador honesto ao mesmo tempo. Medido: quanto custa uma marca de canto, quanto custa uma marca em mosaico, e como cada uma se compara ao crédito nos metadados, às Content Credentials e à marca de água invisível.

· 14 min de leitura

Favicons: que tamanhos precisa realmente em 2026

Cinco ficheiros cobrem todos os consumidores que existem: o separador, o favorito, o mosaico afixado, o ecrã inicial Android e o ecrã inicial iOS. As listas de vinte ficheiros são uma matriz de navegadores morta — com medições do que um ícone de 16 píxeis consegue e não consegue conter.

· 18 min de leitura

Marcas temporais Unix, segundos intercalares e o problema de 2038

O tempo Unix conta segundos desde 1970 ignorando deliberadamente os segundos intercalares, razão pela qual não é uma contagem de segundos físicos decorridos. Eis o que essa troca compra, o que um segundo intercalar faz ao contador, o instante exato em que um contador de 32 bits com sinal transborda, e o erro do fator 1000 que o atira para 1970 ou para o ano 58589.

· 18 min de leitura

O que um minificador pode remover e o que não pode tocar

A minificação tem de preservar o significado, e o interessante são os espaços que carregam significado: o combinador descendente, os espaços dentro de calc(), o intervalo entre dois elementos em linha. Medido aqui em ficheiros reais, incluindo o que o brotli já lhe ia poupar.

· 17 min de leitura

As somas de verificação não são hashes: CRC-32, Adler-32 e para que servem

Uma soma de verificação apanha acidentes. Um hash criptográfico resiste a um atacante. Um hash de tabela distribui chaves. Três trabalhos diferentes, três famílias diferentes — e eis uma colisão CRC-32 construída à mão em 0,11 segundos que mostra exatamente porque não pode substituir uma pela outra.