Şimdiye kadar yaptığınız en büyük hata


33

Sunucu Hatası ile ilgili okuduğum soruya benzer şekilde, BT ile ilgili bir konumda yaptığınız en büyük hata hangisidir? Arkadaşlardan bazı örnekler:

Bir üretim sitesinde bazı işler yapmam gerekiyordu, bu yüzden canlı veritabanını beta sitesine kopyalamaya karar verdim. Oldukça standart, ama beta sitesine girdiğimde hala güncel bilgiler alıyordu. Oops! Beta veritabanını canlı siteye kopyaladım! Yedekler için Tanrıya şükür.

Ve benim için belirli bir zaman aralığında gerçekleşecek bir etkinlik için bir form oluşturdum. Katılımcılar kazanma şansı için formu dolduracaklar ve etkinlik organizatörlerine veritabanından bir CSV göndereceğiz. Veritabanına girdim ve SADECE 1 GİRİŞ, MINE'ı buldum. Soruşturma sonrasında, otomatik bir artış anahtarı unuttuğum anlaşılıyor ve sunucu ayarları nedeniyle kaybolan verileri kurtarmanın bir yolu yoktu.

Bu sorunun Stack Overflow'taki sorulara benzediğini biliyorum ama bulduğum sorular gerçek hikayeler yerine genel cevaplar alıyor gibiydi :)

Bugüne kadarki en büyük kodlama hatası / hatası nedir…


6
Guinness sorular!
Junior M,

Neden bu soru neden kapatıldı? Kendi büyük hatamı eklememe ihtiyaç duyduğumu hissediyorum: Özellikle ÜRETİME İZİN VERİLMEME karar verildikten sonra Üretim'e yerleştirildikten sonra üç saat boyunca LIVE web sitesini üç saatliğine (yani, 500 HTTP durumu) indirdim. Hepsinden kötüsü, hatayı gizlemeye çalıştım, ancak müşteri dikkatini çekti ve çok mutlu görünmedi.
Maria Ines Parnisari

Benim için kolay. Yatırımın geri çekilmesini ödedi, ancak iki kez sente dönüştürüldü. 30k yerine 3 mil ödedi. Runner up - yan tümce yan tümce. 4 bin kişiye, 1 - 10 dolarlık yatırımlarının 1800 $ 'lık gece boyunca arttığını bildirdi. Açıkçası bu müşterilerin bazıları gitti ve parayı harcadı. Finansal olarak oldukça hızlı bir şekilde kurtarıldı. Kırık bir güven ve suçluluk asla ortadan kalkmadı. Nasıl kurtarılır: sorumluluk al. Hatanı kabul et. Katkıda bulunan faktörler olsa bile hiçbir şeyi suçlamayın. Bu, onu düzeltmek için anlayış ve ekip çalışması ile karşılandı. Müşteri dürüstlüğü takdir etti.
Reasurria

Yanıtlar:


54

Her şeyi eşleştiren 'bad' WHERE Cümlesi ile bir SQL UPDATE yayınlamak.

Çıkarılan Ders: Neyin değişeceğini görmek için daima bir SEÇİM düzenleyin.


15
Veya autocommit değerini false olarak ayarlayın, böylece kaç satırın etkileneceğini görebilirsiniz.
Yevgeniy Brikman

2
Oh, bunu yaptım. Çok kötü ...
glenatron

4
Haha Sanırım kemerlerinin altındaki bazı
SQL'li

3
Bu yüzden ilk önce dev üzerinde güncellemeler yapılmalı! Doğrudan prod için sıcak düzeltmeler yok. Bunu yaparken de varsa, denetim tabloları için minnettar olun.
HLGEM

13
Bunu birisinin şifresini sıfırlamak için bir kez yaptım. Herkesin şifresini aynı şeye ayarladıktan sonra, patronuma teknik desteğin çok fazla telefon alacağını ve arayan kişiye güvenlik nedeniyle şifresini değiştirmek zorunda olduğumuzu söylememiz gerektiğini söyledim.
Barry Brown

36

Tipo en

Bu öbek üzerinde üç katı gün geçirdim:

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();
}

