Sai lầm lớn nhất bạn từng mắc phải [đóng]


33

Tương tự như câu hỏi tôi đọc trên Server Fault, lỗi lớn nhất bạn từng mắc phải ở vị trí liên quan đến CNTT là gì. Một số ví dụ từ bạn bè:

Tôi cần thực hiện một số công việc trên một trang sản xuất vì vậy tôi quyết định sao chép cơ sở dữ liệu trực tiếp sang trang beta. Khá chuẩn, nhưng khi tôi đến trang beta, nó vẫn lấy thông tin lỗi thời. ÔNG! Tôi đã sao chép cơ sở dữ liệu beta qua trang web trực tiếp! Cảm ơn chúa đã sao lưu.

Và đối với tôi, tôi đã tạo một biểu mẫu cho một sự kiện sẽ được tổ chức trong một khoảng thời gian cụ thể. Người tham gia sẽ điền vào biểu mẫu để có cơ hội giành chiến thắng và chúng tôi sẽ gửi cho người tổ chức sự kiện một CSV từ cơ sở dữ liệu. Tôi đã đi vào cơ sở dữ liệu, và chỉ tìm thấy 1 ENTRY, MINE. Khi điều tra, có vẻ như tôi đã quên một phím tăng tự động và do thiết lập máy chủ không có cách nào để khôi phục dữ liệu bị mất.

Tôi biết câu hỏi này tương tự như câu hỏi trên Stack Overflow nhưng những câu hỏi tôi tìm thấy dường như nhận được câu trả lời chung chung thay vì câu chuyện thực tế :)

Lỗi / lỗi mã hóa lớn nhất từ ​​trước đến giờ là gì


6
câu hỏi guinness!
Junior M

Tại sao o tại sao câu hỏi này được đóng lại? Tôi cảm thấy cần phải thêm một sai lầm lớn của riêng mình: Tôi đã gỡ xuống một trang web TRỰC TIẾP trong ba giờ (tức là 500 trạng thái HTTP) sau khi triển khai vào Sản xuất sau khi được thông báo cụ thể KHÔNG ĐỔI ĐẾN SẢN XUẤT. Tệ nhất là, tôi đã cố gắng che giấu lỗi lầm, nhưng khách hàng nhận thấy và có vẻ không vui lắm.
Maria Ines Parniari

Dễ dàng cho tôi một. Trả tiền rút tiền đầu tư nhưng chuyển đổi thành xu hai lần. Được trả 3 triệu thay vì 30k. Á quân - mệnh đề SQL xấu. Thông báo cho mọi người 4k rằng các khoản đầu tư $ 1 - $ 10 của họ đã tăng $ 1800 qua đêm. Rõ ràng một số khách hàng đã đi và tiêu tiền. Phục hồi khá nhanh về tài chính. Niềm tin tan vỡ và cảm giác tội lỗi không bao giờ thực sự biến mất. Cách phục hồi: chịu trách nhiệm. Nhận lỗi của bạn Đừng đổ lỗi cho bất cứ điều gì khác ngay cả khi có các yếu tố đóng góp. Điều này đã được đáp ứng với sự hiểu biết và nỗ lực của nhóm để sửa chữa nó. Khách hàng đánh giá cao sự trung thực.
Reasurria

Câu trả lời:


54

Phát hành SQL CẬP NHẬT với Điều khoản WHERE 'xấu' phù hợp với mọi thứ.

Bài học rút ra: Luôn luôn đưa ra một CHỌN trước để xem những gì sẽ được thay đổi.


15
Hoặc đặt autocommit thành false để bạn có thể thấy có bao nhiêu hàng sẽ bị ảnh hưởng.
Yevgeniy Brikman

2
Ồ, tôi đã làm điều đó. Rất khó chịu ...
glenatron

4
Haha Tôi nghĩ rằng tất cả mọi người có một số SQL dưới vành đai của họ đã thực hiện điều này vào một lúc nào đó, bao gồm cả tôi
billy.bob

3
Đó là lý do tại sao cập nhật nên được thực hiện trên dev đầu tiên! Không có sửa chữa nóng trực tiếp để prod. Và rất biết ơn các bảng kiểm toán nếu bạn có chúng khi bạn làm điều này.
HLGEM

13
Tôi đã làm điều đó một lần để thiết lập lại mật khẩu của ai đó. Sau khi tôi đặt mật khẩu của mọi người giống nhau, tôi chỉ nói với sếp rằng bộ phận hỗ trợ kỹ thuật sẽ nhận được rất nhiều cuộc gọi và chúng tôi nên nói với người gọi rằng chúng tôi phải thay đổi mật khẩu của họ vì lý do bảo mật.
Barry Brown

36

Typo

Dành ba ngày cho phần này:

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

