Semelhante à pergunta que li sobre Falha no servidor, qual foi o maior erro que você já cometeu em uma posição relacionada à TI. Alguns exemplos de amigos:
Como precisava trabalhar em um site de produção, decidi copiar o banco de dados ativo para o site beta. Bastante padrão, mas quando fui ao site beta, ele ainda estava obtendo informações desatualizadas. OOPS! Eu tinha copiado o banco de dados beta para o site ao vivo! Graças a Deus pelos backups.
E para mim, criei um formulário para um evento que seria realizado durante um período de tempo específico. Os participantes preenchiam o formulário para ter a chance de ganhar e enviamos aos organizadores do evento um CSV do banco de dados. Entrei no banco de dados e encontrei SOMENTE 1 ENTRADA, MINHA. Ao investigar, parece que eu esqueci uma chave de incremento automático e, devido à configuração do servidor, não havia como recuperar os dados perdidos.
Estou ciente de que esta pergunta é semelhante à do Stack Overflow, mas as que encontrei pareciam receber respostas genéricas em vez de histórias reais :)
Qual é o maior erro / erro de codificação de todos os tempos…
fonte
Respostas:
Emitindo um SQL UPDATE com uma cláusula WHERE 'ruim' que corresponde a tudo.
Lição aprendida: sempre emita primeiro um SELECT para ver o que será alterado.
fonte
Typo's
Passei três dias sólidos nesse pedaço:
Vê o erro? É o ponto e vírgula no final do
else if
. Não consegui descobrir por que meus comentários removidos não estavam sendo removidos. Cavado no banco de dados, a solicitação AJAX que eu estava usando, variáveis POST, tinhaerror_log
e emalerts
todos os lugares . Acabou reescrevendo o método e funcionou. Então eu fiz um diff com a versão original e notei o ponto e vírgula.Os erros de digitação são os mais difíceis de encontrar em um idioma que não é compilado ou pré-verificado por algo. Mesmo erros como esse seriam difíceis em uma linguagem compilada. Mude a
==
para=
e de repente você tem uma atribuição dentro de umaif
.fonte
Pensando que a programação é principalmente sobre construir coisas legais do zero.
fonte
Meu maior erro foi pensar que programar é dinheiro fácil ...
fonte
Excluiu acidentalmente o banco de dados que armazenava todas as informações de nossos clientes, histórico de pedidos e faturas desde o início da empresa (no valor de vários anos).
Para ser justo, meu empregador tem que compartilhar parte da culpa. Eles tinham a única cópia desse banco de dados armazenada no Mac SE (sim, isso foi há muito tempo) que eles me deram (um funcionário novinho em folha, primeiro emprego fora da faculdade) como minha estação de trabalho e nunca sequer consideraram fazer um backup.
Então, pensando que era uma cópia do banco de dados, arrastei-o para a lata de lixo. Devido ao tamanho do arquivo, ele foi excluído imediatamente. Acabamos recebendo de volta depois de pagar uma quantia indecente a um serviço de restauração de dados, mas por cerca de 5 dias não conseguimos atender ou faturar nenhum pedido e não tivemos como acessar informações sobre qualquer cliente. Isso praticamente paralisou a empresa (empresa de 3 pessoas).
fonte
quando o phpmyadmin perguntou:
"Você está prestes a DESTRUIR um banco de dados completo! Deseja realmente DROP DATABASE xxx?"
Eu apertei Enter.
fonte
Não tenho certeza se foi o meu "maior erro", mas definitivamente um memorável. Na minha primeira semana ou duas em um novo emprego, fui designado para fazer um pequeno "aprimoramento de recurso" que envolvia modificar a ordem de classificação de alguns itens em uma das páginas mais populares do site. Eu não estava muito familiarizado com a base de código, mas rapidamente encontrei o comparador relevante e adicionei chamadas a alguns métodos de aparência inofensiva dentro do método compareTo sem pensar muito sobre isso. O código foi testado localmente e em controle de qualidade sem problemas e entrou no ar.
Eu tive um 1 contra 1 com meu chefe no mesmo dia e com um grande sorriso no rosto, ele me parabenizou por ter meu primeiro "longa-metragem" ao vivo logo depois de ingressar. Nós dois assistimos enquanto ele visitava a página correspondente para ver o recurso em ação. A página demorou 47 segundos para carregar. Meu coração afundou. Ele atualizou a página: 53 segundos. O sorriso dele desapareceu. Voltei para minha mesa e passei uma longa noite depurando e enviando correções críticas para o site ao vivo.
Acontece que um dos métodos de aparência inofensivos que eu adicionei foi uma chamada de serviço remoto que resultou em pelo menos um acerto no banco de dados. Em cada chamada compareTo. Então, em uma página em que mais de 2.000 itens estavam sendo classificados, eu estava fazendo ~ 6000 (nlogn) hits de banco de dados. Ai.
fonte
Eu fiz isso:
(Na verdade, eu não fiz exatamente isso. Isso seria burro e indesculpável. Fiz isso de uma maneira mais sutil e indireta que resultou na execução desse comando.)
Escusado será dizer que o sistema Unix ficou inutilizável após esse ponto e teve que ser reinstalado. Eu era um administrador de sistemas iniciante na época e o cara mais velho que me supervisionava estava entendendo.
Alguma coisa boa veio da experiência. Eu aprendi como listar diretórios sem ter nenhum dos comandos / bin para usar.
fonte
O cliente deseja uma correspondência para toda a base de usuários, que basicamente enviará um email personalizado sobre um evento e, quando clicarem em um link no email, os registrará automaticamente em um formulário com metade dos dados preenchidos.
Eu escrevo o código, testo o código, funciona bem, os links funcionam, é bem suave. Depois de verificar e checar tudo, mudo para a lista ao vivo e vamos embora.
A lista ao vivo é significativamente maior que meus dados de amostra e o servidor de correio cai. Tenho que parar meu aplicativo de console e, em seguida, percebo que terei que reiniciá-lo de onde parou. Felizmente, esse recurso não é muito difícil de adicionar e eu registrei para quais usuários a correspondência já foi, portanto, após colocar o servidor de mensagens em funcionamento novamente e reconfigurar o código para poder reiniciar a partir do ponto em que falhou anteriormente e pausar para deixar o servidor de correio alcançar, vamos embora.
Infelizmente, de alguma forma, consegui não obter toda a atualização do meu código corretamente. Não me lembro dos detalhes do que fiz, mas a consulta para obter os dados do usuário estava obtendo um conjunto de dados, a consulta para gerar o hash estava recebendo outro, portanto, se um usuário clicasse no link, chegaria a um formulário que continha os dados pessoais de outra pessoa a partir dos detalhes da conta. E isso em um setor de nicho onde havia muitas pequenas empresas competitivas na lista.
Não demorou muito tempo para o telefone começar a tocar no escritório dos clientes ...
Esse foi o único erro até agora que me levou a oferecer minha demissão.
fonte
Uma vez eu usei uma junção cruzada sem filtro. Funcionou muito bem no banco de dados de teste com uma fração dos dados. Quando foi implantado, acabou com ~ 60 milhões de linhas em uma consulta média.
fonte
Eu bati um scanner a laser de 100.000 dólares.
O controlador estava armazenando posições como número inteiro, então eu dividi tudo por 10000 para obter a posição real em polegadas.
Quando o último dígito era 0, ele era omitido e o eixo Z ficava 10 vezes mais distante.
Hillarity seguiu
fonte
Por outro lado, era um aplicativo VB6 de cinco anos.
fonte
Permiti que meu gerente me desafiasse a deixar um emprego que eu amava. Eu deveria ter deixado ele estragar as coisas, ser demitido e, em seguida, eu deveria ter intensificado e limpo os pedaços. Em vez disso, parei e me arrependi desde então.
fonte
Há sete anos, meu chefe e proprietário da empresa, que eu ainda não conhecia, era tão novo no cargo, estava em outro estado fazendo uma demonstração do nosso site de pesquisa para alguns clientes em potencial. As taxas de associação variaram de cinco a cinco dígitos, de modo que essas demonstrações foram um grande negócio para a nossa nova empresa.
No meio de sua demonstração, enquanto eu fazia alguns trabalhos no banco de dados, fiz uma alteração no banco de dados ativo e atualizei todas as perguntas da pesquisa em todas as pesquisas para o mesmo texto, algo como "Esta é uma pergunta de teste" devido a uma falha no o ONDE. Meu colega de trabalho e eu lutamos pelo backup e nos encolhemos, esperando que ele não estivesse demonstrando aquela seção do site naquele momento, mas esperando pelo e-mail em maiúsculas que nunca apareceu.
O lado bom foi que o chefe finalmente saltou para uma caixa de desenvolvimento.
fonte
Eu estava executando o detetive de links do Xenu em nossa intranet para tentar esclarecer alguns dos muitos links quebrados que foram criados ao longo dos anos (a maioria, sem surpresa, eram links do wiki para a unidade de rede compartilhada).
Depois de cerca de 30 minutos, comecei a perceber que alguns dos novos itens tinham algumas fotos estranhas, parecia que as pessoas haviam usado algumas das fotos antigas granuladas que estavam no sistema, mas eu ignorei o pensamento de que talvez não houvesse nada mais novo que tiveram o que eles queriam.
Outros 10 minutos depois, notei que os itens apresentados estavam mudando aleatoriamente por algum motivo. Nesse momento, percebi o que estava acontecendo. A intranet usa autenticação do Windows e algumas das funções (como selecionar imagens de notícias e itens em destaque) foram codificadas para responder às solicitações HTTP GET. O verificador de links estava usando minha autenticação e havia rastreado para páginas do lado do administrador, fazendo seu trabalho lealmente e seguindo todos os links encontrados, incluindo aqueles como
/admin/displayItems/icon_update.asp?image=eastereggs.jpg&itemID=3174
fonte
Até agora, meu único erro de torcer o estômago, aumentar a frequência cardíaca e de repente ficar com calor e coceira estava executando uma consulta UPDATE sem uma cláusula WHERE. Felizmente, houve um backup dos últimos 15 minutos e os dados não foram alterados com muita frequência, o que significava que eu era capaz de restaurar completamente os dados em 10 minutos sem que ninguém soubesse.
Nada muito ruim, mas eu tive alguns telefonemas. Eles são e permanecem fechados porque ouvi histórias de horror suficientes nesse setor para que tudo o que faço que possa estragar tudo tenha uma boa repercussão.
fonte
Para um robô em que trabalho, mantemos um arquivo de log de cada execução. Temos o robô e um simulador, ambos os quais geram essas pastas de log. Os arquivos de log do simulador são inúteis, mas os arquivos de log dos robôs são muito úteis e são armazenados para sempre.
Como o próprio robô tem espaço limitado no disco rígido, eles são transferidos para outro computador e armazenados lá. Este computador é o principal computador operacional para se comunicar com o robô.
Bem, eu tinha começado a trabalhar no robô alguns meses antes e não sabia disso. Eu pensei que os logs no computador operacional eram inúteis gerados pelo simulador e os excluí. Perdemos todos os logs antigos porque não havia um backup adequado.
fonte
Construiu uma versão do nosso software no meu computador, em vez do computador de compilação, pois era mais rápido (cerca de 4 horas mais rápido, o que significava que ele poderia entrar no controle de qualidade naquele dia, e não no próximo), e o editor o queria o mais rápido possível.
Eu tinha uma definição especial para depuração no meu computador, que causou um erro que não foi detectado no controle de qualidade. Eles apenas o detectaram no final de quatro semanas de teste de validação, mas já era suficientemente ruim para falhar na validação.
fonte
Solte um banco de dados de produção por acidente, em vez de uma versão de desenvolvimento. Não vi em qual servidor estava trabalhando. Felizmente, o último backup foi produzido há 4 horas e o usuário não fez muitas alterações no sistema, portanto, não houve grande perda de dados.
fonte
O maior erro que já cometi foi não ter meu trabalho no controle de origem fora da minha máquina de desenvolvimento. Meu disco rígido travou e perdi semanas de trabalho. É uma lição muito aprendida e algo que nunca deixarei acontecer novamente.
fonte
Usando em
==
vez deequals
para comparação de string em Javafonte
==
é uma comparação de referência. Em C #,==
faz uma comparação de valor em cadeias, mesmo que.Equals()
Dito, existem algumas diferenças, veja a resposta de Jon Skeet aqui: stackoverflow.com/questions/3678792/…Eu disse ao meu diretor que só porque ele é velho e tem mais anos de experiência do que eu não significa que o respeitarei. A única coisa que eu respeitaria é ABILITY. Eu não tive que enfrentar as consequências de uma declaração tão patética, porque eu era um programador júnior que. Olhando para trás, esse parece ser meu maior erro. Onde estava meu senso comum \ humildade ?? :-(
fonte
Isso aconteceu com um colega este mês.
Ele estava corrigindo um erro que acontecia quando você envia um SMS para vários celulares. Geralmente, essas mensagens não são realmente enviadas para economizar nos custos, mas devido a uma configuração incorreta em nosso banco de dados, elas foram enviadas.
Custo: um mês de salário para o tráfego de SMS.
fonte
A pedido de um gerente, copiei
/etc/sudoers
de uma máquina para outra (apesar de não ter resolvido o problema em questão, mas isso não vem ao caso). Infelizmente, eu costumavasudo
mover o arquivo copiado para o lugar, sem perceber que o proprietário e as permissões estavam completamente errados. Nesse ponto, ninguém tinha um shell raiz aberto, ninguém podiasudo
e ninguém podia fazer login como root porque seu shell estava definido como/bin/false
. E a máquina estava em um data warehouse remoto ...fonte
Eu queria criar arquivos de metadados para cada arquivo em um diretório (ou seja, para cada arquivo
somedir/foo.bin
, eu gostaria de criar um arquivosomedir/foo.bin.meta
). Por algum motivo estúpido, decidi criar os arquivos abrindo e fechando um fluxo de arquivos via Python:Por alguma razão ainda mais estúpida, pensei que era inteligente testar esse script em um diretório no meu disco rígido com vários shows de dados pessoais. Somente depois de executá-lo, percebi que havia me esquecido de modificar o nome do arquivo antes de passá-lo
open
e que havia acabado de truncar todos os arquivos desse diretório (ai).Felizmente, isso estava em um computador pessoal e não causou danos a nada importante, mas eu ainda aprendi minha lição.
fonte
Eu estava trabalhando para uma empresa que lida com uma das maiores empresas de telecomunicações da Suécia, suporte ao cliente. Em nosso servidor, tínhamos algum software que regulava a fila de chamadas recebidas, quantas chamadas poderíamos atender e assim por diante. Se não estivesse funcionando, não receberíamos chamadas e os clientes não receberiam suporte.
De qualquer forma, fiz uma alteração (menor) no software. Eu poderia ter esperado por uma janela de serviço para alterá-la, mas pensei: "Ei, vai demorar um minuto para reiniciar o serviço, por que se preocupar. A sorte favorece os ousados". Então, eu o reiniciei, infelizmente o thread estava bloqueado, então não pude substituí-lo. Começando a entrar em pânico, decido reiniciar rapidamente a máquina (eu estava remotando). Infelizmente, em meu pânico, clico em "instalar atualizações e desligamento": P
Escusado será dizer que não havia muito suporte ao cliente na Suécia para a próxima meia hora antes de conseguirmos reiniciá-lo.
Um colega era pior do que eu, porém, ele depurou o sistema de resposta por voz uma noite e redirecionou o número para o celular. A única coisa que ele esqueceu de voltar, teve o dia de folga no dia seguinte e deixou o celular no trabalho. Estamos nos perguntando por que estava tocando constantemente naquele dia :)
fonte
fonte
Algum tempo antes, ao codificar o JS, eu não conseguia distinguir entre "1" (um) e "l" "pequeno L". Mesmo quando eu estava digitando esta resposta, ambos parecem quase iguais no editor!
fonte
Fiz um local templates linguagem , em uma versão inicial do que todos os parâmetros HTTP foram expandidas implicitamente como variáveis. Isso significava que você poderia escrever um URL como:
E faria exatamente o que parece.
Felizmente, não tenho usuários (suspiro), então acho que não representava muito risco à segurança.
fonte
Definitivamente acidente de TSQL - muitas instruções TSQL em uma janela do editor. Estava um pouco cansado, e as pessoas estavam me interrompendo pela esquerda e pela direita, e eu emiti um comando que atualizava 47.000 endereços de registros, cidade, estado e zip-oops. Tinha consertado em cerca de 25 minutos, no entanto.
fonte