2009年9月14日 星期一

git初步心得

最近了點時間一邊讀doc一邊操作終於比較了解git一點了。git這種分散式的版本控制系統果然是為社群開發方式的研發出來了。使用方式和邏輯很適合社群的開發模式。不過還真的不怎麼容易學。我自信對傳統集中式的版本控制己相當了解,也使用好多年,但還讀git的manual時還是常有一頭霧水的感覺。也許和我一直想用subversion而增加自己的困擾有關吧。

比較了解git一點後,覺得git比較像是版本的管理而不是版本的控制。當然這也是git對分散式版本控制系統的看法,應該是"檔案工具"而不是"控制工具"。所以要你手動作pack object、連提交過的版本都可以從歷史記錄裡抹除。-_-|||。這在社群使用上沒問題,但是公司團隊裡可能就會不一定合適了。當然這對git來說並不是無解。可以另外由一個管理者保有一份類似"權威版"的的方式來模擬像subversion這種集中式的管理方式。

不過git鼓勵多使用branch和merge的方式倒是滿好用的。當local branch不會影響任何人時,開發者更能盡情的做各種實驗,這當然也是受社群開發方式的影響,這種開發心態在一般的公司團隊裡也很有幫助。

就目前的試用心得來說覺得git有兩個部分還是不太習慣。

第一是使用hash當版本號碼讓版本號碼非常長,大部分的狀況下我都不看版本號碼而看commit log。也因為這樣的版本號碼不容易一眼就看出版本之間的前後關係。在一個開發速定穩定的團隊裡我甚至可以從號碼的差距猜出大約的時間差距。有時間一眼就看出前後關係還是很方便的。

另一個問題是和bug tracing system或ticket system的配合。因為大部分的bug tracing system都還是集中式的要和分散式的version control合作還是有些問題。我還沒試過,我想可能會有一些solution。但應該都還不完美。至少我看到我最愛的mantis好像有一些git的hooking,試過之後再說。

2009年9月10日 星期四

把putty+screenc換成mrxvt

今天把平常工作用的putty+screen給換成mrxvt了。雖然用putty+screen可以補足putty不支援tab的小缺點,但是在兩個地方我還是不滿意,一個是tab的切換上還是有一點不方便,一個是要把scroll回頭拉看之前的message時也有一點點不方便。雖說這兩個缺點在我把screen用到變無意識操作下,影響小了很多。但還是終究還是有點不方法,有時就會要想要再找找有什麼solution。

支援ssh的windows  免費client總體來說還是putty最完整好用(設定介面例外),所以就改找x windows上的terminal。平常看了一堆lightweight的terminal軟體,但是大部分都架構在gnome的vte上,這對我來說就等於無法用,因為我用的還是Redhat AS3的版本,公司的server當然也不能讓我亂升級。如果要我為一個lightweight的軟體,build一個不同的版本的vte那也太本末倒置了。所以就一直用著putty+screen,當所有的操作變成成下意識動作時,將就著用也就不那麼難過了。(還有一點是我稍微改了一下設定讓我少按幾次ctrl,使用screen的預設meta key總讓我手指受不了)


今天又回頭去看到了mrxvt,突然發現,mrxvt就很符合我的需要,我最需要就是要tab功能,支援256色和自訂字型,至於多國語系和unicode在我coding的過程中是不需要的。而且mrxvt承自rxvt,非常的輕量,只要 x11 library就好了。這一切的一切都是最適合我的嘛。以前怎麼都沒注意到呢。

把mrxvt設定好之後更確定mrxvt對現在的我來說是最適合的,不到2MB的空間滿足了我對tab,256色和字型的要求,和vim配合使用又沒什麼問題。所以就從putty+screen轉到mrxvt啦。

好用的putty我當然不會就這樣拋棄你啦,不過我想我和mrxvt在一起的時間會多很多很多了。

話說回頭, putty+screen在我現在環境還是有一點優勢,最大的優勢就是設定字型方便多了。在工作站上我沒辦法更改任何設定,也不能加自己想用的字型。在windows上不是admin我也能加字型,設定給putty用。為什麼我這麼想用自己的字型呢?好的coding字型對你的眼睛和腦袋都有很大的幫助。但是公司的exceed版本太舊,使用truetype後的refresh就很慢,看著畫面一個字一個字慢慢refresh才能再key in,那我就不需要tab了嘛。幸好我還能接受Fixed字型,就將就用吧。還有screen有他自己強大的功能,其實還是很有用的。

不過用了好久的putty+screen,一堆指令都變下意識動作,換成mrxvt後一下改不過來,頭腦還沒反應過來就發現手指己經打完,畫面出現一堆字。特別是在tab的切換功能還真不習慣。

另外rxvt的另外一個分支rxvt-unicode也可以有簡單的tab支援,不過真的是很簡單,最大的問題是不能用alt+number快速切換tab,在網路上有看到有patch不過我沒試用就是了。但是因為他支援unicode可能對一般使用來說還是比較方便。