Hatayı gördün mü? Sonundaki noktalı virgül else if. Kaldırılan yorumlarım neden kaldırılmadığını çözemedim. Veritabanına Kazdık, AJAX ben, POST değişkenler kullanarak vardı talep error_log'ın ve alerts her yerde . Yöntemin yeniden yazılması bitti ve işe yaradı. Sonra orjinal versiyonu ile bir fark yaptım ve noktalı virgül dikkat ettim.

Yazım hatası, derlenmemiş veya bir şey tarafından önceden kontrol edilmemiş bir dilde izlemesi en güç olanıdır. Böyle bir hata bile derlenmiş bir dilde zor olacaktır. Bir değiştirme ==için =ve aniden iç görevin var if.


8
İşte Resharper gibi araçların kendileri için gerçekten geri ödeyebilecekleri - bunu bir uyarı olarak vurguluyor ve çıkarmanızı istedi.
Yaakov Ellis

24
Başlık bir (amaçlanan) pun mı? : o
Agos

3
@Rogue Coder: Tek ve çift tırnak arasındaki fark ortadan kaybolur. Beyin döngülerini endişe etmek için harcamak zamanın yanlış kullanımı. Phpbench.com
Joeri Sebrechts

2
@ back2dos: Errr ... doğru. Demek bütün bu dilleri "haXe" ye bırakmayı öneriyor musun? 2005'te ilk ortaya çıkan bir şey mi? Şununla devam et.
Josh K

10
Bir Gerçek Brace Stili'nin lehine olan argüman için teşekkür ederim. +1
eswald

28

Programlamanın çoğunlukla sıfırdan güzel şeyler üretmeyle ilgili olduğunu düşünüyorum.


1
İlk başladığımda da bu düşünceye kapıldım. Sonra diğer insanların bakımını her şeyden çok daha fazla olduğunu öğrendim. Bu yüzden şimdi yapabileceğim en iyi kodu (yorumlarla) yazmaya çalışıyorum.

2
Hala yazılacak çok sayıda yeni kod var. Birçok açık kaynaklı proje, kapalı bir sistemle aynı işlevselliği uygulayan sıfırdan kodlamayı gerektirir.
PP.

23

En büyük hatam, programlamanın kolay para olduğunu düşünmekti ...


27
Para için programlamaya girdiysen, yeni bir kariyer edinmelisin. Paranın orada olmadığı değil, öyle, ama gerçek geliştiricilerin sahip olduğu programlama için takıntılı sevgiye ihtiyacınız var, ya da çok hızlı bir şekilde yanacaksınız
johnc

1
İyi bir noktaya değindin. Para için gerçekten programlama yapmadım, ama ondan yaşamanın daha kolay olacağını düşündüm. Programlama benim tutkum ve bunu yapmak zorunda olsam bile bunu yaparım.
Marcelo de Aguiar

4
@johnc aynı çoğu meslek için giderdi. Dürüst olmak gerekirse, üniversiteye "programlama öğrenmek" için giden insanları anlamıyorum. K & R ile 14 yaşındayken başladım. "Elektronik öğrenmek" için üniversiteye gittim - ama tahmin et, ne de olsa bir programcı olarak bitirdim. En iyi müzisyenler kendilerine öğrettiler. En iyi programcılar kendilerini öğrettiler. Hayat bu.
PP.

amen kardeşim,
amenim

23

Tüm müşteri bilgilerimizi, sipariş tarihçemizi ve faturaları şirketin başlangıcına kadar giden (birkaç yıl değerinde) depolayan veritabanını yanlışlıkla sildim.

Adil olmak gerekirse, işverenim suçu biraz paylaşmak zorunda. Mac SE'de depolanan veritabanının tek kopyasına sahiplerdi (evet, uzun zaman önceydi), iş istasyonum olarak bana (yepyeni bir çalışan, kolejden ilk iş çıkarılan) ve hiçbir zaman bir yedekleme yapmayı düşünmemişlerdi.

