Maior erro que você já cometeu [fechado]

33

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…

Brandon Wamboldt
fonte
6
perguntas de guinness!
Junior M
Por que o por que essa pergunta foi encerrada? Sinto a necessidade de acrescentar meu próprio grande erro: desativei um site LIVE por três horas (ou seja, status HTTP 500) depois de implantar no Production, depois de me dizer especificamente para NÃO IMPLANTAR PARA A PRODUÇÃO. Pior de tudo, tentei esconder o erro, mas o cliente percebeu e não parecia muito feliz.
Maria Ines Parnisari
Fácil para mim. Retiradas de investimentos pagas, mas convertidas em centavos duas vezes. Pagou 3 mil em vez de 30k. Segundo classificado - cláusula SQL where ruim. Notificou 4k pessoas que seus investimentos de US $ 1 a US $ 10 cresceram US $ 1800 durante a noite. Obviamente, alguns desses clientes foram e gastaram o dinheiro. Recuperado rapidamente, financeiramente. Confiança e culpa quebradas nunca foram embora. Como recuperar: assuma a responsabilidade. Admita seu erro. Não culpe mais nada, mesmo se houver fatores contribuintes. Isso foi recebido com compreensão e esforço da equipe para corrigi-lo. O cliente apreciou a honestidade.
Reasurria

Respostas:

54

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.

Michael Stum
fonte
15
Ou defina a confirmação automática como false para que você possa ver quantas linhas seriam afetadas.
Yevgeniy Brikman 25/10/10
2
Oh, eu fiz isso. Muito desagradável ...
glenatron
4
Haha Acho que todo mundo com alguma SQL sob o seu cinto tem feito isso em algum momento, eu incluído
billy.bob
3
É por isso que as atualizações devem ser feitas no dev primeiro! Sem hot fixes diretamente para prod. E seja muito grato pelas tabelas de auditoria, se as tiver quando fizer isso.
HLGEM 25/10/10
13
Fiz isso uma vez para redefinir a senha de alguém. Depois de definir a senha de todos para a mesma coisa, simplesmente disse ao meu chefe que o suporte técnico receberia muitos telefonemas e que deveríamos dizer ao chamador que tínhamos que mudar sua senha por motivos de segurança.
Barry Brown
36

Typo's

Passei três dias sólidos nesse pedaço:

if($func == "remove")
{
    $p->comments[$index]->removed = true;
    $p->save();
}
else if($func == "approve");
{
    $p->comments[$index]->approved = true;
    $p->comments[$index]->removed = false;
    $p->save();
}

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, tinha error_loge em alerts 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 uma if.

Josh K
fonte
8
Aqui é onde ferramentas como o Resharper podem realmente se recuperar - isso teria destacado isso como um aviso e solicitado a removê-lo.
Yaakov Ellis
24
O título é um trocadilho (pretendido)? : o
Agos 25/10
3
@ Rogue Coder: a diferença entre aspas simples e duplas é muito pequena. É um mau uso do tempo para gastar ciclos cerebrais se preocupando com isso. Veja o teste na parte inferior do phpbench.com
Joeri Sebrechts
2
@ back2dos: Errr ... certo. Então você recomenda largar todos os idiomas mencionados em favor do haXe? Algo que apareceu pela primeira vez em 2005? Vá em frente com isso.
Josh K
10
Obrigado pelo argumento a favor do estilo One True Brace. 1
eswald
28

Pensando que a programação é principalmente sobre construir coisas legais do zero.

Bobby Tables
fonte
1
Quando comecei, eu também tinha esse pensamento. Então eu aprendi que há muito mais manutenção de outras pessoas do que qualquer coisa. É por isso que agora tento escrever o melhor código (com comentários) que posso.
2
Ainda há muito código novo para escrever. Muitos projetos de código aberto exigem codificação do zero que implementa a mesma funcionalidade que um sistema fechado.
PP.
23

Meu maior erro foi pensar que programar é dinheiro fácil ...

Marcelo de Aguiar
fonte
27
Se você começou a programar pelo dinheiro, deveria começar uma nova carreira. Não que o dinheiro não está lá, é, mas você precisa do amor obsessivo para a programação que os verdadeiros desenvolvedores têm, ou você vai queimar muito rapidamente
johnc
1
Você fez um bom argumento. Eu realmente não entrei em programação pelo dinheiro, mas realmente pensei que seria muito mais fácil viver com isso. Programar é minha paixão e eu faria isso mesmo se tiver que pagar.
Marcelo de Aguiar
4
@johnc mesmo iria para a maioria das profissões. Sinceramente, não entendo as pessoas que frequentam a universidade para "aprender programação". Comecei quando tinha 14 anos na K&R. Eu fui para a universidade para "aprender eletrônica" - mas adivinhem, acabei como programador de qualquer maneira. Os melhores músicos ensinaram a si mesmos. Os melhores programadores aprenderam a si mesmos. Isso é vida.
PP.
Amém irmão, Amém
Misters
23

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).

