contents
C/C++
Overprotection
|
|
過度保護,造成最後沒人知道 a 和 b 的關係。結果有時候 b 不是由 a 建立的,整串都不知道在做什麼。
Evil Comma
|
|
排版已經告訴你可能發生了問題,但看起來還是救不了下面那一行。似乎沒有發生意外,但是非常恐怖。
Export
|
|
組成不是大問題,串起來就崩潰 $O(n^2)$。請善用 in-place 的串接。
Test Script
|
|
|
|
浪費生命從編譯時間著手,拜託開 -O0
就好,這樣就近乎線性時間的編譯速度。開到 -O3
會有平方層級的編譯時間,$(10^5)^2$ 雖然也不是很多,但突然從幾秒變成幾個小時是有可能的。
Algorithm
List vs Hash
List 比 Hash 快,不用計算雜湊值,直接比對更快。
數量一大是不是要平行去找了啊,小伙子。
Math
Degree vs Radian
|
|
不會弧度記算沒關係,晚點我們再檢查一下還有哪一段混著算吧。希望都沒事。
Git
linter
不要 format code,因為
git blame
不好看。
|
|
心靜自然涼,再多的 try-catch 我也可以接受。沒事,我不會受到傷害。
Windows
Set Env Variable
|
|
在大部分情況是不用重新開機,重新開啟 shell 即可。
Jenkins
Build Artifacts
每一次建置結果都保存下來,用定時刪除。
大部分的建置結果只需要保留進 25 次就差不多,如果每一次建置就要耗掉 1 GB 的硬碟空間,那在一天內上傳了好幾次,就會看到 1 TB 硬碟直接死去。
請不要說買硬碟解決問題,這並沒有解決根本問題。
Build Pipeline
充分運用硬體資源,全部平行。
有些工作是需要整台伺服器的計算資源,如果安排兩個以上的工作時,會造成另一個工作結果不穩定。而有些工作會需要大量的硬碟 IO,兩個以上甚至會造成卡死的狀態。
請不要說買更多的機器或 CPU 解決問題,這只要開一個有平行工作,另一個工作沒設計好就會自動失敗。