基本型個人 IAAS
現在基本上大家都是用筆記型電腦來工作了,沒有足夠的經驗(年齡 ?)的同學們,可能覺得這沒什麼不好的。但是啊 ~ 一台 Macbook 動輒五萬,貴的要七八萬,用來作粗重的工作(大數據 ?)時,機體的熱氣蒸蒸日上,風扇還發出少見的哀嚎。我這是在虐待電腦嗎 ! 沒有違反勞基法還是什麼異世界的法令嗎?
我其實想過租一個 VPS 耶,不過如果要有足夠的記憶體那一個月也要不少錢。不划算 ~
桌上型電腦來救援了,只要把程式放在桌機跑不就好了嗎?但是啊~鍵盤打不習慣啊~人類可是可以正大光明的宣稱睡覺都要抱同一個小棉被的存在啊,換一個鍵盤什麼的,怎麼可能作得到啊?什麼?遠端桌面?可以再更麻煩一點嗎 ?
其實用桌機是可以的,只是需要一點小技巧
- 你的應用程式伺服器或是 framework 要支援 auto reload。我是用 play framework,不過很多其他的 framework 都支援的。
- Surprised ! 加上 DROPBOX ,只要把 workspace 丟上去 sync 就搞定了!DROPBOX 在同步小檔案時的效率遠遠的超過競爭對手,雖然是要等一小下,不過剛好用這點時間多眨一下眼睛吧?乾眼症可是很無情的。
我想聰明的你,已經知道要怎麼作了吧。為了節省你寶貴的時間,請特別注意下面這個問題哦
同樣的檔案在同一時間修改會出現 Conflict
以 java 的專案為例,要注意以下幾類的檔案
- Compile 出來的 class files
- Log files (請在你的 log config 中設定)
- .vagrant (僅限有在開發環境有使用 vagrant 的你)
- IDE files (目前無解,要使用 dropbox 就不要在多台同時使用同一個 IDE 哦!)
解決方案很簡單,這些檔案不要共用,都設為每台機器個別的路徑就好了。
下面有我的一些小偏方,請斟酌服用。
Vagrant 請設定環境變數 VAGRANT_DOTFILE_PATH 讓 vagrant 在執行時不要使用預設的 .vagrant 目錄
Ex: VAGRANT_DOTFILE_PATH=.vagrant-my-foo-computer
SBT 專案請參考以下的 build.sbt 將 compile 出來的 class 檔案放到不同目錄。
val targetDirectory: Def.Initialize[File] = Def.setting {
sys.props.get("buildBaseDirectory")
.map(x => file(x))
.map(_ / s"target-${organizationName.value}.${name.value}#${version.value}")
.getOrElse(baseDirectory.value / "target")
}target := targetDirectory.value
本例是使用系統參數 buildBaseDirectory,執行 sbt 時加上這樣的參數即可
sbt -DbuildBaseDirectory=/my/local/build/directory
Save your Macbook and Happy coding !
Did you learn something new? If so please:
↓ clap 👏 button below️ so more people can see this