Thấy lỗi không? Đó là dấu chấm phẩy ở cuối else if. Tôi không thể hiểu tại sao các bình luận bị xóa của tôi không xóa. Đi sâu vào cơ sở dữ liệu, yêu cầu AJAX mà tôi đang sử dụng, các biến POST, có error_logalerts ở khắp mọi nơi . Đã kết thúc việc viết lại phương pháp và nó đã làm việc. Sau đó, tôi đã làm một khác với phiên bản gốc và nhận thấy dấu chấm phẩy.

Typo là khó nhất để theo dõi một ngôn ngữ không được biên dịch hoặc kiểm tra trước bởi một cái gì đó. Ngay cả các lỗi như thế này cũng sẽ khó khăn trên một ngôn ngữ được biên dịch. Thay đổi ==để =và đột nhiên bạn có nhiệm vụ bên trong một if.


8
Đây là nơi mà các công cụ như Resharper thực sự có thể tự trả lại - nó sẽ nhấn mạnh đây là một cảnh báo và nhắc bạn xóa nó.
Yaakov Ellis

24
Là tiêu đề một (ý định) chơi chữ? : o
Agos

3
@Rogue Coder: sự khác biệt giữa dấu ngoặc đơn và dấu ngoặc kép rất nhỏ. Đó là một sự lạm dụng thời gian để dành chu kỳ não lo lắng về nó. Xem bài kiểm tra ở cuối trang phpbench.com
Joeri Sebrechts

2
@ back2dos: Ơ ... đúng rồi. Vì vậy, bạn khuyên bạn nên bỏ tất cả những ngôn ngữ được đề cập có lợi cho haXe? Một cái gì đó xuất hiện lần đầu tiên vào năm 2005? Đi thẳng về phía trước với điều đó.
Josh K

10
Cảm ơn bạn đã tranh luận ủng hộ Phong cách One True Brace. +1
eswald

28

Nghĩ rằng lập trình chủ yếu là về việc xây dựng những thứ mới mẻ từ đầu.


1
Khi tôi mới bắt đầu, tôi cũng có suy nghĩ này. Sau đó tôi học được rằng có nhiều sự bảo trì của các dân tộc khác hơn bất cứ điều gì. Đó là lý do tại sao bây giờ tôi cố gắng viết mã tốt nhất (có ý kiến) mà tôi có thể.

2
Vẫn còn nhiều mã mới để viết. Rất nhiều dự án nguồn mở yêu cầu mã hóa từ đầu thực hiện chức năng tương tự như một hệ thống khép kín.
PP.

23

Sai lầm lớn nhất của tôi là nghĩ rằng lập trình là tiền dễ dàng ...


27
Nếu bạn tham gia lập trình để kiếm tiền, bạn sẽ có một sự nghiệp mới. Không phải là tiền không có ở đó, nhưng bạn cần tình yêu ám ảnh về lập trình mà các nhà phát triển thực sự có, hoặc bạn sẽ kiệt sức rất nhanh
johnc

1
Bạn đã làm một điểm tốt. Tôi thực sự không tham gia lập trình vì tiền, nhưng tôi thực sự nghĩ rằng việc kiếm sống từ đó sẽ dễ dàng hơn rất nhiều. Lập trình là niềm đam mê của tôi và tôi sẽ làm điều đó ngay cả khi tôi phải trả tiền.
Marcelo de Aguiar

4
@johnc cũng sẽ đi cho hầu hết các ngành nghề. Tôi thực sự không hiểu những người đi học đại học để "học lập trình". Tôi bắt đầu khi tôi 14 tuổi với K & R. Tôi đã đi đến trường đại học để "học điện tử" - nhưng đoán xem, cuối cùng tôi đã trở thành một lập trình viên. Các nhạc sĩ giỏi nhất đã tự dạy mình. Các lập trình viên giỏi nhất đã tự dạy mình. Đó là cuộc sống.
PP.

amen anh, amen
Misters 24/12/13

23

Vô tình xóa cơ sở dữ liệu lưu trữ tất cả thông tin khách hàng, lịch sử đặt hàng và hóa đơn của chúng tôi trở lại khi bắt đầu công ty (giá trị vài năm).

Để công bằng, chủ nhân của tôi phải chia sẻ một số lỗi. Họ đã có bản sao duy nhất của cơ sở dữ liệu được lưu trữ trên Mac SE (vâng, đây là một thời gian dài trước đây) mà họ đã cho tôi (một nhân viên mới, công việc đầu tiên ra khỏi trường đại học) làm máy trạm của tôi và thậm chí chưa bao giờ xem xét việc sao lưu.