Bu yüzden, bunun DB'nin bir kopyası olduğunu düşünüyorum, çöp kutusuna sürükledim. Dosyanın boyutu nedeniyle hemen silindi. Sonunda bir veri restorasyon hizmetine çok fazla para ödedikten sonra geri aldık, ancak yaklaşık 5 gün boyunca herhangi bir siparişi yerine getiremedik veya faturalandırmadık ve herhangi bir müşteri hakkında bilgiye erişim imkânımız olmadı. Hemen hemen (3 kişilik şirket) durma noktasına getirdi.


15
Ahh. Kendi kendine not: Her zaman bir yedekleme yapın: önceden bir yedekleme yapılması gerekse bile.
Kramii Monica'yı

1
@ Karmii: En iyi tavsiye, eller aşağı.
Chris,

@Kramii - Bu dersi kariyerimin başlarında öğrendim.
JohnFx

Kovulmadın mı?
Mateen Ulhaq

3
Dolaşacak kadar suçluluk vardı. O zamanlar sadece bir çocuktum ve muhtemelen gerçek bir şirketin DB'nin tek kopyasını masaüstüme koyması kadar aptalca bir şey yapacağını farz edeceğimden daha saf. Tecrübe bana işverenimin hazırlığını büyük bir şirkette bile abartmanın aptalca olduğunu gösterdi.
JohnFx

15

phpmyadmin sorulduğunda:

"Tam bir veritabanını DESTROY yapmak üzeresin! Gerçekten DROP DATABASE xxx'i istiyor musun?"

Enter'a basmıştım.


26
Savunma programlamasının ne zaman önemli sorunları önlemeye yardımcı olacağını gösteren harika bir örnek. Etkilerin ağır olabileceği bir şey yapıyorsanız, belki de tabloları / veritabanlarını bırakmak gibi, kullanıcının "Hayır" olarak verdiği yanıtı varsayılan yapın, böylece eylemi GERÇEKTEN kabul etmeleri gerekir.
Hugo

6
@Hugo: +1. Üniversitede (eski bir Unix / database sysadmin) profesörüm vardı, "ne zaman ciddi bir şey yapıyorsanız, ellerinizi klavyeden çıkarın ve on saniye boyunca oturun ve ne olacağını düşünün."
Bobby Tables

1
@Hugo: Ben daha ileri gidiyorum - "Tam bir veritabanını DESTROY yapmak üzeresiniz! Gerçekten DATABASE
xxx'i

3
@Hugo @Loren Pechtel - "Komple bir veritabanını DESTROY yapmak üzeresiniz! Giriş bilgilerinizle ilgili bir web araması, 'lol' işleminin birden fazla oluşumunu ortaya çıkardı ve bu nedenle bu işlem reddedildi. Lütfen yöneticinize bakın veya iletişim kurmayı öğrenin."
saat

15

Benim "en büyük hatam" olduğundan emin değilim, ama kesinlikle unutulmaz bir şeydi. Yeni bir işte ilk veya iki haftada, sitedeki en popüler sayfalardan birinde bazı öğelerin sıralama düzenini değiştirmeyi içeren küçük bir "özellik geliştirme" yaptım. Kod tabanına çok aşina değildim, ancak ilgili Karşılaştırıcıyı hızlı bir şekilde buldum ve çok fazla düşünmeden bir kaç zararsız görünümlü yönteme çağrı yaptım. Kod, yerel olarak ve KG’de sorun olmadan test edildi ve yayına girdi.

Aynı gün patronumla birde birim vardı ve yüzünde kocaman bir gülümsemeyle, ilk "özelliğimi" katıldığımdan hemen sonra yaşadığım için beni tebrik etti. Özelliği görmek için ilgili sayfayı ziyaret ederken ikimiz de baktık. Sayfa yüklenmek için 47 saniye sürdü. Kalbim battı. Sayfayı yeniledi: 53 saniye. Gülüşü kayboldu. Masama döndüm ve uzun bir akşamımı hata ayıklamak ve canlı bölgeye kritik yamalar koymakla geçirdim.

Eklediğim zararsız görünen yöntemlerden birinin, en az bir DB isabetiyle sonuçlanan bir uzak servis çağrısı olduğu ortaya çıktı. Her karşılaştırmak için arayın. Bu yüzden, 2.000'den fazla öğenin sıralandığı bir sayfada ~ 6000 (nlogn) DB isabet çekiyordum. Ahh.


