2008年3月7日 星期五

好用的vim plugin

列出我現在用vim寫程式時會配合使用的一些好用plugin,有些也在vim script ranking的前幾名。

taglist.vim The "Tag List" plugin is a source code browser plugin

minibufexpl.vim Elegant buffer explorer

TabBar Plugin to add tab bar ( derived from miniBufExplorer).

bufexplorer.zip Buffer Explorer / Browser
個人較愛用TabBar,因為他可以用Alt+1, ALT+2快速變換檔案。但是有一個很大的缺點是跟其他的file explorer配合使用時,在視窗的調整上常有問題。

pyte
A clean, light (nearly white) theme

winmanager A windows style IDE for Vim 6.0
win manager Improved Adds directory shortcuts to winmanager for faster traversal across file system.
The NERD tree A tree explorer plugin for navigating the filesystem。要7.0以上才能用。我自己主要還是用6.3,所以比較少用。

VisualMark Visual mark, similar to UltraEdit's bookmark
ShowMarks Visually shows the location of marks.
但是ShowMarks會有delay的感覺。

snippetsEmu
An attempt to emulate TextMate's snippet expansion

grep.vim
Grep search tools integration with Vim. vim7.0己後就內建此一功能,但因為我用的是6.3

ShowFunc.vim
Creates a list of all tags / functions from a window, all windows or buffers.

cppcomplete C/C++ and Java code completion
word_complete automatically offers word completion as you type
SuperTab Do all your insert-mode completion with Tab.
vim 7 新增的 omni-completion感覺很強大的樣子,但是我的環境的關係,不常用vim7。

有趣的plug
sketch

grep with quickfix
quickfix的功能有很多
在這裡配合vim呼叫外部程式grep
可以列出符合的項目
舉例來說,要找有呼叫function1()的所有檔案及位置

