和你白頭偕老的,不一定是妹子,卻一定是bug……
源/ 頂級程序員文/ An先生
程序員的人生就是bug和debug交織在一起的悲歌
1
新浪微博黑名單「劉偉楠」
從前有一個哥們叫劉偉楠,想用自己的名字註冊新浪微博,但他發現只要涉及「劉偉楠」三個字,甭管加怎樣的前綴後綴,都會註冊失敗。
劉偉楠萬般無奈之下發了帖子,一時間響應者無數。最終在網友聲討下,新浪微博取消了該項屏蔽,修復了這個bug。不過面對劉偉楠的精神拷問「這尼瑪是為什麼?」新浪微博並沒有給出解釋……
2
Google Arts & Culture ?
「Fuck this app」
谷歌有一款強大的APP:Arts & Culture。用戶上傳自己的自拍照後,系統會將照片與藝術畫作進行對比,匹配出一張和用戶長得最像的名畫或藝術品。
社交網路頓時沸騰了!人們紛紛曬出自己的自拍匹配成果,有些效果不錯:
但,有些就比較尷尬了
前!方!高!能!
這就尷尬了,配合上當事人對此bug鏗鏘有力的吐槽,瞬間獲得無數點贊和轉發,希望Google的大佬們能早點改掉這些bug,讓他們重新做人…
3
放《青藏高原》高音會造成筆記本死機
知乎用戶wuz遇到這樣一件事:
有用戶反應每次用筆記本播放《青藏高原》時,電腦就會死機。經測試發現,唱到最後的「那就是青藏高~~」時,硬碟產生共振,振幅過大,讀寫頭就讀不出數據了。聽說,為了抓住這個bug,聽了一個月的青藏高原……
最後bug怎麼解決的呢?把固定硬碟的螺絲緊一緊,改變固有頻率就可以了。
4
中英文符號逼瘋無數程序員
請看,如上兩段代碼有什麼不同?一模一樣是吧?但實際上第二行可以運行,第一行就不行。
為啥?因為中文的「-」和英文的「-」雖然外表相同,但編碼上差遠了。
5
無獨有偶,大小寫bug也逼瘋了一批
曾有一位負責微信公眾號開發的程序員自述:當時後台是技術領導寫的,c#公眾號支付的預定單和加密全在後台,後來後台改版本,由c#改為Java,結果調了一晚上,顯示簽名錯誤。
c#的代碼和Java的代碼對了一遍,沒發現問題;又把微信公眾號配置也看了一遍
也沒問題;各種百度、各種猜想、各種驗證,都不對……
最後去微信官網看了開發者文檔,發現上面預定單的appId的i是大寫,但支付的時候是小寫!
6
WIFI竟然也能成為bug的罪魁禍首
剛進公司做iPad應用,公司給了兩台測試機:一台iPad4、一台iPad Air。
應用裡面有個資源下載功能,同一個資源用同一段代碼,不過在iPad Air上下得飛快,在iPad4上面就慢如龜爬,一模一樣的程序為什麼會有這麼大的差別呢?是不是兩台設備內部某個網路硬體不一樣導致的呢?
之後不斷查資料,看帖看論壇看博客,尋找有沒有前輩遇到同樣的問題。然而找了3天還是找不到……到了最後,突然發現!
那台iPad4連的是樓下咖啡店的WiFi……
7
電子郵件無法發送到 500 英里以外
我在做校園的郵件系統管理員的時候,有用戶向我抱怨說:他們不能發送超過500英里距離的email...
用戶中有位地理統計人員,還添油加醋地製作了一張郵件發送失敗地圖,地圖上顯示,她郵件的送達區域半徑比500英里就多那麼一點點:半徑內的收件人,全收到了,之外的,全失敗了。
然而事情的真相是:
一次軟體升級導致遠程伺服器超時時間被設為0。在一個具有典型負載的特定機器上,零超時意味著如果連接時間稍微超過3毫秒,伺服器就會終止連接。而以光速傳播的電信號,在3毫秒的時間內所能到達的距離大約是:
0.003 * c (光速) = 558.84719 miles
8
只有在星期三才會崩潰的系統
一家醫院用來監控病人健康的資料庫,每到周三,會自己崩潰。
該事件中,最大的難度在於,一周只有一天有機會debug。
該系統記錄日誌是用 C 風格的代碼編寫的,把日誌字元串記錄到了一個固定長度的緩衝區中,其中日誌時間一欄,格式例如「Monday, July 17, 1997, 10:38:47.123「。
到底為什麼呢?請看下圖:
因為周三的日誌的時間一欄,緩衝區恰好溢出了。(就差一個位元組寫不下)
9
當我坐在窗邊的時候,內存讀寫就會失敗
給一個自己設計的SD卡控制器寫驅動,從五月開始調試,一直很順利,到了七月份突然開始出現間歇性的SD卡讀寫失敗,而且越靠近窗戶,失敗頻率越高。
驅動程序是要下載到控制器的板子上的。當這塊板子放置於窗邊,特別是正午的時候,調試幾乎總是失敗。
造成這個bug的原因是:電路板上晶元的正常工作溫度有限,當超過一定的溫度時它就帶不動負載了,而7月的正午,太陽正好會通過窗戶會照到板子,導致溫度過高。
10
搖動遊戲手柄的時候,遊戲存檔就會失敗
在開發PS1遊戲「袋鼠大進擊」這款遊戲的存檔/讀檔時候遇到的。Bug的癥狀是每隔一段時間存檔/讀檔都會超時失敗。並且十分隨機。
該事件中的難點在於重現bug。當開發人員把可能出錯的代碼已經注釋到了四大皆空的時候,bug依然隨機出現。偶然間,測試發現了快速重現Bug的方法:一邊擺動手柄,一邊存檔。
殘酷的真相是PS的時鐘在高頻率下運行時,會影響到主板旁邊的晶振,造成手柄控制器的內存卡控制器之間的串擾。手柄上一有信號,內存就被干擾了。
還有一些,生活中的讓人啼笑皆非的小bug
比如:
557854km/h的星際高鐵……
打個車,敬業到跨省來接你的司機吳師傅……
你呢,遇到過哪些讓你終生難忘的bug?
期待在評論區看到你的故事!
-END-
聲明:本文資料來源於網路,由頂級程序員搜集整理。
※天哪,春天來了,萬物蘇醒,你在這幹嘛?
※今日哲理文:深到骨子的善良—是尊重他人並呵護別人的尊嚴
TAG:全球大搜羅 |