DB isabeti kodunuzda belirgin miydi yoksa aradığınız bir yöntem / özellikte mi ortaya çıktı?
dbkk

DB isabet aslında bir yöntem arkasında gizlendi görünüyordu basit toplamamaddesi gibi: Ben compareTo yönteminde bir myObj.getFoo () çağrısını eklendi. İlgili alt sınıftaki JavaDoc bir DB isabet olasılığına dikkat çekti, ancak myObj arayüzündeki JavaDoc (kod yazarken neye baktım) türünden hiçbir şey bahsetmedi. Her iki durumda da, (a) benim adıma yetersiz test yapılmasının ve (b) iyi adlandırma kurallarına uymamanız durumunda ne olabileceğinin açık bir göstergesi olduğunu düşünüyorum.
Yevgeniy Brikman

daha büyük olasılıkla, test ortamının üretim ortamını temsil etmemesi (çok yaygın) durumuydu. Test ettiniz, terbiyeli bir şekilde gerçekleştirdiniz, böylece test veritabanının, üretim veritabanında yer alan verilerin sadece bir kısmını içerdiğini asla bilemeyeceğinizi (ve o zamana sahip olamayacağınızı) bildiniz.
23'te jwenting

15

Bunu yaptım:

rm -rf /bin

(Aslında, tam olarak bunu yapmadım . Bu aptalca ve affedilmez olurdu. Daha çok ince, dolambaçlı bir şekilde yaptım, bu komutun uygulanmasına neden oldu.)

Söylemeye gerek yok, Unix sistemi bu noktadan sonra kullanılamazdı ve yeniden kurulması gerekiyordu. O zamanlar başlangıçta bir sysadmin'dim ve beni denetleyen kıdemli adam anlıyordu.

Bazı iyi deneyimler geldi. Kullanılacak / bin komutlarının herhangi biri olmadan dizinlerin nasıl listeleneceğini öğrendim.

echo *

+1 bir DEC-BSD sistemindeki tek kullanıcı modundan sadece Bourne kabuğu yapıları kullanan ls ve kedi simülasyonu gibi püf noktalarını öğrendi
Arcege

11

Müşteri, temel olarak bir etkinlik hakkında kişiselleştirilmiş bir e-posta gönderecek olan tüm kullanıcı tabanına bir posta gönderilmesini ister ve e-postadaki bir bağlantıyı tıkladıklarında, verileri yarıya kadar doldurulmuş bir forma otomatik olarak kaydeder.

Kodu yazıyorum, kodu test ediyorum, düzgün çalışıyor, bağlantılar çalışıyor, oldukça düzgün. Her şeyi kontrol edip iki kez kontrol ettikten sonra canlı listeye geçiyorum ve gidiyoruz.

Canlı liste, örnek verilerimden çok daha büyük ve posta sunucusu düşüyor. Konsol uygulamamı durdurmam gerekiyor, sonra durduğum yerden yeniden başlatmam gerektiğini anladım. Neyse ki bu özelliğin eklenmesi çok zor değil ve posta gönderenin hangi kullanıcılara gittiğini kaydettim; posta sunucusunun yetişmesine izin vermek için gidiyoruz.

Ne yazık ki bir şekilde tüm kod güncellememi doğru alamadım. Yaptıklarımın ayrıntılarını hatırlamıyorum, ancak kullanıcı verilerini alma sorgusu bir veri kümesi alıyordu, karma oluşturma sorgusu bir başkasını alıyordu, böylece bir kullanıcı bağlantıyı tıklatırsa bir hesap detaylarından başka birinin kişisel verilerini içeren form . Ve bu, listede çok sayıda rekabetçi küçük işletmenin bulunduğu bir niş sektörde.

Telefonun müşteri ofisinde çalmaya başlaması uzun sürmedi ...

İstifamı teklif etmeme yol açan tek hata buydu.


