[讀書心得] 少,但是更好



人生定期總是要買些洗腦書來看才有動力,這本書濃縮一句話當作心得就是,一次把一件事好好做好。

p.36~39
又是從清除衣櫥開始,找出自己真正喜歡的衣服,不要捨不得丟已經花很多錢買卻穿不到的衣服,決定好要哪些要丟就去丟了,不要在想著下一次。上面衣服換成其他事物都適用。

東西少,留下的東西都是自己最重要最好用的,把心力放在真正好的事物,而不用花時間去處理那些普通好的事物。

p.68~69
學會分辨那些才是真正投資報酬率高的事物,都想做好但都做不好,不如好好做好最重要得事情。承認自己必不完美,沒辦法做好所有事情。

P.78~80
引述本書"一個爐口代表你的家庭,一個代表你的朋友,第三個是你的健康,第四個是你的工作。為了事業有成,你必須關掉其中一個爐口。而為了真正的功成名就,你必須關掉其中兩個。"

每個人追求的目標不同,但要了解取捨,有得必有失,才不會永遠羨慕別人。你現在得到的你失去的,都是你過去的選擇。不要負面思考為何失去,這本來就是當初的取捨。

p.129~133
面對選擇,列出權值,只要你對他評價低於90%,那就是不夠好,那就要拒絕。

p.151
要清楚自己的人生目標,當我們走到人生盡頭,是否一路走來沒有遺憾,多想想就會知道哪些是自己真正該做的事情。

p.159~163
要有說不的勇氣,當別人與你價值觀不同時,要能堅定自己的信念。

p.223~230
解決問題的根本原因,而非想出一堆應急的解決方案。

p.255~259
活在當下,不去想過去的錯誤,不去擔心還沒發生的事情,活在當下。

引述本書"輸球和被痛宰是兩回事。被痛宰表示他們比你們好。他們更快、更強、更有天賦。...輸球則是另一回事。它代表你失去焦點。它代表你沒有專注在必要的事情上。"

p.262~p265
"當下,何者為重"。弄清楚最重要的項目,按優先順序排列,寫下來,劃掉現在不重要的事情,開始做。

寫在紙上,減少了必須記在腦中的壓力。

三分鐘用 Vagrant 裝好一個 Jenkins

標題殺人法,前提要先把下載過 Box 下載。在上一篇 用 Vagrant 建立 CentOS 6.4,我上網抓了一個 CentOS 6.4(64 位元)的 Box 到本機。

接著我們利用這個 Box 快速做出一個新的 VM 上面跑了 Jenkins。步驟參考下方 gist,然後實體機器瀏覽器打開 http://127.0.0.1:38080/ 就可以看到 Jenkins 老頭了。然後按照之前教的匯出 box,別人或是要搬到機房,就連三分鐘都不用,一分鐘就可以了。

螢幕快照 2014-11-07 上午11.28.19

用 Vagrant 建立 CentOS 6.4

個人有點系統潔癖,所以改用 VM 技術把環境隔離開,弄爛也不用煩惱。下面是從無到有一個 CentOS 6.4 的步驟。

用 Vagrant 的好處之一,是它很方便讓 Host(實體機器)和執行中的 VM 共用同一個資料夾,你就可以在 Host 上用 IDE 編輯專案,然後用 VM 去執行同一個專案。

建好的 VM 把套件工具都裝好後,也可以匯出成 Box,讓其他人直接使用。想得到的好處有,新人快速擁有開發環境,測試環境和生產環境都用同一份 Box 開始建立,在本機上建立好一個新系統就可以匯出在機房裏建立。

更進階的用途,Vagrant 可以在一個 Vagrant 專案下建立設定多台 VM,等於我可以在開發環境(開發環境夠力能跑那麼多 VM 的話)把整個系統架構用 Vagrant 做出來(比如這個系統要有一台 Apache,一台MySQL外加一台獨立的 FTP),測試環境/正式環境也有裝 Vagrant 的話,就直接搬過去用,免去了架設多主機的繁瑣步驟,理論上所有環境都是相同的,不會有在我電腦上可以你不行的問題發生。

Vagrant 再搭配 docker 這種更輕量級的虛擬技術,原本要跑三個 VM 的架構就可以改成跑一個上面跑三個 docker 的 VM,節省了更多資源。