JohnFx
fonte
15
Ai. Nota para si mesmo: sempre faça um backup: mesmo se já houver um backup.
Kramii Restabelece Monica
1
@Karmii: Melhores conselhos, mãos para baixo.
22410 Chris
@ Kramii - Ainda bem que aprendi essa lição no início da minha carreira.
JohnFx
Você não foi demitido?
Mateen Ulhaq
3
Havia culpa suficiente para dar a volta. Eu era apenas uma criança naquela época e provavelmente mais ingênuo do que seria hoje em assumir que uma empresa real faria algo tão bobo como colocar a única cópia do banco de dados na minha área de trabalho. A experiência me mostrou que é tolice superestimar a preparação de meu empregador, mesmo em uma grande empresa.
JohnFx
15

quando o phpmyadmin perguntou:

"Você está prestes a DESTRUIR um banco de dados completo! Deseja realmente DROP DATABASE xxx?"

Eu apertei Enter.

Luis Melgratti
fonte
26
Grande exemplo de quando a programação defensiva teria ajudado a evitar problemas importantes. Se você estiver fazendo algo em que as repercussões possam ser graves, como talvez descartar tabelas / bancos de dados, defina a resposta do usuário como "Não" para que eles ACTIVAMENTE concordem com a ação.
Hugo
6
@ Hugo: +1. Eu tinha um professor na uni (ex Unix / administrador de banco de dados) que costumava dizer "sempre que você estiver fazendo algo sério, sempre tire as mãos do teclado e sente-se nelas por cerca de dez segundos e pense no que está para acontecer".
Bobby Tables
1
@ Hugo: Eu vou mais longe - "Você está prestes a DESTRUIR um banco de dados completo! Se você realmente deseja DROP DATABASE xxx, digite DELETE:"
Loren Pechtel
3
@Hugo @Loren Pechtel - "Você está prestes a DESTRUIR um banco de dados completo! Uma pesquisa na web do seu login resultou em várias ocorrências de 'lol' e, portanto, esta ação está sendo negada. Consulte o seu administrador ou aprenda a se comunicar."
detly
15

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.

Yevgeniy Brikman
fonte
A ocorrência do banco de dados foi óbvia no seu código ou ocorreu em algum método / propriedade que você estava chamando?
Dbkk 25/10/10
A ocorrência do banco de dados estava realmente oculta por trás de um método que parecia um getter simples: adicionei uma chamada myObj.getFoo () no método compareTo. O JavaDoc na subclasse relevante notou a possibilidade de um acerto no banco de dados, mas o JavaDoc na interface myObj (que é o que eu observei ao escrever o código) não mencionou nada disso. Em ambos os casos, acho que é uma demonstração clara de (a) teste inadequado em meu nome e (b) o que pode acontecer se você não seguir boas convenções de nomenclatura.
Yevgeniy Brikman 25/10/10
é mais provável que fosse o caso (muito comum) do ambiente de teste não ser representativo do ambiente de produção. Você o testou, teve um desempenho decente, e concluiu que era bom, nunca sabendo (e não poderia ter, então) que o banco de dados de teste continha apenas uma fração dos dados contidos no banco de dados de produção.
Jwenting
15

Eu fiz isso:

rm -rf /bin