Vì vậy, nghĩ rằng đó là một bản sao của DB tôi đã kéo nó vào thùng rác. Vì kích thước của tập tin, nó đã xóa nó ngay lập tức. Cuối cùng chúng tôi đã lấy lại được sau khi trả một khoản tiền vô duyên cho dịch vụ khôi phục dữ liệu, nhưng trong khoảng 5 ngày chúng tôi không thể thực hiện hoặc lập hóa đơn cho bất kỳ đơn đặt hàng nào và không có cách nào để truy cập thông tin về bất kỳ khách hàng nào. Nó khá nhiều đã đưa (công ty 3 người) vào bế tắc.


15
Ôi. Lưu ý đến bản thân: Luôn luôn sao lưu: ngay cả khi đã có sẵn một bản sao lưu.
Kramii phục hồi Monica

1
@Karmii: Lời khuyên tốt nhất, nương tay.
Chris

@Kramii - Vui vì tôi đã học được bài học đó sớm trong sự nghiệp của mình.
JohnFx

Bạn không bị đuổi việc à?
Mateen Ulhaq

3
Có đủ đổ lỗi để đi xung quanh. Lúc đó tôi chỉ là một đứa trẻ và có lẽ còn ngây thơ hơn tôi ngày nay khi cho rằng một công ty thực sự sẽ làm bất cứ điều gì ngớ ngẩn như đặt bản sao duy nhất của DB lên máy tính để bàn của tôi. Kinh nghiệm đã cho tôi thấy rằng thật ngu ngốc khi đánh giá quá cao sự chuẩn bị của chủ nhân, ngay cả tại một công ty lớn.
JohnFx

15

khi phpmyadmin hỏi:

"Bạn sắp phát hiện một cơ sở dữ liệu hoàn chỉnh! Bạn có thực sự muốn DROP DATABASE xxx không?"

Tôi nhấn Enter.


26
Ví dụ tuyệt vời khi lập trình phòng thủ sẽ giúp ngăn chặn các vấn đề lớn. Nếu bạn đang làm điều gì đó mà hậu quả có thể nghiêm trọng, như có thể bỏ bảng / cơ sở dữ liệu, mặc định phản hồi của người dùng là "Không" để họ phải HOẠT ĐỘNG đồng ý với hành động.
Hugo

6
@Hugo: +1. Tôi đã có một giáo sư tại uni (ex Unix / cơ sở dữ liệu sysadmin), người thường nói "bất cứ khi nào bạn làm việc gì nghiêm trọng, hãy luôn rời tay khỏi bàn phím và ngồi lên chúng trong khoảng mười giây và suy nghĩ về những gì sắp xảy ra."
Bàn Bobby

1
@Hugo: Tôi đi xa hơn - "Bạn sắp phát hiện một cơ sở dữ liệu hoàn chỉnh! Nếu bạn thực sự muốn DROP DATABASE xxx, hãy gõ XÓA:"
Loren Pechtel

3
@Hugo @Loren Pechtel - "Bạn sắp phát hiện một cơ sở dữ liệu hoàn chỉnh! Một tìm kiếm trên web của bạn đã xuất hiện nhiều lần xuất hiện của 'lol', và do đó hành động này đang bị từ chối. Vui lòng xem quản trị viên của bạn hoặc tìm hiểu cách giao tiếp."
gièm pha

15

Không chắc đó là "sai lầm lớn nhất" của tôi, nhưng chắc chắn là một điều đáng nhớ. Trong một hoặc hai tuần đầu tiên của tôi tại một công việc mới, tôi được chỉ định thực hiện một "cải tiến tính năng" nhỏ liên quan đến việc sửa đổi thứ tự sắp xếp của một số mục trên một trong những trang phổ biến nhất trên trang web. Tôi không quá quen thuộc với cơ sở mã, nhưng nhanh chóng tìm thấy Trình so sánh có liên quan và thêm các cuộc gọi vào một vài phương thức trông vô hại bên trong phương thức so sánh mà không suy nghĩ quá nhiều về nó. Mã được thử nghiệm cục bộ và trong các vấn đề QA w / o và đi vào hoạt động.

Tôi đã có một ngày 1 với sếp của tôi vào ngày hôm đó và với một nụ cười lớn trên khuôn mặt của anh ấy, anh ấy chúc mừng tôi đã nhận được "tính năng" đầu tiên của tôi ngay sau khi tham gia. Cả hai chúng tôi đều nhìn vào khi anh ấy truy cập trang tương ứng để thấy tính năng này hoạt động. Trang mất 47 giây để tải. Lòng nặng trĩu. Anh làm mới trang: 53 giây. Nụ cười của anh tan biến. Tôi trở lại bàn làm việc của mình và dành một buổi tối dài để gỡ lỗi và đẩy các bản vá quan trọng lên trang web trực tiếp.

