Yᴏᴜʀ Pʀᴏᴅᴜᴄᴛ ʜᴇʀᴇ!
Adicione um link para sua empresa ou projeto aqui: adquira um patrocínio do GitHub.
A lógica do mundo é anterior a toda verdade e falsidade.
- Ludwig Wittgenstein [1]
Uma lista selecionada de falsidades nas quais os programadores acreditam. Uma falsidade é uma ideia que você inicialmente acreditou ser verdadeira , mas, na realidade, provou ser falsa .
Por exemplo, uma ideia : um endereço de e-mail válido possui exatamente um caractere @
. Portanto, você usará esta regra para implementar sua lógica de validação de campo de e-mail. Certo? Errado! A realidade é: os e-mails podem ter vários caracteres @
. Portanto, sua implementação deve permitir isso. A ideia inicial é uma falsidade em que você acreditou.
Os artigos falsos listados abaixo terão uma lista abrangente das falsas crenças das quais você deve estar ciente para ajudá-lo a se tornar um programador melhor.
Conteúdo
- meta
- Artes
- Negócios
- Criptomoeda
- Datas e Hora
- Educação
- E-mails
- Geografia
- Identidade Humana
- Internacionalização
- Gerenciamento
- Multimídia
- Redes
- Números de telefone
- Endereços postais
- Ciência
- Sociedade
- Engenharia de Software
- Transporte
- Tipografia
- Jogos de vídeo
- Rede
meta
- Falsidades que os programadores acreditam - Uma breve lista de falsidades comuns. Uma ótima visão geral e rápida introdução ao mundo das falsidades.
- Falsidades sobre programação - Uma lista humilhante e divertida sobre programação e sobre os próprios programadores.
- Falsidades sobre Listas de Falsidades - Meta comentário sobre como essas falsidades não devem ser tratadas.
Artes
- Falsidades sobre Música – Falsas suposições que podem ser feitas na codificação da música.
- Falsidades sobre Arte – Equívocos comuns sobre arte.
Negócios
- Falsidades sobre compras on-line – Abrange preços, moedas e estoque.
- Falsidades sobre preços – Abrange moedas, valores e localização.
- Falsidades sobre IBANs – números de contas bancárias internacionais não são internacionais.
- Falsidades sobre Economia – A economia não é simples nem racional.
- Erro de ponto decimal no sistema de contabilidade da Etsy - A importância dos tipos no software de contabilidade: perder o ponto decimal resulta em cobranças excessivas de 100x.
- Vinte e cinco mil dólares de dinheiro fictício - O mesmo erro acima no Google Ads, ou o perigo de separar seus centavos de seus dólares, onde cupons internos de US$ 250 se transformaram em US$ 25.000. Meu conselho: livre-se de números inteiros e flutuantes para valores monetários. Use decimais. Ou volte para strings e analise-as, não valide.
- Caracteres
<
e >
em nomes de empresas levam a ataques XSS - Como o Reino Unido permite que empresas sejam registradas com caracteres especiais, um hacker os aproveitou para registrar "><SCRIPT SRC=MJT.XSS.HT></SCRIPT> LTD
, mas também ; DROP TABLE "COMPANIES";-- LTD
, BETTS & TWINE LTD
e SAFDASD & SFSAF ' SFDAASF" LTD
. - Minúsculas de nomes de empresas – Como as regras do Estado de Delaware e do IRS não se cruzam.
- Definições de moeda CLDR - Os intervalos de datas de validade da moeda se sobrepõem devido a revoltas, invasões, novas constituições e lenta adoção planejada.
-
tax
- Uma biblioteca de gerenciamento tributário PHP 5.4+.
Criptomoeda
- Falsidades sobre o Bitcoin – Uma lista de perspectivas equivocadas sobre o Bitcoin.
- Falsidades sobre Ethereum – Equívocos e armadilhas comuns na programação de contratos.
Datas e Hora
- Falsidades sobre o tempo - Artigo seminal sobre datas e horas.
- Mais Falsidades sobre o Tempo - Parte. 2 do artigo acima.
- Falsidades sobre horário e fusos horários - Outro aborda falsidades relacionadas ao tempo, com ênfase nos fusos horários.
- Crítica das Falsidades sobre o Tempo - Retoma o primeiro artigo acima e fornece uma explicação de cada falsidade, com mais contexto e recursos externos.
- Falsidades sobre o Unix Time - Cuidado com o segundo bissexto!
- Falsidades sobre fusos horários - Tem alguns pontos interessantes sobre os casos extremos das transições de horário de verão.
- Sua falácia do calendário está pensando… - Lista que cobre intercalação e influência cultural, feita por uma comunidade de desenvolvedores iOS e macOS.
- Banco de dados de fuso horário - Código e dados que representam o histórico da hora local para muitos locais representativos ao redor do mundo.
- A Longa e Dolorosa História do Tempo - A maioria das idiossincrasias na cronometragem pode encontrar uma explicação na história.
- Você defende uma reforma do calendário – sua ideia não funcionará. Este artigo explica por quê.
- Então você deseja abolir os fusos horários - Abolir os fusos horários pode parecer uma boa ideia, mas existem algumas complicações que fazem com que isso não seja bem assim.
- O problema com horários e fusos horários - Um vídeo sobre por que você nunca, jamais, deve lidar com fusos horários, se puder.
- Arrecadação excessiva de US$ 26.000 pelo Departamento do Trabalho - A consequência de uma contabilidade de calendário incorreta.
- RFC-3339 vs ISO-8601 – Uma lista gigante de formatos dos dois padrões, como eles se sobrepõem e exemplos vivos.
- ISO-8601,
YYYY
, yyyy
e por que seu ano pode estar errado - A formatação de string de data é difícil. - UTC é suficiente para todos, certo? - Existem casos extremos sobre datas e horas (especificamente UTC) nos quais você provavelmente não pensou.
- Armazenar o UTC não é uma solução mágica - “Apenas armazenar datas no UTC” nem sempre é a abordagem correta.
- Como escolher entre UT1, TAI e UTC - Depende de suas prioridades entre segundos SI, sincronização de rotação terrestre, prevenção de segundos bissextos.
- Por que subtrair esses dois tempos (em 1927) dá um resultado estranho? - O infame Stack Overflow responde sobre fusos horários históricos complicados e como as datas históricas podem ser reinterpretadas por versões mais recentes de software.
- Datas Críticas e Significativas - Do Y2K ao estouro de segundos de 32 bits da época Unix, uma lista de datas especiais a serem observadas dependendo do sistema.
- “Estou indo para uma comuna em Vermont e não lidarei com nenhuma unidade de tempo menor que uma temporada.” - É a nota deixada em seu terminal por um engenheiro que se demitiu nos anos 70, depois de muito esforço trabalhando em questões de cronometragem abaixo de um segundo. Fonte: A alma de uma nova máquina.
Educação
- Falsidades que os alunos de CS (ainda) acreditam ao se formar - Uma lista de coisas (não apenas) em que os estudantes de ciência da computação tendem a acreditar erroneamente e às vezes surpreendentemente, embora (provavelmente) devessem saber melhor.
- Mitos do pós-doutorado - “Muitas coisas são ditas, escritas e acreditadas sobre pesquisadores de pós-doutorado que simplesmente não são verdadeiras.”
E-mails
- Falsidades sobre Email – Sobre endereços, conteúdo e entrega.
- Eu sabia como validar um endereço de e-mail até ler a RFC - Fornece exemplos intrincados que são endereços de e-mail válidos insuspeitos, de acordo com a RFC-822.
- Então você acha que pode validar endereços de e-mail (FOSDEM 2018) - Apresentação de endereços de e-mail extremos e por que você não deve usar regex para analisá-los.
- Sua lógica de validação de e-mail está errada - Um resumo das várias coisas surpreendentes que são permitidas em um endereço de e-mail.
-
libvldmail
- Uma biblioteca que implementa verificações baseadas em RFC para endereços de e-mail.
Geografia
- Falsidades sobre Geografia - Assume lugares, seus nomes e localizações.
- Falsidades sobre mapas - Abrange coordenadas, projeção e GIS.
- Eu odeio sistemas de coordenadas - Um guia para profissionais geoespaciais sobre como diagnosticar e corrigir problemas comuns com sistemas de coordenadas.
- Os 5 nomes de lugares kanji mais insanos do Japão - “Há um grupo especial de kanji que é difícil até mesmo para os japoneses lerem: nomes de lugares.”
Identidade Humana
- Falsidades sobre Nomes – O artigo que deu início a tudo.
- Falsidades sobre Nomes – Com Exemplos – Uma versão revisitada do artigo acima, desta vez com explicações detalhadas.
- Falsidades sobre biometria – As impressões digitais não são únicas.
- Falsidades sobre Famílias – Você realmente não pode definir uma família com regras rígidas.
- Falsidades sobre Género: #1 e #2 - O género faz parte da identidade humana e tem as suas próprias subtilezas.
- Falsidades sobre mim - Questões na intersecção de nomes e gênero e internacionalização.
- Casamento Gay: A Perspectiva da Engenharia de Banco de Dados - Como armazenar um casamento em um banco de dados e ao mesmo tempo abordar a maioria das falsidades sobre gênero, nomes e relacionamentos.
- Nomes pessoais em todo o mundo – Como os nomes das pessoas diferem em todo o mundo e quais são as implicações para a Web?
- XKCD #327: Exploits of a Mom – Engraçado como a implementação de uma falsidade pode levar a falhas de segurança.
- Olá, sou o Sr. Nulo. Meu nome me torna invisível para os computadores - Exemplo da vida real sobre como a falsidade implementada tem impacto negativo na vida de alguém.
- HL7 v3 RIM – Um modelo de dados flexível para representar nomes humanos.
- Apple iOS
NSPersonNameComponentsFormatter
– representações localizadas dos componentes do nome de uma pessoa.
Internacionalização
Sobre codificação de caracteres, formatação de strings, unicode e internacionalização.
- Falsidades sobre o idioma – Traduzir um software do inglês não é tão simples quanto parece.
- Falsidades sobre texto simples - O texto simples não funciona, o que torna o Unicode ainda mais incrível por sua capacidade de funcionar bem.
- Falsidades sobre o texto - Um subconjunto das falsidades acima, ilustradas com alguns exemplos.
- Código Internacionalis(z)ing - Um vídeo sobre coisas que você precisa ter em mente ao internacionalizar seu código.
- Mínimo para saber sobre Unicode e conjuntos de caracteres - Uma boa introdução ao Unicode, seu contexto histórico e origens, seguida de uma visão geral de seu funcionamento interno.
- Impressionante Unicode - Uma lista com curadoria de informações, pacotes e recursos deliciosos sobre Unicode.
- Cantos escuros do Unicode - Unicode é extenso, aqui estão dragões.
- Vamos parar de atribuir significado aos pontos de código - aprofunda-se no Unicode e dissipa mitos sobre pontos de código.
- Equívocos Unicode - Uma coleção de falsidades sobre maiúsculas e minúsculas, codificações, comprimento de string e muito mais.
- Quebrando nossas suposições
Latin-1
- A maioria dos programadores gasta tanto tempo com Latin-1
que se esquece das peculiaridades dos scripts dos outros. - Ode a uma etiqueta de remessa - a codificação de caracteres é difícil, ainda mais quando cada camada quebrada de entrada de dados adiciona seu próprio tempero.
- Falha de localização: a temperatura é difícil - você não pode localizar as diferenças de temperatura como estão.
- Dados de teste i18n - Compilação de dados reais de nomes internacionais e diversos para testes de unidade e controle de qualidade.
- Grande lista de strings impertinentes - Um enorme corpus de strings que têm alta probabilidade de causar problemas quando usados como dados de entrada do usuário. Um conjunto obrigatório de casos extremos práticos para testar seu software.
Gerenciamento
- Falsidades sobre candidatos a empregos - Suposições sobre candidatos a empregos e seus históricos de empregos não são necessariamente verdadeiras.
Multimídia
- Falsidades sobre vídeo - Cubra tudo: decodificação e reprodução de vídeo, arquivos, dimensionamento de imagem, espaços de cores e conversão, exibições e legendas.
- Casos extremos horríveis a serem considerados ao lidar com música - Os dados dos catálogos de música estão cheios de coisas malucas.
- Esquema de banco de dados MusicBrainz - Um projeto e banco de dados de código aberto que parece ter resolvido a complexidade do gerenciamento de catálogos de música.
- DDEX – O padrão da indústria para metadados musicais, incluindo arquivamento, gravação de som, relatórios de vendas e uso, royalties e acordos de licença.
- Guia de estilo musical da Apple – Diretrizes de seguro de qualidade para formatar música, arte e metadados para aumentar a descoberta.
Redes
- Falsidades sobre redes - Abrange TCP, DHCP, DNS, VLANs e IPv4/v6.
- Falácias da Computação Distribuída - Suposições que os programadores novos em aplicações distribuídas invariavelmente fazem.
- Há mais de uma maneira de escrever um endereço IP - algumas partes do endereço são opcionais, lembre-se das notações decimais e octais e não se esqueça do IPv6.
- IDN é uma loucura - Caracteres internacionais em nomes de domínio significam suporte a homógrafos e heterógrafos.
-
hostname-validate
– Uma tentativa de validar nomes de host em Python.
Números de telefone
- Falsidades sobre números de telefone - Abrange números de telefone, sua representação e significado.
-
libphonenumber
- biblioteca Java, C++ e JavaScript comum do Google para análise, formatação e validação de números de telefone internacionais. Também disponível para C#, Objective-C, Python, Ruby e PHP.
Endereços postais
- Falsidades sobre endereços – Abrange ruas, códigos postais, edifícios, cidades e países.
- Falsidades sobre Residência - Não se trata apenas do endereço em si, mas da relação entre uma pessoa e sua residência.
- Carta entregue apesar de não ter nome nem endereço - Falsidade definitiva sobre endereços postais: você não precisa de um.
- Estranhezas de endereços no Reino Unido - peculiaridades extraídas de uma lista da maioria das vendas de imóveis residenciais na Inglaterra e no País de Gales desde 1995.
- Qual é o endereço mais mínimo possível no Reino Unido? - O truque é confiar nos códigos postais, que no Reino Unido são bastante específicos e “frequentemente identificam um ou alguns edifícios específicos, ao contrário dos países onde um código postal representa um bairro inteiro”.
- O urso com seu próprio CEP - Smokey Bear tem seu próprio CEP (
20252
) porque recebe muitas correspondências. - Por que a Costa Rica não usa endereços reais? - A Costa Rica usa um sistema idiossincrático de endereços que se baseia em pontos de referência, história e algumas suposições.
- Regex e endereços postais - Por que expressões regulares e endereços não combinam.
- Analisando o infame CSV postal japonês - “Vi muitos horrores, mas nunca vi essa escolha de formatação específica em nenhum outro lugar.”
- Padrões de endereçamento postal do USPS - Descreve formatos e conteúdo de endereço padronizados.
-
libaddressinput
- biblioteca C++ e Java comum do Google para análise, formatação e validação de endereços postais internacionais. -
addressing
- Uma biblioteca de endereçamento PHP 5.4+, alimentada pelo conjunto de dados do Google. -
postal-address
- módulo Python para analisar, normalizar e renderizar endereços postais. -
address
- Acesse a biblioteca para validar e formatar endereços usando o conjunto de dados do Google.
Ciência
- Falsidades sobre Sistemas de Medição - Sobre trabalhar com sistemas de medição e converter entre eles.
Sociedade
- Falsidades sobre nomeações políticas – Projetar sistemas eleitorais tem seus próprios truques.
- Falsidades sobre as mulheres na tecnologia - Mito sobre as mulheres nas indústrias STEM (Ciência, Tecnologia, Engenharia, Matemática).
Engenharia de Software
- Falsidades sobre versões - Atribuir uma identidade a uma versão de software pode ser mais difícil do que se pensava.
- Falsidades sobre sistemas de construção - Construir software é difícil. Construir software que constrói software é mais difícil.
- Falsidades sobre Comportamento Indefinido – Invocar comportamento indefinido pode fazer com que qualquer coisa aconteça, para uma definição muito mais ampla de “qualquer coisa” do que se possa imaginar.
- Falsidades sobre CSVs - Embora exista o RFC4180, ele está longe de ser definitivo e é amplamente ignorado.
- Falsidades sobre gerenciadores de pacotes - Abrange pacotes e seus gerenciadores.
- Falsidades sobre testes - Uma tentativa de estabelecer uma lista de falsidades sobre testes.
- Falsidades sobre a pesquisa - Por que a pesquisa (incluindo análise, tokenização, destaque) é enganosamente complexa.
- O que todo engenheiro de software deve saber sobre pesquisa - Um artigo com melhores fontes sobre a dificuldade de implementar mecanismos de pesquisa.
- Falsidades sobre paginação - Por que seu algoritmo de paginação está dando dor de cabeça a alguém (possivelmente você).
- Falsidades sobre a coleta de lixo – Equívocos sobre a previsibilidade e o desempenho da coleta de lixo.
- Mitos sobre caminhos de arquivos – A diversidade de sistemas de arquivos e sistemas operacionais torna os caminhos de arquivos um pouco mais difíceis do que imaginamos.
- O estranho mundo dos caminhos de arquivos do Windows - “Em qualquer sistema derivado do Unix, um caminho é algo admiravelmente simples: se começar com
/
, é um caminho. Não é assim no Windows.” - Mitos sobre caches de CPU – Equívocos sobre caches geralmente levam a afirmações falsas, especialmente quando se trata de simultaneidade e condições de corrida.
- Mitos sobre
/dev/urandom
- Existem algumas coisas sobre /dev/urandom
e /dev/random
que são repetidas continuamente. Ainda assim, eles são falsos. - Fatos sobre Máquinas de Estado - As máquinas de estado são frequentemente mal compreendidas e subaplicadas.
- Oi! Meu nome é… - Esta palestra poderia ter sido chamada de falsidades sobre nomes de usuário (e outros identificadores) .
- Equívocos populares sobre
mtime
- Parte de uma postagem sobre por que a comparação mtime
do arquivo pode ser considerada prejudicial. - Regras para preenchimento automático - Não são falsidades em si , mas ainda assim uma grande lista de boas práticas para implementar o preenchimento automático.
- Matemática de ponto flutuante - “Sua linguagem não está quebrada, ela está fazendo matemática de ponto flutuante. (…) É por isso que, na maioria das vezes,
0.1 + 0.2 != 0.3
.” - O documento yaml do inferno - YAML está cheio de complexidade obscura, como números acidentais e chaves sem string.
- Estou infinitamente fascinado por sistemas de marcação de conteúdo - existem casos extremos, mesmo em sistemas de marcação que deveriam ser básicos.
- Falsidades sobre a tecnologia quântica – Equívocos comuns sobre a tecnologia quântica e os computadores.
- Falsidades sobre sistemas orientados a eventos - Equívocos sobre sistemas orientados a eventos e passagem de mensagens.
Transporte
- Falsidades sobre Carros - Mesmo algo tão comum como definir um carro está cheio de armadilhas.
- Falsidades sobre mapas de assentos de companhias aéreas - Os mapas de assentos de companhias aéreas são muito mais complexos do que apenas fileiras e colunas organizadas de assentos.
- A confusão enlouquecedora dos códigos aeroportuários - Ter múltiplas agências internacionais e nacionais tentando conciliar história, praticidade e logística faz com que os códigos sigam regras misteriosas.
- Meu nome causa um problema com qualquer reserva! - Os antigos sistemas de reservas de companhias aéreas consideram o sufixo
MR
como Mister
e o eliminam.
Tipografia
- Falsidades sobre fontes – Suposições sobre tipografia na web e em aplicativos de desktop.
- Verdades que os programadores devem saber sobre maiúsculas e minúsculas - Um reverso completo do formato de falsidades, no tópico de maiúsculas e minúsculas (como em texto maiúsculo e minúsculo).
Jogos de vídeo
- O Problema da Porta – Todas as coisas que você não considerou implementar em suas portas nos jogos.
Rede
- Falsidades sobre HTML – “A Web é linda. A Web é feia. A Web é surpreendente. Uma parte desse apelo é o HTML, com suas peculiaridades históricas.”
- Falsidades sobre APIs REST – Armadilhas a serem observadas ao criar e documentar APIs.
- URLs: É complicado… - Há muitos componentes em uma URL, e todos têm sua própria lógica.
- A complexidade oculta do download de favicons, contada em mais de 15 casos extremos - Baixar aquele pequeno ícone que você vê nas guias do navegador deve ser um exercício simples. Acabou sendo muito mais complicado do que você pensa. Esteja atento para não raspar um iaque.
Contribuindo
Suas contribuições são sempre bem-vindas! Por favor, dê uma olhada nas diretrizes de contribuição primeiro.
Notas de rodapé
Esta lista ganhou alguma popularidade nas redes sociais nos últimos anos. Veja isso sendo discutido e mencionado em outro lugar.
A imagem do cabeçalho é baseada em uma foto modificada tirada em fevereiro de 2010 por Iza Bella, distribuída sob uma licença Creative Commons BY-SA 2.0 UK.
[1]: Cadernos, 1914-1916 (Liveright, 2022) - fonte: página 14e. [↑]