Gerçek veriler için +1, örnek verilerden çok daha büyük :-(
nakedfanatic

IMO bu en kötülerinden biri> _ <
sevenseacat

7

Bir zamanlar süzgeçsiz bir çapraz birleştirme kullandım. Verilerin bir kısmıyla test veritabanında gayet iyi çalıştı. Dağıtıldığında, ortalama bir sorguda ~ 60M satırlarla sonuçlandı.


14
Aslında en büyük hatanız, uygun büyüklükte bir veritabanına karşı gelişme göstermemek oldu. Büyük bir üretim veritabanını geliştirmek için asla küçük bir test veri tabanı kullanmayın. Doğru boyutlu bir veritabanına sahip olmadığınız sürece performans kodunu yazamazsınız.
HLGEM

7

100 000 dolarlık bir lazer tarayıcıyı çarptım.

Kontrolör pozisyonları tamsayı olarak saklıyordu, bu yüzden asıl pozisyonu inç cinsinden almak için her şeyi 10000'e böldüm.

Son hane 0 iken, Z ekseni 10 kat uzaktaydı.

Hilelerity ortaya çıktı


6

“Yeniden yazma yapmamız gerekiyor.”

Diğer taraftan, beş yaşında bir VB6 uygulamasıydı.


5

Menajerimin kaşlarımı sevdiğim bir işi bırakmak için dövmeme izin verdi. Bir şeyleri mahvetmesine, kovulmasına izin vermeliydim, sonra da adım atıp parçaları temizlemeliydim. Bunun yerine o zamandan beri bıraktım ve pişman oldum.


17
Yöneticiler nadiren böyle şeylerden kovulurlar. Yönetici seviyesine ulaşmak için arkanızı örtmekte çok iyi olmalısınız; Muhtemelen şirketten ayrıldığın anda günah keçisi oldun. Belki farklı halledebilirdin, ama kendini yenme.
Mark Ransom

Dağılsaydı, suçlanırdın ve kovulurdun (ya da en azından utançtan vazgeçene kadar mutsuz bir zaman geçirirdin).
24'te jwenting

4

Yedi yıl önce, henüz tanışmadığım patronum ve şirket sahibim, iş için bu kadar yeniydim, araştırma web sitemizdeki birkaç potansiyel müşteriye bir demo yaptı. Üyelik ücretleri düşük ila beş orta rakam arasındaydı, bu yüzden bu demolar acemi şirketimiz için çok önemliydi.

Demolarının ortasında, bazı veritabanı çalışmaları yaparken, canlı veritabanında bir değişiklik yaptım ve her ankette yer alan her anket sorusunu aynı metinle güncelledim; NEREDE. İş arkadaşım ve ben o zamanlar sitenin o bölümünü demonte etmediğini umarak, minnetle asla ortaya çıkmayan tüm kapaklarda e-postayı beklemek umuduyla yedek için çabalıyoruz.

İyi taraf patron nihayet bir geliştirme kutusu için sallandı.


3

Yıllar boyunca kurulan pek çok kopuk bağlantının bir kısmını denemek ve temizlemek için Xenu'nun bağlantı askısı kullanıyordum (çoğu, şaşırtıcı bir şekilde wiki'den paylaşılan ağ sürücüsüne olan bağlantıydı).

Yaklaşık 30 dakika sonra, bazı yeni öğelerin bazı garip resimlere sahip olduğunu fark etmeye başladım, sanki insanlar sistemde bulunan grenli eski stok fotoğraflarından bazılarını kullanmış gibi görünüyorlardı, ancak belki de daha yeni bir şey olmadığını düşünmüştüm. istediklerini vardı.

10 dakika sonra, öne çıkan öğelerin bir nedenden dolayı rastgele değiştiğini fark ettim. Bu noktada, neler olup bittiğine dair bana ürküyordu. İntranet, Windows kimlik doğrulaması kullanır ve bazı işlevler (haber görüntülerinin ve öne çıkan öğelerin seçilmesi gibi) HTTP GET isteklerine yanıt vermek için kodlanmıştır. Bağlantı denetleyicisi, kimlik doğrulamamı kullanıyordu ve yönetici tarafındaki sayfalara göz gezdirdi, sadık bir şekilde işini yapıyordu ve aşağıdakiler de dahil olmak üzere her zaman takip etti