Hóa ra một trong những phương thức tìm kiếm vô hại mà tôi đã thêm là một cuộc gọi dịch vụ từ xa dẫn đến ít nhất một lần truy cập DB. Trong mỗi cuộc gọi so sánh. Vì vậy, trên một trang có hơn 2.000 mục được sắp xếp, tôi đã tạo ra ~ 6000 (nlogn) lượt truy cập DB. Ôi.


DB có rõ ràng trong mã của bạn không, hay nó đã xảy ra trong một số phương thức / thuộc tính mà bạn đang gọi?
dbkk

Lần truy cập DB thực sự bị ẩn đằng sau một phương thức trông giống như một getter đơn giản: Tôi đã thêm một lệnh gọi myObj.getFoo () trong phương thức so sánh. JavaDoc trên lớp con có liên quan đã lưu ý đến khả năng của DB hit, nhưng JavaDoc trên giao diện myObj (đó là những gì tôi đã xem khi viết mã) không đề cập gì đến loại này. Trong cả hai trường hợp, tôi nghĩ rằng đó là một minh chứng rõ ràng về (a) thử nghiệm không đầy đủ thay mặt tôi và (b) điều gì có thể xảy ra nếu bạn không tuân theo các quy ước đặt tên tốt.
Yevgeniy Brikman

nhiều khả năng đó là trường hợp (rất phổ biến) của môi trường thử nghiệm không đại diện cho môi trường sản xuất. Bạn đã kiểm tra nó, nó thực hiện tốt, vì vậy bạn kết luận là tốt, không bao giờ biết (và sau đó bạn không thể có) rằng cơ sở dữ liệu kiểm tra chỉ chứa một phần dữ liệu có trong cơ sở dữ liệu sản xuất.
jwenting

15

Tôi đã làm điều này:

rm -rf /bin

(Trên thực tế, tôi đã không làm chính xác điều đó. Điều đó thật ngu ngốc và không thể tha thứ được. Tôi đã thực hiện nó theo cách vòng vo tinh tế hơn, dẫn đến thực chất lệnh đó được thực thi.)

Không cần phải nói, hệ thống Unix đã không sử dụng được sau thời điểm đó và phải được cài đặt lại. Tôi là một sysadmin bắt đầu vào thời điểm đó và người đàn ông cao cấp giám sát tôi là sự hiểu biết.

Một số tốt đến từ kinh nghiệm. Tôi đã học cách liệt kê các thư mục mà không cần sử dụng bất kỳ lệnh / bin nào.

echo *

+1 các thủ thuật đã học như mô phỏng ls và cat chỉ sử dụng các cấu trúc shell Bourne từ chế độ người dùng đơn trên hệ thống DEC-BSD
Arcege

11

Khách hàng muốn gửi thư đến toàn bộ cơ sở người dùng của họ về cơ bản sẽ gửi email được cá nhân hóa về một sự kiện và khi họ nhấp vào liên kết trong email sẽ tự động đăng nhập chúng vào một biểu mẫu với một nửa dữ liệu của họ được điền vào.

Tôi viết mã, kiểm tra mã, nó hoạt động tốt, các liên kết hoạt động, nó khá trơn tru. Sau khi kiểm tra và kiểm tra lại mọi thứ, tôi chuyển sang danh sách trực tiếp và chúng tôi đi.

Danh sách trực tiếp lớn hơn đáng kể so với dữ liệu mẫu của tôi và máy chủ thư bị đổ. Tôi phải dừng ứng dụng bảng điều khiển của mình, sau đó nhận ra rằng tôi sẽ phải khởi động lại ứng dụng từ nơi dừng. May mắn là tính năng này không quá khó để thêm vào và tôi đã ghi lại những gì người dùng mà mailout đã truy cập, do đó, đã có máy chủ mail và chạy lại, và cấu hình lại mã để có thể khởi động lại từ điểm mà nó thất bại trước đó và tạm dừng để cho máy chủ bắt kịp, chúng ta đi.

Thật không may, bằng cách nào đó tôi đã xoay sở để không cập nhật tất cả mã của mình. Tôi không nhớ chi tiết về những gì tôi đã làm, nhưng truy vấn để lấy dữ liệu người dùng là lấy một bộ dữ liệu, truy vấn để tạo băm sẽ nhận được một dữ liệu khác, vì vậy nếu người dùng nhấp vào liên kết họ sẽ truy cập vào biểu mẫu có chứa dữ liệu cá nhân của người khác từ chi tiết tài khoản của họ. Và điều này trong một ngành công nghiệp thích hợp nơi có rất nhiều doanh nghiệp nhỏ cạnh tranh trong danh sách.

Không mất nhiều thời gian để điện thoại bắt đầu đổ chuông tại văn phòng của khách hàng ...

Đó là sai lầm duy nhất cho đến nay đã dẫn đến việc tôi từ chức.