(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.

echo *
Barry Brown
fonte
+1 truques aprendidos como simulando ls e gato usando construções shell única Bourne do modo de usuário único em um sistema DEC-BSD
Arcege
11

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.

glenatron
fonte
+1 para dados reais significativamente maiores que os dados de amostra :-(
nakedfanatic
IMO, este é um dos piores> _ <
sevenseacat
7

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.

Austin Salonen
fonte
14
Na verdade, seu maior erro foi não desenvolver um banco de dados do tamanho apropriado. Nunca use uma pequena base de dados de teste para desenvolver um grande banco de dados de produção. Você não pode escrever código de desempenho a menos que tenha a dabase do tamanho certo.
HLGEM 25/10/10
7

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

Eric
fonte
6

"Precisamos reescrever."

Por outro lado, era um aplicativo VB6 de cinco anos.

Greg Buehler
fonte
5

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.

Henry
fonte
17
Os gerentes raramente são demitidos por essas coisas. Para chegar ao nível de gerente, você deve ser muito bom em cobrir a retaguarda; você provavelmente se tornou o bode expiatório no minuto em que deixou a empresa. Talvez você possa ter lidado com isso de maneira diferente, mas não se importe com isso.
Mark Ransom
se ele tivesse estragado tudo, você teria sido culpado e demitido (ou pelo menos passaria um tempo miserável até desistir em desgraça).
Jwenting
4

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.

Hans
fonte
3

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

Chao
fonte
7
Parece que é assim que muitas pessoas aprendem quando é apropriado usar o GET e quando é apropriado usar o POST
Oli
Concordo, eu estava prestes a começar a trabalhar na reconstrução da intranet e isso colocou firmemente o uso adequado de GET e POST no topo dos requisitos. O ASP MVC também ajuda a tornar isso fácil e intuitivo.
Chao
1
não é realmente o seu erro, mas uma boa história, no entanto :-)
Dean Harding
3

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.

ShaunO
fonte
1
Vocês nunca cometem erros de DB chamam de reversão?
Jé Queue
@Xepoch, que só ajuda se você começou uma transação
CaffGeek
1
@ Cha, geralmente não devemos assumir que todas as chamadas de dados devem ser implicitamente transacionais?
Jé Queue
2
@ Xepoch, nunca assuma.
CaffGeek
1
@Char, tenho uma preferência pessoal por manter todas as interações com o banco de dados nas transações. Aqueles que não o fazem, correm riscos ou têm casos de negócios que não se importam. A suposição de especificação e MANDATEs são que iniciaremos e manteremos projetos de código com gerenciamento de banco de dados transacional.
Jé Queue
3

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.

jsternberg
fonte
8
Porra ... eu quero trabalhar em robôs! Tudo o que faço o dia todo é criar sites ruins.
Dan Ray
2

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.

Dominique McDonnell
fonte
2

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.

Ernesto Otiz
fonte
Eu tive um colega de trabalho fazer isso. Só ele pensou que estava deixando cair sua cópia local, não a cópia. Estávamos todos trabalhando, então o ouvi dizer 'OH SH ** !!!!' Foi uma tarde divertida.
Tyanna 13/01
2

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.

DaveK
fonte
não é meu erro, mas relacionado. Empresa que eu trabalhava um tinha de seus servidores Web comprometidos, dando um acesso de intrusos raiz para o servidor de controle de versão (DMZ Whazda?), Onde ele prontamente executado um "rm -r /"
jwenting
2

Usando em ==vez de equalspara comparação de string em Java

nanda
fonte
13
Esse é o maior erro que você já cometeu?
22410 Chris
Isso é muito mais um problema em Java, onde ==é 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/…
Tim Goodman
2
@ Tim: que ainda não responde como isso foi "o maior erro que você já fez" ... Alguns mais contexto sobre as conseqüências, pelo menos, seria bom ...
Dean Harding
Se a resposta mais elevada é sobre erro de digitação, como minha resposta aqui é diferente? Se você é iniciante, é quase impossível cometer esse erro e pode frustrá-lo o dia inteiro.
Nanda
@ Dean: Não foi o maior erro que eu já cometi ... Eu estava apenas esclarecendo a diferença de comportamento aqui com C # vs Java
Tim Goodman
1

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 ?? :-(

Nerd
fonte
2
Eu concordo parcialmente com você, apenas porque alguém tem mais experiência (em anos) não significa que ele é um programador melhor. Existem muitos programadores por aí, que podem escrever 'xx anos de experiência' em seu currículo, mas não têm idéia do que estão fazendo.
Bobby
É mais provável que tenham cometido um erro estúpido ao longo do caminho, como os listados aqui, que farão com que o desenvolvedor seja mais cuidadoso
johnc 26/10/10
Para deixar claro, o erro não foi ter essa atitude. O erro foi dizer que você tem essa atitude.
Dan Ray
Eu queria dizer isso para muitas pessoas ao longo dos anos.
Reasurria
1

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.

Carra
fonte
isso é barato! :)
jwenting
1

A pedido de um gerente, copiei /etc/sudoersde 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 costumava sudomover 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 podia sudoe 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 ...

Eswald
fonte
1

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 arquivo somedir/foo.bin.meta). Por algum motivo estúpido, decidi criar os arquivos abrindo e fechando um fluxo de arquivos via Python:

for fn in os.listdir(path):
    open(os.path.join(path, fn), 'w').close()

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 opene 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.

Alan Plum
fonte
1

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 :)

Homde
fonte
1

Argh, 23:00, fechamento do laboratório, rápido, rápido ...

$ enscript -o midterm.hs midterm.hs
$ submit midterm.hs
Error: submission is empty

Deus não! FFS. Eu quis dizer PS você ****!

Orbling
fonte
Desculpas pelo estilo de linguagem, é necessário para autenticidade.
Orbling
0

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!

Gopi
fonte
Por que o voto negativo?
Gopi
0

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:

page.vis? body = <body> <p> Oh, querida </p> </body>

E faria exatamente o que parece.

Felizmente, não tenho usuários (suspiro), então acho que não representava muito risco à segurança.

Jon Purdy
fonte
0

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.

Tim Claason
fonte