PS.最後在設定的時候才不小心發現了screen也可以設hotkey,使用alt-1快速切換tab,那這樣tab切換就跟一般支援tab的terminal沒兩樣了嘛。但是卷軸的部分還是mrxvt比較方便一點點,所以我還是改用mrxvt了

2009年6月5日 星期五

What pity!! I can't use termit in my job

I found a good and lite terminal software called termit today. It seems good and support the all features I want ex: small size, tab support, and 256 colors. It need cmake and libvte and I found it does be small after download source code.

At first, I think I can compile in my local dir. cmake is quite simple to compile in my local dir and the linux server have libvte too. Then I found the libvte in AS3 is too old to termit and I though I can compile a static libvte for termit too. That's should not be a problem.

Then I check the depency of libvte from web. I must be crazy to compile a different version libvte and gtk+ in a machine which I am just a normal user. It's not only libvte too old but also all gtk+ library. I want a lite terminal tool and rebuild a gtk+ library. So I give up. Maybe another ssh client in windows is more suitable for me. It's so pity.

2009年5月27日 星期三

ssh tunnel

SSH support tunnel in three type:
1.dymanic
2.forward local port to remote address
3.forward remoteport to localhost address

1.dymanic tunnel just like kind of socket proxy.


一開始覺得2和3好像就是把話反過來說,有什麼不一樣,看了好一下子才懂不同之處。那是因為我一直以port mapping的想法去看他,你map給我跟我map給你最後還不是一樣通。不過真的了解之後,那還真的就是不一樣。

forward local port to remote address
=>簡單的想法是把你local的某一個port的request forward到另一個address (不必然是 ssh server,可能是任一台 ssh server能連上的address),所以你在ssh client上連到client的local port就會像是連到remote address一樣。
=>將本機上的某個 port 透過ssh server 對應到遠端主機所在的某個 port
data follow:
ssh client -> internet -> ssh server -> firewall -> ap server
The request to ssh client will forward to ap server through ssh server
Scenario:
You have a server in internet and you want a secured connection. You can open a tunnel to ssh server and all client in your side can access ap server through ssh client. The other benefit is only the ssh client need permission to access internet. But socket proxy will be better solution for permission control.

forward remote port to local address
=>將 SSH Server 上的某個 port 對應到本地主機上的某個 port
所以ssh server端(以及其他能連到ssh server)的人可以利用連到ssh server的某個port,連到client本地主機的某個port。
data follow:

ssh server -> internet -> nat -> ssh client
Use forward remote port to open a ssh tunnel from ssh client to ssh server. There will a listen port in ssh server to forward all request to ssh server specified port to ssh client. All machine in ssh server side can connect to ssh client through ssh server specified port.

Scenario:
You have ssh sever and you can controll it. The user in client is unable to configure network (or server or nat or dymanic ip). You can request client open a ssh connect to server with forward remote port to local address mode. Then you can send request to client intranet by tunnel.

2008年12月20日 星期六

羅斯扥波維奇 EMI 錄音全集真好聽之二

繼續聽拿到不久的羅斯扥波維奇EMI錄音全集,慢慢的聽。在網路上偶然才看到,原來裡面有好些原來就是很經典的版本。

最讓我意外的是他的CD 1,2就是巴哈 : 無伴奏大提琴組曲 / 羅斯托波維奇,我之前在網路上看到推薦,還想去找找來聽聽,原來也收錄在裡面。的確是很棒,網路推薦沒騙人。

感動~~

2008年12月18日 星期四

入手 ROSTROPOVICH EMI錄音全集

入手 ROSTROPOVICH EMI錄音全集。錄音聽起來很不錯,又是大師拉的就真的不一樣啦。:)
其實在博客來訂了好久,一直等不到出貨,今天終於拿到手。大提琴厚實飽滿的音色,聽起來真舒服。可惜大提琴實在是滿大,不然我就改拉大提琴了。

最近這半年貪小便宜心大起,一堆大廠狂出大部頭錄音全集,又全是大師全集,搞的我小朋友大出走,書架都滿出來了。小朋友們,我很愛你們的,你們不要亂跑呀。

不過真的很好聽。

2008年11月9日 星期日

Trac 越來越容易安裝了

最近有需要又重新build了一個Trac。發現Trac整合完成後比以前又更容易安裝設定了。使用新的 template系統所以也不像以前還要自己去裝一些python的plugin。現在通通整合到easy_install裡去了。

唯一遇到的問題是本來想用Python2.6,但是easy_install和svn binding的binary都還沒update到2.6,也懶得全部自己來。所以又降回2.5。

今天重乾淨的系統開始
1.裝Python
2.裝easy_install
3.裝subversion python binding
4.用easy_install裝Trac : easy_install Trac (還真的是easy)
5.trac-admin initenv
6.init svn repos.: svnadmin create

練完收功~