+1 cho dữ liệu thực lớn hơn đáng kể so với dữ liệu mẫu :-(
khỏa thân

IMO đây là một trong những điều tồi tệ hơn> _ <
Sevenseacat

7

Tôi đã từng sử dụng một tham gia chéo mà không có bộ lọc. Chỉ hoạt động tốt trên cơ sở dữ liệu thử nghiệm với một phần dữ liệu. Khi được triển khai, nó đã kết thúc với ~ 60M hàng trong một truy vấn trung bình.


14
Trên thực tế, sai lầm lớn nhất của bạn là không phát triển dựa trên cơ sở dữ liệu có kích thước phù hợp. Không bao giờ sử dụng cơ sở dữ liệu thử nghiệm nhỏ để phát triển cho cơ sở dữ liệu sản xuất lớn. Bạn không thể viết mã biểu diễn trừ khi bạn có cơ sở dữ liệu đúng kích cỡ.
HLGEM

7

Tôi đã đánh sập một máy quét laser 100 000 đô la.

Bộ điều khiển đang lưu trữ các vị trí dưới dạng số nguyên nên tôi chia mọi thứ cho 10000 để có được vị trí thực tế tính bằng inch.

Khi chữ số cuối cùng là 0, nó đã bị bỏ qua nên trục Z cách xa 10 lần.

Hillarity xảy ra sau đó


6

"Chúng tôi cần phải viết lại."

Mặt khác, nó là một ứng dụng VB6 năm tuổi.


5

Cho phép người quản lý của tôi để đánh bại tôi để rời khỏi một công việc tôi yêu thích. Lẽ ra tôi nên để anh ta làm mọi thứ rối tung lên, bị đuổi việc và sau đó tôi nên bước lên và dọn dẹp các mảnh. Thay vào đó tôi đã nghỉ việc và đã hối hận kể từ đó.


17
Các nhà quản lý hiếm khi bị sa thải vì những điều như vậy. Để đạt đến cấp quản lý, bạn phải rất giỏi trong việc bảo vệ hậu phương của bạn; bạn có thể trở thành vật tế thần ngay khi bạn rời công ty. Có lẽ bạn có thể xử lý nó theo cách khác, nhưng đừng tự đánh bại nó.
Đánh dấu tiền chuộc

nếu anh ta nhắn tin, bạn sẽ bị đổ lỗi và bị sa thải (hoặc ít nhất là có một thời gian khốn khổ cho đến khi bạn bỏ cuộc trong sự ô nhục).
jwenting

4

Bảy năm trước, ông chủ và chủ sở hữu công ty của tôi, người mà tôi chưa gặp tôi rất mới với công việc, đã ở một tiểu bang khác đang thực hiện bản demo trang web nghiên cứu của chúng tôi cho một vài khách hàng tiềm năng. Phí thành viên chạy ở mức thấp đến giữa năm con số, vì vậy những bản demo này là một vấn đề lớn đối với công ty non trẻ của chúng tôi.

Ở giữa bản demo của anh ấy, khi tôi đang thực hiện một số công việc cơ sở dữ liệu, tôi đã thay đổi cơ sở dữ liệu trực tiếp và cập nhật mọi câu hỏi khảo sát trong mỗi khảo sát thành cùng một văn bản, đại loại như "Đây là một câu hỏi kiểm tra" vì một lỗ hổng trong nơi đâu. Đồng nghiệp của tôi và tôi tranh giành bản sao lưu và co rúm lại, hy vọng anh ta sẽ không giới thiệu phần đó của trang ngay lúc đó nhưng chờ email trong tất cả các mũ mà không bao giờ xuất hiện.

Mặt tốt là ông chủ cuối cùng đã bung ra cho một hộp phát triển.


3

Tôi đã chạy thám tử liên kết của Xenu trên mạng nội bộ của chúng tôi để thử và xóa một số nhiều liên kết bị hỏng đã được xây dựng trong nhiều năm qua (hầu hết, không có gì đáng ngạc nhiên là các liên kết từ wiki đến ổ đĩa mạng chung).

Sau khoảng 30 phút, tôi bắt đầu nhận thấy một số vật phẩm mới có một số hình ảnh kỳ lạ, có vẻ như mọi người đã sử dụng một số hình ảnh cũ có hạt trên hệ thống nhưng tôi bỏ qua rằng nghĩ rằng có thể không có gì mới hơn có những gì họ muốn.

10 phút sau tôi nhận thấy các mặt hàng đặc trưng đang thay đổi ngẫu nhiên vì một số lý do. Tại thời điểm này, nó nhận ra cho tôi những gì đang xảy ra. Mạng nội bộ sử dụng xác thực windows và một số chức năng (như chọn hình ảnh tin tức và các mục nổi bật) đã được mã hóa để đáp ứng các yêu cầu HTTP GET. Trình kiểm tra liên kết đã sử dụng xác thực của tôi và đã thu thập dữ liệu đến các trang ở phía quản trị viên, thực hiện công việc của mình và theo dõi mọi liên kết mà nó tìm thấy bao gồm các liên kết như

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


7
Đây dường như là cách nhiều người tìm hiểu khi sử dụng GET và khi thích hợp để sử dụng POST
Oli

Đồng ý, tôi chuẩn bị bắt đầu công việc tái phát triển mạng nội bộ và việc sử dụng GET và POST đúng cách này được đặt lên hàng đầu trong các yêu cầu. ASP MVC cũng giúp làm điều này dễ dàng và trực quan để làm.
Chao

1
thực sự không phải là lỗi của bạn , nhưng dù sao cũng là một câu chuyện hay :-)
Dean Harding