:gr -R function1 ./*

即可將結果放進vim的列表中並跳進第一個符合點
接下來有幾個功能可以使用

:cn => 下一個符合點
:cp => 前一個符合點
:cl => 再次列出所有符合
:copen => 開出一個新視窗表列所有符合

2008年1月9日 星期三

方便好用的 TiddlyWiki

TiddlyWiki
原本是想找個可以隨手記錄一些note的軟體,網路上也有許多人紹介各種方便的軟體。但是覺得跟我想像的不太一樣。
後來就把腦筋動到wiki或blog上,原本想自己弄個小小的local web server,跑跑wiki或blo的系統。後來試了一下又覺的blog不太適合,因為既然是要隨手記錄,就希望好寫好查好改,blog還要登入,寫成一篇篇post,在書寫和修改好像麻煩了點。不過就是自己一個人在local上使用的系統,也就不用考慮太多安全性的問題了。那wiki?好書寫,好修改。好像滿合適的。

就這麼打定主意啦,就使用wiki來當note,還可以把版面弄的漂漂亮亮的,要粗體斜體,要條列要表格都很好做。但是我就是這點不好,wiki系統這麼多種。還想再看看還有沒有其他更好用方便架設的wiki系統。雖然說使用xampp之類的東西要架個local server是完全不用費心,但還是想有沒有更簡單的方法。

結果就是發現了TiddlyWiki這個檔案型式的wiki系統。

因為wiki目前普遍的用法就是讓許多人一起去寫內容,但是人多問題多,所以就需要許多功能來讓多人使用方便也預防有人搗蛋。像database啦,版本回復啦,真的是很棒的功能.....對很多人一起寫的時候。但是我只有一個人呀。只是要當note當小km系統還要弄個database還要版本回復。幸好,我還沒病的這麼重。

TiddlyWiki就很適合我目前的需求啦。只要一個html,利用javascrpt還做了許多很炫的功能(雖然這不是我的重點),可以使用wiki的語法,還可以帶來帶去,不需安裝軟體(好吧,你需要一個支援javascript的browser)。在公司想到的事情可以方便的記下來回家再搬到別的地方。愛死它了。還有pluging可以同步到其他的wiki系統。

TiddlyWiki也擁有大部分wiki系統所有的功能。主要缺的是沒資料庫,沒版本記錄功能。但還是有一般的搜尋功能。如果定位成個人小型的wiki系統,這些功能反而就沒什麼重要了。而且TiddlyWiki還有plugin的能力,網路也有為他寫的各種plugin。另一方面TiddlyWiki是由javascript寫出來的,所以browser對javascript的支援能力就很重要。但是內行人都知道各種browser對javascript支援實在很混亂。幸好在前兩大ie和firefox的支援上都還ok。對Safari需要另外的pluging。有帶來帶去的需要的人可以考慮firefox portable。和TiddlyWiki一起帶著,應該還不算是太大的負擔。

TiddlyWiki本身彈性設計的plugin可以做很多有趣的事情。可以有wyswyg的editor,可以利用plugin從其他wiki系統轉換資料,使用其他wiki系統的語法。我覺得另一個很有趣的計設是有由TiddlyWiki加上plugin變成GTD軟體(Get the Thing Done)。TiddlyWiki也有熱心的人中文化,有中文教學,還有中文的google group,整體來說中文資源還不少。

我正努力的推廣給我的朋友們使用。

TiddlyWiki Office Site

TiddlyWiki繁體中文版

中文版使用教學

Tiddyspot網路版

http://www.martinswiki.com/
提供了許多plugin,包含了能使用MediaWiki,JSPWiki,Trac 還有其他語法的plugin,
還有轉出轉入其他wiki系統資料到TiddlyWiki的plugin


Ahwii業務效率寶典:TiddlyWiki不只是Wiki
列出許多TiddlyWiki的資料連結

TiddlyWiki base GTD系統
MonkeyGTD
Ducbed
TagglyTagging

Ahwii業務效率寶典:GTD系統與TiddlyWiki激起洶湧浪潮
TiddlyWiki及一些TiddlyWiki base GTD如MonkeyGTD,Ducbed 軟體中文化

2008年1月8日 星期二

初試 QT

最近換了新公司。新公司採用QT做為windows的library。剛開始的一兩天先摸一摸QT。之前只有使用KDE的經驗,沒真的寫過QT的程式。

初學的心得覺得雖然沒用過,但有VCL和MFC的經驗去看,很多地方猜就能猜出個七八成。
覺得現在的軟體設計在某些陪分應該算是比較成熟點了,大家的做法在互相學習互相參考下之後,採用的架構和方式都很像。很多機制或觀念大家的做法都差不多。即便是實作的方式不同,但有的一看就知道精神是一樣的。其實這就是技術的累積和成熟。

像很多人覺得C#抄襲了Java很多地方,但是這就是站在巨人的肩上才更能看的更高更遠。我也覺得Java也從從C++或Ada的身上學到許多該做和不該做的事。

不過據說QT的授權還滿貴的,到底有多貴呢?真是好奇。

2007年10月19日 星期五

整理的很好的自由設計工具列表

最近才看到這個列表,整理的相當好,相當豐富。對做網頁設計的人應該很有幫助。
Jas9 Taipei. » 自由設計工具補完計劃

免費又好用的電腦畫面錄製軟體-wink

在做教學文件時,常常遇到需要教導別人如何使用,應該有什麼結果出現。千言萬語不如一個畫面。能夠讓人家看到你的操作流程和畫面呈現在溝通上相當省事又有精確。

Wink就是這樣一個拯救大家的免費軟體。電腦畫面錄製軟體其實很多,連adobe也出了一個Captivate 的產品。不過那不是免費,所以對於一般的使用上,其實wink就很好用了。還可以把錄製的結果轉成flash或是exe檔。個人是比較喜歡用flash的方式輸,還有跨平台的好處。

wink本身操作相當方便,也很流暢。就使用過好幾次的經驗裡,對他相當的滿意。還可以錄音配合你的操作,有錄影的效果又比錄影方便許多。

Wink Homepage

2007年10月3日 星期三

可視覺化視窗設計的IDE - 拖拉做畫面

曾有朋友想要學習寫一些window ap,但是並非專業的程式設計人員,只是想自己寫幾個給自己用的工具程式。所以請我推薦一下他可以怎麼學習,學習什麼工具。既然只是業餘的程式設計,當然就不用推荐太heavy的工具或是要他從頭學起,畢竟他只需要寫幾個輔助性質的工具程式,真要他從基礎學起會嚇所有人。

其實我一直認為像這種真正可以對人的生活幫的上忙的程式才是最有用的工具程式。E化或自動化的目的是要減少人的負擔或是消弭因為人有些行為無法很精準帶來的困擾。

當然以light user來說,一樣重新學一種程式語言的話。我的推薦當然會是Java或C#為首選。如果有C/C++的基礎,那就採用C/C++即可。當然Visual basic也是一種選擇。因為以一般的user來說,大部分的程式設計語言都能滿足他們的一般性需求。所以重點就變成選擇一個學習門檻不要太高、有較多人討論、有豐富的函式庫以及另一個重點-可視覺化的設計視窗介面-的開發工具。這樣有問題時較容易和別人討論得到解答,也可以用豐富的函式庫協助他省下許多事。

有許多商業的開發工具像Borland的C++ Builder,Microsoft的Visual Studio, 都很優秀,也很便利。不過在價格上就比較不親和一點。所以我這裡就記錄一下個人知道的免費開發工具裡比較好用又有視覺化的設計適合light user。C#我比較不熟悉,所以就以Java和C/C++為主 了。

Java

Eclipse

Java的領域裡提到免費IDE第一個想到的就是Eclipse。雖然說Java本身就提供了視窗計設的package,但是為Eclipse所開發出來的SWT (Standard Widget Toolkit) 比Java內建的AWT或Swing更好用,效能也更好。SWT的最佳範例就是Eclipse本身,Eclipse就是使用SWT來開始他的視窗介面。基本的Eclipse並沒有包含可視覺化的設計視窗,但有其他免費及商業的Plug-in可用。而且Eclipse不只可用於Java,也可利用Plug-in擴充成為開發其他語言的IDE。

NetBeans
NetBeans是由Java的老大哥Sun所開放出來的免費IDE,本身就有視覺化的設計視窗介面。但是他是使用Java的Swing做為視窗介面元件和Eclipse不一樣。

C/C++
C/C++的視窗設計需要視窗函式庫。如果視窗函式庫還具有跨平台的能力,那設計出來的程式自然也就具有跨平台的能力了。這裡我只提C/C++具有跨平台的又具有視覺化的設計視窗的IDE。

wxDev-C++
wxDev-C++看名字就可以猜到跟Dev-C++跟wxWidgets應該有點關連。沒錯,wxDev-C++就是Dev-C++的擴充。加上一個form designer讓你可以用視覺化設計wxWidgets的dialog及frame。但是由於Dev-C++是由Delphi開發的,所以只有windows的版本可使用。wxWidgets是一套跨平台的函式庫。可以讓你的程式在不需大幅修改就能跨平台執行。wxWidgets不只提供了視窗的函式庫,連socket, xml, 甚至是OpenGL都有提供,是很好的跨平台solution。另外值得一提的是除了C/C++,配合一些binding ,wxWidgets也可以讓其他的語言使用,python, ruby, perl都能用。


Ultimate++
Ultimate++既是一個IDE也是一個視窗函式庫。支援標準的C++,設計理念也很新。但是因為比較年輕,所以相關的討論和文件相較之下比較少。也可以配合其他如GCC或是Visual C++的compiler使用。不過他的函式庫和IDE是整合在一起的,所以要用他的函式庫好像就只能使用他本身這個IDE了。


KDevelop
KDevelop一開始是要給KDE(K Desktop Environment 可用於Unix-like系統上的桌面環境)一個比較好用的IDE。後來慢慢變成一個通用的IDE環境。如果使用KDevelop最直接就是配合QT這個視窗函式庫使用。QT也是一個相當完整又成熟的跨平台視窗函式庫,還得過許多大獎。QT甚至還有embedded版本。不過比較可惜是QT for windows不是免費的,不過仍是相當好的一個選擇。KDevelop不管在Linux或Windows都可使用,配合QT-Designer,就能有視覺化視窗介面設計能力。


另外有一些是只有做視覺化視窗介面設計,但並沒和開發環境整合在一起,對新手來說是比較麻煩一點,但順便紀錄一下。

Glade
Glade是gtk+的UI Designer,只能做UI的design,做完後存成xml。其他的任何language只要配合libglade這個library就能使用你的UI設計。

wxGlade
wxGlade由名字可猜得到可能是由Glade所啟發的Idea。事實上,wxGlade一樣是UI designer,也只能做UI design。但是wxGlade做出來的結果是使用wxWidgets,他能將你的設計轉化成程式碼,讓你的程式使用。特別要提的是wxGlade是用python+wxWidget寫的。

2007年9月27日 星期四

cakephp 使用感想

cakephp 是一個php的MVC framework,很像rails的感覺,感覺上就像是ROR的php版。不過因為php本身語法的關係,所以沒辦法像ruby這樣的簡潔,但是用來做prototype或是小系統倒是非常的方便。最近用cakephp做了兩個小系統,因為系統行為比較單純,對資料庫的操作也比較簡單,使用cakephp所提供的ActiveRecord就很方便,大部分的力氣都花在UI上。

不過cakephp的UI的部分不算好用。設計的觀念很好,但是用起來有點綁手綁腳,有些可以在直接在view裡做的資料轉換變成需要controller來配合才會好做。也許是我觀念還不好吧。總覺得應該要有更方便的做法讓view能更獨立,對controller提供的資料也能在呈現方式上做更靈活的改變,而不要淪為template,這樣比較像我覺的view該做的事。

cakephp 在效率上沒有想像的快。我用的是stable的1.1.x版,之前也看過和其他language的MVC framework比較,相較下cakephp的效率是略遜一籌。不過因為只是簡單的使用他提供的功能,沒特別注意資料庫存取的部分。可能會有重複讀取DB及讀取一些不必要資料的問題。我想rails的這種情況在cakphp應該也是會發生,rails如果呆呆的亂寫,可能會產生不必要的大量資料庫存取,大大影響整體效率。不過這不算是rails的問題,應該算是使用人的問題。

整體而言,cakephp 還滿方便好用的。如果在單純的中小型系統裡,用cakephp可以有很大的幫助。輕輕鬆鬆就可以做出具有良好架構的系統。加上cakephp的plug-in, helper也很容易擴充,雖然網路上的分享的擴充還不多,但自己寫也很容易。雖然不是很完美。但cakephp的確是使用php的朋友一個好選擇。