/admin/displayItems/icon_update.asp?image=eastereggs.jpg&itemID=3174


7
Bu birçok insan nasıl öğrendiğini gibi durduğu zaman 's kullanımı GET uygun ve' s uygun POST ne zaman kullanılacağını
Oli

Kabul ediyorum, intraneti geliştirmek için çalışmaya başlamak üzereydim ve bu, GET ve POST'un doğru bir şekilde kullanım şartlarının yerine getirilmesini sağladı. ASP MVC ayrıca bunu kolay ve sezgisel hale getirir.
Chao

1
gerçekten senin hatan değil , ama yine de iyi bir hikaye :-)
Dean Harding

3

Şimdiye kadar tek mide bükümlü, kalp atış hızımı artıran, aniden sıcak ve kaşıntılı bir hatam, NEREDE cümlesi olmadan bir UPDATE sorgusu yapmaktı. Neyse ki, son 15 dakikada bir yedekleme yapıldı ve veriler çok sık değişmedi, bu da hiç kimsenin haberi olmadan 10 dakika içinde verileri tamamen geri yükleyebileceğim anlamına geliyordu.

Çok kötü bir şey yok ama bazı yakın çağrılar yaptım. Onlar ve yakın çağrılar olmaya devam ediyorlar çünkü bu sektörde her şeyi mahvedebilecek herşeyin yolunda gitmesi için yeterince korku hikayeleri duydum.


1
Sizler DB hatalarını yapan siz hiç geri alma çağrısı yapmıyor musunuz?
Jé Queue

@Xepoch, bu yalnızca bir işlem başlattığınızda yardımcı olur
CaffGeek

1
@Chad, genellikle tüm veri aramalarının dolaylı olarak işlemsel olması gerektiğini varsaymamalı mıyız?
Jé Queue

2
@Xepoch, asla varsayma.
CaffGeek

1
@ Char, işlemlerdeki tüm DB etkileşimlerini sürdürmek için kişisel bir tercihim var. Bakanlar, risk taşırlar veya umursamayan iş durumları var. Şartname varsayımı ve MANDATE, kod işlemlerini işlemsel DB yönetimi ile başlatacağımız ve sürdüreceğimizdir.
Jé Queue

3

Üzerinde çalıştığım bir robot için, her koşunun bir günlük dosyasını tutuyoruz. Her ikisi de bu günlük klasörlerini üreten robot ve bir simülatörümüz var. Simülatörün günlük dosyaları işe yaramaz, ancak robotlar günlük dosyaları çok faydalıdır ve sonsuza dek saklanır.

Robotun kendisi sınırlı bir sabit disk alanına sahip olduğundan, başka bir bilgisayara aktarılıyor ve orada depolanıyorlar. Bu bilgisayar, robotla iletişim kurmak için ana işletim bilgisayarı olur.

Birkaç ay önce robot üzerinde çalışmaya daha yeni başlamıştım ve bunu bilmiyordum. İşletim bilgisayarındaki günlüklerin, simülatör tarafından üretilen ve silinen yararsız olduğunu düşündüm. Eski kütüklerin hepsini kaybettik çünkü uygun bir yedekleme yoktu.


8
Lanet ... Ben robotlar üzerinde çalışmaya istiyorum! Bütün gün tek yaptığım kötü web siteleri kurmak.
Dan Ray

2

