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的朋友一個好選擇。

2007年7月25日 星期三

comiple sqlite3 for arm uclinux

比較新版點的Sqlite3的autoconfig檔本身就己經支援了cross compiler的偵測,基本上只要在configure裡下一點參數就可以。

可以參考 http://www.sqlite.org/cvstrac/wiki?p=HowToCompile 裡 Crosscompile linux x86 -> linux arm的說明。

不過help裡的說是以Sqlite 3.3.7,我測試結果到3.3.17好像都還ok,到了3.4.0因為使用了isnan,所以linking時需要加上math library。

先在sqlite下建立一個building用的目錄
這是我使用的configure command。

AR=arm-uclinux-elf-ar \
RANLIB=arm-uclinux-elf-ranlib \
OBJDUMP=arm-uclinux-elf-objdump \
AS=arm-uclinux-elf-as \
CC=arm-uclinux-elf-gcc \
LD=arm-uclinux-elf-ld \
NM=arm-uclinux-elf-nm \
STRIP=arm-uclinux-elf-strip \
CFLAGS="-lm -elf2flt -DSQLITE_DISABLE_LFS" \
../configure --disable-tcl --host=arm-uclinux-elf

因為我的corss commpiler不支援big file,所以我另外再加上disable big file support的參數。
我使用FLAT的,所以再加上-elf2flt產生flat的執行檔。


2007年7月13日 星期五

為什麼swt的browser對applet支援竟然有問題

為什麼swt的browser對applet支援竟然有問題,一開始沒先測試真是大錯特錯。怎麼樣都沒想到怎麼會對自家的東西支援有這麼大的問題。無言。