同時 VM 環境建立也可以利用 Vaagrantfile + sh 的方式來做,搭配 git,這樣連建立環境的步驟都能夠版本控管,不用再寫文件記錄安裝手順。

初步來看,若一般需求,你裝個 Virtual Box 就可夠了。

但若你想保留安裝好所有套件的乾淨 VM,那用 Vagrant 的 Config 來做安裝套件(Config 即手順說明書),隨時都可以回復成有完整套件的乾淨 VM,而不是用備份或快照 VM 這種比較笨重的方式,而且備份快照其實已經不是個乾淨的 VM(資料庫已經有資料或是環境上已經有不需要的檔案)。

參考:


[讀書心得] 例外處理設計的逆襲



書中幾乎所有的程式碼都是以 Java 作為例子,所以寫 Java,C# 的人看起來會比較輕鬆。太深入的內容就不寫了,簡單寫幾句看完自己覺得的有印象的(寫程式可以先當作身體反應的準則),有興趣的還是買書去支持一下 Teddy 大大

  • HTC One X 被婊很大。 XD
  • 接到 Exception 的程式碼,若沒有能力去處理,就先往上丟,最後讓 main 發生例外,或是 GUI 顯示比較白話的訊息。
  • Java 7 後新增的功能
    • Multi-catch exceptions:若收到不同的例外都是做同樣的處理(ex:印 log),就可以合併成一個 catch,減少重複的程式碼。
    • try-with-resource:從 C# 的 using 借過來的概念(最近剛好也碰到),直接把產生的資源寫在 try(...這裡頭...){},執行完就會自動釋放資源,可以少寫 finally,也不會忘記釋放資源。
  • Checked Exception v.s. Unchecked Exception
    • Checked Exception:Java 設計概念認為 Checked Exception 代表可以回復的錯誤,Compiler 會強迫開發者去處理 Checked Exception(catch 或是再丟出去)。不過我好像都沒有回復過 Checked Exception,要碼不是印 log,再往上丟,了不起就寫個 re-try 機制來想辦法衝過去。
    • Unchecked Exception:程式碼內不應該出現的錯誤,就使用 Unchecked Exception,若別人收到此錯誤,代表要去檢查為什麼發生,然後去修正程式碼。
    • C# 都是 Unchecked Exception,所以一開始寫發現都沒有 try catch,但最後又被 exception 炸到,很不習慣。
  • 若實在對例外處理沒有想法,那就是一直往上丟就對了,至少炸掉會知道,而不是被 catch 吃掉,提早在設計階段就炸掉趕快處理,比在上線才炸掉來的風險小。

最後壞味道和重構壞味道的部分,實用度很高,去買來翻看看吧。

MacBook Pro 升級 OS X 10.10 Yosemite

優勝美地第一時間發佈時,看到一些開發者推友有遇到升級完,感覺速度變慢,還有開發環境爛掉的問題。雖然小弟也只有拿來做 JAVA 程式開發,沒啥碰 Linux 套件的東西,但因為案子都正在跑,所以也不敢貿然升級。

今天趁著案子告一個段落,爬了一下 Java 開發者升級優勝美地會遇到的問題,連備份都沒做就硬上了。的確下載速度要快,要不然 5G 會抓到哭出來(在公司抓大概三十分鐘就抓完了),安裝的最後一分鐘的確不只一分鐘(記得安裝期間用 cmd + L 可以看到安裝進度的 console),安裝大概又花了三十分鐘。

升級完設定好 apple 帳號相關設定,就可以一般使用了。

嘗試打開 Eclipse,Intellij 果然掛點,會出現以下畫面,就直接點擊更多資訊,就會帶你到網頁上下載 Java SE 6,裝好就可以頭好壯壯繼續寫程式了。

螢幕快照 2014-11-04 下午9.00.22

隔天拿到公司開工,卡頓感很嚴重,尤其我是 mission control(多重桌面)的重度使用者,在切換桌面感覺畫面掉格掉的很嚴重(下面有錄影)。


參考推友 WanCW 給的這篇 升級 OSX 10.10 Yosemite 後 UI lag 的解決方法 ,重置 PRAM,減少透明度,關閉 dashboard,重開機還是一樣頓,後來想想是不是因為我外接 USB 顯示卡(J5 Create JUA 350)的關係,果然拔掉就順了,但為了三螢幕我還是默默把它插回去了。

順便貼一下三螢幕的優勝美地紀念一下...

2014-11-05 14.09.35