3

Cho đến nay, sai lầm đau bụng, tăng nhịp tim, đột nhiên nóng và ngứa của tôi là chạy truy vấn CẬP NHẬT mà không có mệnh đề WHERE. May mắn thay, đã có một bản sao lưu từ 15 phút trước và dữ liệu không thay đổi thường xuyên, điều đó có nghĩa là tôi có thể khôi phục hoàn toàn dữ liệu trong vòng 10 phút mà không ai biết.

Không có gì quá tệ nhưng tôi đã có một số cuộc gọi gần gũi. Họ đang và vẫn là những cuộc gọi thân thiết bởi vì tôi đã nghe đủ những câu chuyện kinh dị trong ngành công nghiệp này rằng mọi thứ tôi làm có thể làm mọi thứ trở nên tốt đẹp.


1
Các bạn có đang mắc lỗi DB bao giờ gọi rollback không?
Jé Queue

@Xepoch, điều đó chỉ có ích nếu bạn bắt đầu giao dịch
CaffGeek

1
@Chad, chúng ta thường không nên cho rằng tất cả các cuộc gọi dữ liệu nên được giao dịch ngầm?
Jé Queue

2
@Xepoch, đừng bao giờ giả sử.
CaffGeek

1
@Char, tôi có một sở thích cá nhân để duy trì tất cả các tương tác DB trong các giao dịch. Những người không, họ mang rủi ro hoặc có những trường hợp kinh doanh không quan tâm. Giả định đặc tả và MANDATE là chúng tôi sẽ bắt đầu và duy trì các dự án mã với quản lý DB giao dịch.
Jé Queue

3

Đối với một robot tôi làm việc, chúng tôi giữ một tệp nhật ký của mỗi lần chạy. Chúng tôi có robot và trình giả lập, cả hai đều tạo ra các thư mục nhật ký này. Các tệp nhật ký của trình giả lập là vô dụng, nhưng các tệp nhật ký robot rất hữu ích và được lưu trữ mãi mãi.

Vì bản thân robot có không gian ổ cứng hạn chế, chúng được chuyển sang một máy tính khác và được lưu trữ ở đó. Máy tính này tình cờ là máy tính hoạt động chính để liên lạc với robot.

Chà, tôi mới bắt đầu làm việc với robot vài tháng trước và không biết điều này. Tôi nghĩ rằng các bản ghi trên máy tính điều hành là những cái vô dụng được tạo ra bởi trình giả lập và xóa chúng. Chúng tôi đã mất tất cả các bản ghi cũ vì không có bản sao lưu thích hợp.


8
Chết tiệt ... tôi muốn làm việc với robot! Tất cả tôi làm cả ngày là xây dựng các trang web tệ hại.
Dan Ray

2

Xây dựng phiên bản phần mềm của chúng tôi trên máy tính của tôi thay vì máy tính xây dựng vì nó nhanh hơn (nhanh hơn khoảng 4 giờ, điều đó có nghĩa là nó có thể đi vào QA ngày hôm đó thay vì tiếp theo) và nhà xuất bản muốn nó càng sớm càng tốt.

Tôi đã có một định nghĩa đặc biệt để gỡ lỗi trên máy tính của mình, điều này gây ra lỗi không được phát hiện trong QA. Họ chỉ phát hiện ra nó vào cuối 4 tuần thử nghiệm xác nhận, nhưng nó đủ tệ để thất bại trong việc xác nhận.


2

Bỏ một cơ sở dữ liệu sản xuất một cách tình cờ thay vì một phiên bản phát triển. Tôi không thấy máy chủ nào tôi đang làm việc. May mắn thay, bản sao lưu cuối cùng được sản xuất 4 giờ trước và người dùng đã không thực hiện nhiều thay đổi trên hệ thống, do đó không mất dữ liệu lớn.