Yazılımımızın bir sürümünü derleme bilgisayar yerine bilgisayarıma daha hızlı bir şekilde (yaklaşık 4 saat daha hızlı, bu da ertesi gün QA'ya gidebileceği anlamına gelir) inşa etti ve yayıncı en kısa sürede istedi.

Bilgisayarımda hata ayıklama için özel bir tanımladım; bu, QA'da algılanmayan bir hataya neden oldu. Yalnızca 4 haftalık doğrulama testinin sonunda tespit ettiler, ancak doğrulama işleminde başarısız olması yeterince kötüydü.


2

Geliştirme sürümü yerine tesadüfen üretim veritabanını bırakın. Hangi sunucuda çalıştığımı görmedim. Neyse ki, son yedekleme 4 saat önce üretildi ve kullanıcı sistemde çok fazla değişiklik yapmadı, bu yüzden büyük veri kaybı yaşanmadı.


Bunu yapan bir meslektaşım vardı. Sadece prodüksiyonu değil, yerel kopyasını bıraktığını düşünüyordu. Hepimiz çalışıyorduk ve onun 'OH SH **' gittiğini duydum. Eğlenceli bir öğleden sonraydı.
Tyanna,

2

Yaptığım en büyük hata, geliştirme makinemin kaynak kontrolünde çalışmamdı. Sabit diskim düştü ve haftalar süren işimi kaybettim. Zor öğrenilen bir ders ve bir daha asla olmasına izin vermeyeceğim bir şey.


Benim hatam değil ama ilgili. Şirket Onun derhal bir "rm -r /" idam sürüm kontrol sunucusuna (?? DMZ Whazda), bir davetsiz misafir root erişimi vererek tehlikeye onların webserverların vardı biri için çalışmış
jwenting

2

Java'da dize karşılaştırması ==yerine kullanılmasıequals


13
Yaptığın en büyük hata bu mu?
Chris,

Bu, ==referans karşılaştırmanın yapıldığı Java'da bir problemdir . C # ==dizeleri üzerinde bir değer karşılaştırma yapar aynı .Equals() Yani, bazı farklılıklar vardır, burada Jon Skeet cevabını bkz: stackoverflow.com/questions/3678792/...
Tim Goodman

2
@Tim: Bu, "Yaptığın en büyük hatanın" nasıl olduğunu hala cevaplamıyor ... ... En azından sonuçları hakkında biraz daha iyi olur ...
Dean Harding

En çok cevaplanan cevap yazım hatası ile ilgiliyse, buradaki cevabım nasıl farklı? Eğer acemi olduysanız, bu hatayı yapmak hata ayıklamak neredeyse imkansızdır ve bütün gün sizi sinirlendirebilir.
nanda

@ Dean: Bu şimdiye kadar yaptığım en büyük hata değildi ... Ben sadece davranışlarındaki farkı C # vs Java ile açıklıyordum
Tim Goodman

1

Müdürüme söyledim, çünkü YAŞI OLDU ve sahip olduğumdan daha uzun bir deneyime sahip, ona saygı duyacağım anlamına gelmiyor. Saygı duyacağım tek şey, ABILITY. Böylesine acıklı bir ifadenin sonuçlarıyla yüzleşmek zorunda değildim, çünkü daha genç bir programcıydım. Geriye dönüp baktığımda bu benim hatam gibi görünüyor. Benim sağduyum \ alçakgönüllülük neredeydi? :-(


2
Kısmen sizinle aynı fikirdeyim, çünkü birileri daha fazla deneyime sahipse (yıl olarak) onun daha iyi bir programcı olduğu anlamına gelmez. Orada, özgeçmişlerine 'xx yıllık tecrübe' yazabilecek, fakat ne yaptıkları hakkında hiçbir fikre sahip olmayan pek çok programcı var.
Bobby,

Yol boyunca aptalca bir hata yapmış olma ihtimalleri daha yüksektir, burada listelenenlere benzer, bu daha dikkatli bir geliştirici olsa bile
johnc

Açık olmak gerekirse, hata bu tutumu değildi. Hata, bu tutuma sahip olduğunuzu söylemekti.
Dan Ray

Bunu yıllar boyunca birçok insana söylemek istedim.
Reasurria

1

Bu, bu ay bir meslektaşıma oldu.

Birçok cep telefonuna SMS gönderirken oluşan hatayı düzeltiyordu. Genellikle bu mesajlar aslında maliyetten tasarruf etmek için gönderilmez, ancak veritabanımızdaki bir yanlış yapılandırma nedeniyle gönderildikleri.

Maliyet: Bir aylık SMS trafiği.


bu ucuz! :)
jwenting

1

Bir yöneticinin isteği üzerine /etc/sudoersbir makineden diğerine kopyaladım (eldeki sorunu çözmeseydi bile, ama mesele bu değil). Ne yazık ki, sudosahibinin ve izinlerinin tamamen yanlış olduğunu fark etmeden kopyalanan dosyayı yerine taşımak için kullanılır . Bu noktada, hiç kimsenin kök kabuğu açılmadı, kimse yapamadı sudove kabuğu ayarlandığı için kimse kök olarak giriş yapamadı /bin/false. Makine uzak bir veri deposundaydı ...


1

Bir dizindeki her dosya için meta veri dosyaları oluşturmak istedim (yani her dosya somedir/foo.biniçin bir dosya oluşturmak isterdim somedir/foo.bin.meta). Aptalca bir nedenden dolayı Python ile bir dosya akışını açıp kapatarak dosyaları oluşturmaya karar verdim:

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

Hatta bazı aptalca nedenlerden dolayı, bu betiği sabit diskimdeki bir dizine karşı test etmenin zekice olduğunu düşündüm. Ancak çalıştırdıktan sonra , dosya adını iletmeden önce gerçekten değiştirmeyi unuttuğumu openve bu dizindeki her bir dosyayı yalnızca kestiğimi fark ettim (ouch).

Neyse ki bu kişisel bir bilgisayardaydı ve önemli hiçbir şeye zarar vermedi, ama yine de dersimi öğrendim.


1

İsveç'in en büyük telekom şirketlerinden müşteri desteğini elinde tutan bir şirket için çalışıyordum. Sunucumuzda gelen arama sırasını düzenleyen bir yazılımımız vardı, kaç tane çağrı yapabiliriz vb. İşe yaramazsa, hiçbir arama alamadık ve müşterilerimiz herhangi bir destek alamadı.

Aaaaanyway, yazılımda küçük bir değişiklik yaptım. Bir servis penceresinin değiştirilmesini bekleyebilirdim ama düşündüm ki "Hey, hizmeti yeniden başlatmak bir dakika sürecek, neden rahatsız edici. Fortune cesurca davranıyor". Böylece yeniden başlattım, ne yazık ki iplik kilitlendi, bu yüzden değiştiremedim. Paniğe başlamadan Makineyi hızlı bir şekilde yeniden başlatmaya karar verdim (uzaktan kumanda ediyordum). Ne yazık ki panikimde bunun yerine "yükleme güncellemeleri ve kapatma" yı tıklayın: P

Söylemeye gerek yok, İsveç’te tekrar başlayabilmemiz için önümüzdeki yarım saat boyunca verilecek çok fazla müşteri desteği yoktu.

Bir meslektaşım benden daha kötüydü, bir gece otomatik sesli yanıt sistemindeki hataları ayıkladık ve sayıyı cep telefonuna yönlendirdi. Geri çevirmeyi unuttuğu, ertesi gün izinli olduğu günü bıraktı ve cep telefonunu işte bıraktı. O gün neden sürekli çaldığını merak ediyoruz :)


