2014年4月24日 星期四

在Archlinux 上編譯qtiplot

最近因為寫論文的關係,要作不少數據模擬、量測的圖,一般實驗室都是用Origin來作圖,不過我不知道為啥,在虛擬機裡面用Origin都會GG,一堆功能一點就當;而且Origin又不開源,吃土去吧。
這類的東西有沒有開源的替代方案呢?當然有。
Qtiplot SciDavis
兩套的介面其實非常像,不過qtiplot的功能比較完整。

--

用一用之後,就會對qtiplot愈來愈不爽()
反正有一些些功能還是怪怪的,例如改了range之後整張圖要重畫。
不過這是開源軟體,不像Origin不爽就只能不爽,想了一下決定立馬加入這個專案,反正這個軟體可能還要用一陣子。

結果載了最新的0.9.8.9的原始碼下來,第一大難關:不能編譯,費了不少勁才解掉。
首先要先裝必要的套件:qt4, vtk, boost lib, qt-assistant-compat,老實說多到我都有點記不住了。

然後有不少修改要做,主要是參考:
這個AUR包括了編譯成功需要的修改,果然Archlinux開發者都好猛OAO
照著改完就能成功編譯惹。

--

當然編成功了還是要mur一下,完全無法理解幹嘛把project搞到這麼難編譯,我真的覺得一個project容易編譯與否會直接關乎有多少開發者想要參與,編譯成功才能進行修改的測試,這是開始改project的第一步。
當然說回來,這個project也有一到兩年沒動過,大概也脫離密集開發期了。
現在至少累積了400features在排隊,編譯遇到的問題在原網站(BerilOS)幾乎都沒答案,而是分散到Debian, Archlinux, LaunchPad的幾個大的bug report去了,這大概是一個project在末期自然的狀況吧。

Reference:
1. qtiplot:
2. SciDavis:
3. qtiplot develop webpage:

2014年4月14日 星期一

使用git squash 合併commit

小弟之前一直有個習慣,每次寫程式都要寫到結果正確了,才把該commit的commit;這樣造成的結果是,常常累積了數百行的差異才commit,要是中途不小心手滑了一下,辛苦就全化作流水了。

阿蹦大神曰:不用結果正確,編譯可過就commit
這樣…不是會跑出一堆亂七八槽的commit嗎?

這就要用到git squash功能了
比如說現在我隨便commit一些版本,log顯示為:
commit 7549a19b591f1c802addf9b2344be2f607beff42
Date: Mon Apr 14 16:05:38 2014 +0000

    more line num

commit a15d1dde304646d542dc9cb596afbcd900a609c7
Date: Mon Apr 14 16:05:22 2014 +0000

    line num

commit 265e09db81b1c6aff81a6bedcd3a0e2f22e55acc
Date: Mon Apr 14 16:04:49 2014 +0000

    initial commit

如果要合併line num, more line num兩個版本:
$ git rebase -i 265e09db81b1c6aff81a6bedcd3a0e2f22e55acc

然後編輯將
pick a15d1dd line num
pick 7549a19 more line num
要squash起來的commit編輯為squash, 或fixup,前者會保留squash的commit message,後者只用最新的commit message,先改成:
pick a15d1dd line num
squash 7549a19 more line num

再來它會要求你修改commit message,這就隨便你改,預設是把兩個訊息寫在一起。
commit 0a947a06fd258e07615fb236696b8f31f04f4043
Date: Mon Apr 14 16:05:22 2014 +0000
    line num
    more line num

commit 265e09db81b1c6aff81a6bedcd3a0e2f22e55acc
Date: Mon Apr 14 16:04:49 2014 +0000

    initial commit

以後就寫個段落就commit一下,等到功能都寫完了,再全部squash起來即可。
參考資料: man git rebase
致謝: 本文感謝傳說中的阿蹦大神指導