Tôi đã có một đồng nghiệp làm điều này. Chỉ có anh ta nghĩ rằng anh ta đã bỏ bản sao địa phương của mình chứ không phải bản prod. Tất cả chúng tôi đang làm việc sau đó nghe anh ấy đi 'OH SH ** !!!!' Đó là một buổi chiều vui vẻ.
Tyanna

2

Sai lầm lớn nhất tôi từng mắc phải là không kiểm soát được công việc nguồn của máy phát triển. Ổ cứng của tôi bị hỏng và tôi mất nhiều tuần làm việc. Đó là một bài học khó học và một cái gì đó tôi sẽ không bao giờ để xảy ra nữa.


không phải lỗi của tôi, nhưng có liên quan. Công ty tôi làm việc đã bị một trong những máy chủ web của họ xâm phạm, cấp quyền truy cập root cho kẻ xâm nhập vào máy chủ kiểm soát phiên bản (DMZ? Whazda?), Trong đó anh ta đã kịp thời thực hiện một "rm -r /"
jwenting

2

Sử dụng ==thay vì equalsso sánh chuỗi trong Java


13
Đó là sai lầm lớn nhất bạn từng mắc phải?
Chris

Đây là một vấn đề nhiều hơn trong Java, nơi ==so sánh tham chiếu. Trong C #, ==làm một so sánh giá trị trên dây, tương tự như .Equals() Điều đó nói rằng, có một số khác biệt, xem Jon Skeet câu trả lời ở đây: stackoverflow.com/questions/3678792/...
Tim Goodman

2
@Tim: điều đó vẫn không trả lời đây là "sai lầm lớn nhất bạn từng mắc phải" ... Một số bối cảnh khác về hậu quả ít nhất sẽ tốt đẹp ...
Dean Harding

Nếu câu trả lời được đưa ra nhiều nhất là về lỗi đánh máy, thì câu trả lời của tôi ở đây khác nhau như thế nào? Nếu bạn là người mới bắt đầu, việc mắc lỗi này gần như không thể gỡ lỗi và có thể làm bạn nản lòng cả ngày.
nanda

@Dean: Đó không phải là sai lầm lớn nhất tôi từng mắc phải ... Tôi chỉ đang làm rõ sự khác biệt trong cách cư xử ở đây với C # vs Java
Tim Goodman

1

Tôi đã nói với Giám đốc của mình rằng chỉ vì anh ấy là OLD và có nhiều năm kinh nghiệm hơn tôi không có nghĩa là tôi sẽ tôn trọng anh ấy. Điều duy nhất mà tôi sẽ tôn trọng là KHẢ NĂNG. Tôi đã không phải đối mặt với hậu quả của một tuyên bố thảm hại như vậy có thể là do tôi là một lập trình viên cơ sở hơn. Nhìn lại điều này dường như là sai lầm lớn nhất của tôi. Đâu là lẽ thường của tôi \ khiêm tốn ?? :-(


2
Tôi đồng ý một phần với bạn, chỉ vì ai đó có nhiều kinh nghiệm hơn (tính bằng năm) không có nghĩa rằng anh ấy là một lập trình viên giỏi hơn. Có rất nhiều lập trình viên ngoài kia, có thể viết 'xx năm kinh nghiệm' trong hồ sơ của họ nhưng không biết họ đang làm gì.
Bobby

Nhiều khả năng họ đã phát hiện ra một sai lầm ngu ngốc trên đường đi, giống như những lỗi được liệt kê ở đây, điều đó sẽ khiến nhà phát triển cẩn thận hơn
johnc

Rõ ràng, lỗi không có thái độ đó. Sai lầm là NÓI rằng bạn có thái độ đó.
Dan Ray

Tôi đã muốn nói điều này với nhiều người trong nhiều năm qua.
Reasurria

1

Điều này đã xảy ra với một đồng nghiệp trong tháng này.

Anh ấy đã sửa một lỗi xảy ra khi bạn gửi SMS đến rất nhiều điện thoại di động. Thông thường những tin nhắn này sẽ không thực sự được gửi để tiết kiệm chi phí nhưng do cấu hình sai trong cơ sở dữ liệu của chúng tôi nên chúng đã được gửi.

Chi phí: một tháng tiền lương của lưu lượng SMS.


rẻ quá! :)
jwenting

1

Theo yêu cầu của người quản lý, tôi đã sao chép /etc/sudoerstừ máy này sang máy khác (mặc dù nó sẽ không khắc phục được sự cố trong tay, nhưng đó là vấn đề bên cạnh). Thật không may, tôi đã sử dụng sudođể di chuyển tệp được sao chép vào vị trí, mà không nhận thấy rằng chủ sở hữu và quyền của nó là hoàn toàn sai. Tại thời điểm đó, không ai có shell root mở, không ai có thể sudovà không ai có thể đăng nhập với quyền root vì shell của nó được đặt thành /bin/false. Và máy đã ở trong một kho dữ liệu từ xa ...