1

Argh, 11:00, laboratuar kapanıyor, çabuk, çabuk ...

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

Tanrım hayır! FFS. PS seni kastettim ****!


Dil stili için özür dileriz, özgünlük için gereklidir.
Orbling

0

Bir süre önce JS'yi kodlarken, "1" (bir) ile "l" "küçük L" arasında ayrım yapamadım. Ben yazarken bile bu cevabı editörde neredeyse aynı görünüyor!


Neden aşağı oy?
Gopi

0

Tüm HTTP parametrelerinin örtük olarak değişkenler olarak genişletildiği erken bir sürümünde bir site şablon dili yaptım . Bu, şöyle bir URL yazabileceğiniz anlamına geliyordu:

page.vis? body = <body> <p> Ah canım </p> </body>

Ve aynen göründüğü gibi olacaktı.

Neyse ki benim kullanıcı (iç çekişme) yok, bu yüzden çok fazla bir güvenlik riski olmadığını düşünüyorum.


0

Kesinlikle TSQL yanlış anlama - bir editör penceresinde çok fazla TSQL cümlesi. Biraz yorgundum ve insanlar beni sola ve sağa böldüler ve 47.000 kayıt adresini, şehri, eyaleti ve zip-up'ları güncelleyen bir emir verdim. Olsa da, yaklaşık 25 dakika içinde sabit vardı.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.