1

Tôi muốn tạo tệp siêu dữ liệu cho mỗi tệp trong một thư mục (nghĩa là với mỗi tệp somedir/foo.bin, tôi muốn tạo tệp somedir/foo.bin.meta). Vì một số lý do ngu ngốc, tôi quyết định tạo các tệp bằng cách mở và đóng luồng tệp qua Python:

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

Đối với một số lý do thậm chí ngu ngốc, tôi nghĩ thật thông minh khi kiểm tra tập lệnh này với một thư mục trên ổ cứng của tôi với một vài hợp đồng dữ liệu cá nhân trên đó. Chỉ sau khi chạy nó, tôi mới nhận ra rằng tôi đã quên thực sự sửa đổi tên tệp trước khi chuyển nó sang openvà tôi đã cắt ngắn mọi tệp duy nhất trong thư mục đó (ouch).

May mắn thay, đó là trên một máy tính cá nhân và không gây ra bất kỳ thiệt hại nào cho bất cứ điều gì quan trọng, nhưng tôi vẫn học được bài học của mình.


1

Tôi đang làm việc cho một công ty chuyên xử lý một trong những công ty viễn thông lớn nhất của Thụy Điển. Trên máy chủ của chúng tôi, chúng tôi đã có một số phần mềm điều chỉnh hàng đợi cuộc gọi đến, số lượng cuộc gọi chúng tôi có thể thực hiện và vv. Nếu nó không hoạt động, chúng tôi sẽ không nhận được bất kỳ cuộc gọi nào và khách hàng sẽ không nhận được bất kỳ sự hỗ trợ nào.

Aaaaanyway, tôi đã thay đổi phần mềm. Tôi có thể đã đợi một cửa sổ dịch vụ thay đổi nhưng tôi nghĩ "Này, sẽ mất một phút để khởi động lại dịch vụ, tại sao phải bận tâm. Fortune thích sự táo bạo". Vì vậy, tôi đã khởi động lại nó, không may là chủ đề đã bị khóa nên tôi không thể thay thế nó. Bắt đầu hoảng loạn, tôi quyết định nhanh chóng khởi động lại máy (tôi đã từ xa). Thật không may trong sự hoảng loạn của tôi, tôi nhấp vào "cài đặt cập nhật và tắt máy": P

Không cần phải nói rằng đã có nhiều hỗ trợ khách hàng ở Thụy Điển trong nửa giờ tới trước khi chúng tôi quản lý để khởi động lại nó.

Một đồng nghiệp còn tệ hơn cả tôi, anh ta đã gỡ lỗi hệ thống trả lời bằng giọng nói tự động vào một đêm và định lại số điện thoại cho điện thoại di động của anh ta. Chỉ có điều anh quên chuyển nó trở lại, có ngày nghỉ vào ngày hôm sau và để điện thoại di động tại nơi làm việc. Chúng tôi đang tự hỏi tại sao nó lại đổ chuông liên tục ngày hôm đó :)


1

Argh, 11 giờ tối, đóng cửa phòng thí nghiệm, nhanh chóng, nhanh chóng ...

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

Chúa không! FFS. Ý tôi là PS bạn ****!


Lời xin lỗi cho phong cách ngôn ngữ, nó là cần thiết cho tính xác thực.
Orbled

0

Thỉnh thoảng trước khi mã hóa JS, tôi không thể phân biệt giữa "1" (một) và "l" "L nhỏ". Ngay cả khi tôi đang gõ câu trả lời này, cả hai trông gần giống nhau trong trình soạn thảo!


Tại sao bỏ phiếu xuống?
Gopi

0

Tôi đã tạo một ngôn ngữ tạo khuôn mẫu trang web , trong phiên bản đầu tiên mà tất cả các tham số HTTP được mở rộng hoàn toàn dưới dạng các biến. Điều này có nghĩa là bạn có thể viết một URL như:

page.vis? body = <body> <p> Trời ơi </ p> </ body>

Và nó sẽ làm chính xác những gì nó trông giống như nó làm.

May mắn thay, tôi không có người dùng (thở dài), vì vậy tôi đoán đó không phải là quá nhiều rủi ro bảo mật.


0

Chắc chắn rủi ro TSQL - quá nhiều câu lệnh TSQL trong một cửa sổ soạn thảo. Có một chút mệt mỏi, và mọi người đã làm gián đoạn tôi trái và phải, và tôi đã ban hành một lệnh cập nhật 47.000 địa chỉ hồ sơ, thành phố, tiểu bang và zip - rất tiếc. Nó đã được sửa trong khoảng 25 phút, mặc dù.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.