跳到主要內容

發表文章

目前顯示的是 2006的文章

優雅的宇宙(Elegant Universe)的影片

今天上網查資料的時候,無意中看到 優雅的宇宙(Elegant Universe) 的影片。這個影片是依據Elegant Universe一書來拍攝的,主要的內容cover了弦論及大統一理論。對物理有興趣的人可以看看。影片分成許多小段,總共時間三小時。
http://www.pbs.org/wgbh/nova/elegant/program.html

該死的WTSRegisterSessionNotification()在Vista下面沒用了

最近才發現WTSRegisterSessionNotification()這個Function在Vista下面已經失去作用了。變成之前在XP下面可以在切換使用者後繼續工作的程式,現在沒有作用了!上網找了一下,發現新的替代方案要去寫Service程式。天阿!哪那麼多閒功夫阿。

還好,後來發現WTSGetActiveConsoleSessionId()這個function在Vista下面還有作用。因此,透過Timer的方式定期去呼叫這個函式確定Active console session是否不一樣了。一旦不一樣,就表示session被切換了。當切換回原來的session時,就會得到一樣的id。如此便知道已經回到原來的Session了。程式概念大概如下:


DWORD MyId = -1;
BOOLEAN SessionChanged;

// 程式啟動時,先取得目前的session id並且記錄下來。
OnCreate()
{
MyId = WTSGetActiveConsoleSessionId();
SessionChanged = FALSE;
}

OnTimer()
{
if (SessionChanged)
{
if (MyId == WTSGetActiveConsoleSessionId())
{
SessionChanged = FALSE;
// Session已經重新回復到原來的session.
// 在這裡進行必要的回復工作。
}
}
else
{
if (MyId != WTSGetActiveConsoleSessionId())
{
SessionChanged = TRUE;
// Session已經被改掉了,需要在這裡趕快進行必要的處理。
}
}
}

這其實並不是一個很好的作法,因為要透過一個Timer定期的去polling,Timer的週期太短容易造成系統的負擔,太長的話,可能會抓不到Session的變化。不過,經過一些實驗之後,發現大約2-4秒的週期去polling,還沒有什麼大的問題。

如何使用多個DDK的setenv在一個batch file

下面的範例簡單的展示了如何在一個batch file進行多個不同平台的DDK驅動程式製作。看起來是很簡單,但是也花了我一段時間,因為Microsoft的MSDN上面所給的範例是錯的,根本run不起來。

REM Filename is buildall.bat.

set CWD=%cd%
set BUILD_TYPE=%1%
set DDKPATH=D:\winddk\5744

cmd /C "%DDKPATH%\bin\setenv.bat %DDKPATH% %BUILD_TYPE% WLH && cd /D %CWD% && build"
cmd /C "%DDKPATH%\bin\setenv.bat %DDKPATH% %BUILD_TYPE% AMD64 WLH && cd /D %CWD% && build"


使用時,只需要在要編譯的source code目錄下,輸入如下的命令即可:
> buildall.bat chk
或者
> buildall.bat fre

這樣一次可以建立32與64位元的Vista驅動程式版本。

包裝OutputDebugString成為printf style的介面

下面的程式將OutputDebugString包裝成printf介面,有需要的人可以自行copy回去使用,這對於輸出Debug資訊上有一定程度的幫助,另外對於看Debug message的工具,個人推薦使用DbgView ,目前最新版本已經可以在Vista 32/64-bit平台下面使用。實在是一個非常方便的工具。


#ifdef DBG

void __cdecl DbgPrint(LPCTSTR format, ...)
{
static TCHAR DbgMsg[DBG_MAX_BUFFER_SIZE];
size_t len;
TCHAR *p = DbgMsg;
va_list args;

va_start(args, format);
StringCchVPrintf(p, sizeof(DbgMsg) - 1, format, args);
StringCchLength(DbgMsg, sizeof(DbgMsg) - 1, &len);
p += len;
va_end(args);

*p++ = '\r';
*p++ = '\n';
*p = '\0';

OutputDebugString(DbgMsg);
}

#endif // DBG

運用subst命令來統一您的路徑

subst是一個從DOS時代就有的命令,一直到最新的Vista作業系統,您都可以使用它。若您在command視窗中輸入subst /?,您就可以看到如下的輸出:

C:\>subst /?
建立路徑與磁碟機代號之間的關連。

SUBST [drive1: [drive2:]path]
SUBST drive1: /D

drive1: 指定您要指定路徑的虛擬磁碟機。
[drive2:]path 指定您要指定給虛擬磁碟機的實際磁碟
機與路徑。
/D 刪除取代的 (虛擬的) 磁碟機。

鍵入 SUBST 而不加任何參數會顯示目前所有虛擬磁碟機的清單。


舉個例子來說,如果您輸入:

> subst p: d:\mySourceCode

如果一切正常,您將會發現在『我的電腦』中多了一台磁碟機( P: )。而且,他的內容就是d:\mySourceCode的內容。這樣的命令有什麼用途呢?其實非常好用。比如說公司內大家在開發一個程式,由於大家對於目錄擺放的習慣不同,加上一些Tool很笨,只會使用絕對路徑。往往導致每次copy或是透過版本控制軟體checkout別人的程式時,就需要花時間將別人設定的路徑改過來。

有些人會採用另外一種方式,就是大家約定一個同樣的目錄。只要是source code就放在那個目錄下。舉例來說,使用d:\SourceCode。問題在於,如果很不幸的該電腦剛好只有一個分割區。那麼就沒有辦法統一大家的目錄。

因此,我們可以規定一個比較不常用的磁碟槽,如:p槽。透過subst將source code目錄變成這個磁碟機。所有人就可以在這個統一的目錄下面做事,而不需管source code真正的存放路徑了。

用Python操作你的Windows

The Script Center Script Repository: Sample Python Scripts
在Microsoft的TechNet上面有一個網頁放有許多使用Python來控制Windows的範例程式。透過這些範例程式的學習,我們就可以透過Python來取得許多電腦內部的資訊。這些資訊多半都是透過存取WMI資料庫取得的。舉一個簡單的例子來說,下面的Python範例可以讀取您的CPU資訊及記憶體大小:

import wmi
w = wmi.WMI()
for processor in w.Win32_Processor():
print "Processor ID: %s" % processor.DeviceID
print "Process Name: %s" % processor.Name.strip()
totalMemSize = 0
for memModule in w.Win32_PhysicalMemory():
totalMemSize += int(memModule.Capacity)
print "Memory Capacity: %.2fMB" % ((totalMemSize+1048575)/1048576)

『Delphi深度歷險』與『C++ Builder深度歷險』下載

http://www.iis.sinica.edu.tw/~ktchen/index_c.html

『Delphi深度歷險』與『C++ Builder深度歷險』這兩本書的作者 陳寬達先生已經開發他的書讓大家在非商業用途的前提下使用了。其中一本C++ Builder深度歷險我也有買,經過一陣子的研讀的確對於如何使用VCL以及利用C++ Builder操作Win32系統有了更深一層的認識。這兩本書當真不錯,而作者又極為有心的提供給大家免費閱讀。我想對於Delphi與C++ Builder有興趣,而還未讀過這兩本書的朋友,應當趕快去下載回來。
Delphi深度歷險C++ Builder深度歷險

通往專家心智之路

Scientic American雜誌中,有一篇文章『通往專家心智之路』。這篇文章是科學家研究何以西洋棋大師的思路可以如此敏捷與遼闊,進而研究專家的心智活動與一般人不同之處。
這篇文章點出了一個重點,所謂的專家對於特定領域在心中建構的能力遠遠超過一般人。舉例來說,西洋棋大師可以在短短幾秒鐘內,將整個棋盤記下來。而普通人就算花上數小時的時間也不見得能夠記得完整。但是,如果以隨機的方式將棋子擺在棋盤上面,則西洋棋大師就無法發揮前述的神奇記憶能力。我想這其中的關鍵在於專家真正的能力是對於脈絡的掌握度遠高於普通人。所以,他所記憶的是組織與脈絡。而不是死記硬背的方式。
同樣的道理亦適用於程式設計師。要成為程式設計師的專家,自然是要對整個程式的架構與脈絡能夠了然於胸。所以,如果連自己寫的程式架構都不清楚的話,是不能成為一個好的程式設計專家的。
另外,文章中亦提到了一個所謂的『十年法則』。簡單的說,要成為真正的專家,沒有十年是辦不到的。所以說,專家亦是要下苦功才能所有成的。但是,所謂的天才又是怎麼一回事呢?我想這可能跟效率有關係。所謂的天才也許是因為他能夠專心致意且心無旁騖的學習。所以,他的效率遠高於一般人。因此,天才比一般人更容易在某些領域得到成就。

原來Turbo C++就是BCB 2006....orz

搞了半天,原來新的Turbo C++就是BCB 2006嘛...
害我期待了這麼久...
好吧...不過至少BCB是有繼續發展下去啦...
就看後續進行的如何吧...

一個Python程式可幫檔名加上日期與時間

很多時候,我們希望能夠將檔案或是目錄名稱加上一個時間及日期,以便release。所以,我就寫了一個小小的程式來達到這個目的。我把這個程式貼上來,讓有興趣的人可以拿去使用。
--
#!/usr/bin/env python
# -*- coding: ascii -*-
"""
Usage: cfgfn.py [filename or directory list]
"""
import sys
import os
import time
import re
import glob

ro = re.compile(r'(?P<FN>.*)-[0-9]{8}-[0-9]{4}(?P<EXT>.*)')

for fnl in sys.argv[1:]:
for fn in glob.glob(fnl):
mo = ro.match(fn)
if mo:
pre = mo.group('FN')
ext = mo.group('EXT')
else:
pre, ext = os.path.splitext(fn)
newFn = pre + time.strftime('-%Y%m%d-%H%M') + ext
os.rename(fn, newFn)
print 'Rename %s -> %s' % (fn, newFn)

Turbo終於來啦

上次介紹過的Turbo Explorer,現在終於開放下載了。目前有下列的版本可以下載:
Turbo C#Turbo C++Turbo DelphiTurbo Delphi for .Net有興趣的人快到Turbo Downloads去抓吧。

唉!被入侵了!

原本以為是server的硬碟爆掉!經過檢查以後才發現原來是被入侵了。被入侵後不曉得為什麼就把系統搞爛了。不過,不曉得這個入侵者是怎麼想的,似乎以破壞為目的。不太像高級的cracker。還好一些重要的文件都有備份。最近公司正忙,等我有空再重灌系統吧...

同時,我也在思考是不是要更換之前使用的CMS系統.....

離職診所

在台灣有名的104就業網站上面,104的董事長楊基寬寫了一篇文章名為『離職診所』。這篇文章中列舉了十點關於想離值得人應該先深思的事情。我想其中的一個重點在於現在的人似乎都非常的本位主義,說白一點就是自私。凡是不先反省,也不先反求諸己。只想到自己的利益,想到一切都是自己應得的,從不想想自己的付出是否足夠,或者是自己的付出是否是其他人所想要的。總之,就算你沒有想要離職,這篇文章還是值得一看的。
離職診所

有限狀態機編譯器

很多時侯我們寫了很複雜的程式流程,搞到最後自己都不知道程式走到哪裡去了,而且也完全trace不出來。這個時候,我們都會希望能夠有個清楚的方式來幫忙描述這樣的程式流程。其實,學術借的前輩們早就發現了一個好的方法論。這個就是所謂的有限狀態機(Finite State Machine)。其實,FSM並非只是學術界在用的東西,他是一個非常適合整理複雜邏輯的工具。通常,一個程式如果是使用FSM做出來的,他的穩定度多半都遠遠超過直接hard-code的方式。

這裡要介紹的是一個稱為狀態機編譯器(The State Machine Compiler, SMC)。這個工具提供了一種描述狀態機的語法,您使用這個語法寫出自己的狀態機描述,並且儲存於一個副檔名為.sm的檔案中。然後SMC就可以幫您產生出任一種下面語言的程式:

C/C++C#VBPerlPythonJavaRubyincr Tcl

SMC網站:
The State Machine Compiler

Python+Cairo

Python+Cairo=PyCairo
相信大家都知道什麼是Python script,也都知道他的強大。不過Cairo可能知道人就稍微少一點了。簡單的說,Cairo是一套Open source的向量圖的繪製程式庫(Drawing library)。你可以透過這個程式庫來產生出一些向量圖。而後來的Cairo也加進了對於SVG的處理。PyCairo正是讓你可以在Python內運用Cairo強大能力的一套module。有興趣想要寫向量圖工具的人,不妨試用看看囉。

www.dev.idv.tw停機

Dear www.dev.idv.tw的觀眾們:

看起來www.dev.idv.tw的硬碟爆掉了! 我人又在國外,無法進console處理。所以暫時把它shutdown了。等我回台灣後再處理囉。應該9月份就會恢復了!

Turbo回來了!

傳說中的"DevCo"(說實在我不知道他到底是Borland裡面的一個team,還是怎樣的),反正他們y在8/8正式release了Turbo系列。繼承Borland最經典的品牌,不知道能否創造出Turbo時代那樣的熱潮呢?

不過,從今天算起,距離可以正式下載該產品還有19天喔!
TurboExplorer

好笑的Borland C++ Tool time video

下面的Video是模仿美國電視常見的工具介紹節目。一位主持人跟另一位助理,還有一位性感女郎。主持人用不知道哪一套C++工具,助理用Borland C++好像是5.0吧。兩個人比較誰開發程式的速度比較快。最後助理已經寫好了,主持人還沒寫出來。而且電腦還出trouble。最後主持人的電腦就爆了!真好玩!
好笑的Borland C++ Tool time video

Bugzilla interface for Python

說到這個Bugzilla,的確是Bug tracking的好幫手。但是話說回來, 它的interface實在是令許多新手望而卻步。導致每次在推廣Bugzilla的時候都困難重重。現在,找到了PyBugz這個工具,他是一個python script與command line的工具,可以透過python來控制Bugzilla。這樣應該有機會設計出一個比較好用的介面吧。
PyBugz

NeXTStep 3的Demo Video

今天在網路上到處亂逛的時候,居然給我找到了Steve Jobs在介紹NeXTStep 3的Video。以前我還為了找這個Video發信給Apple(那時Steve Jobs剛回Apple),結果他們說他們自己也沒有,等找到後會想辦法通知我。結果,還是沒有找給我。

我覺得所有覺得現在電腦軟體很進步的人,都應該去看看這個影帶!我想當你看完之後,或許不會覺得有什麼。這個系統上面的東西,現在哪台電腦上面沒有?不過,請你注意那個主講人是Steve Jobs。搞出一堆 i 開頭產品的那個Steve Jobs。在影帶上面他多年輕阿。因為這是1991年的影帶。

1991年就已經做得到這樣了,經過十多年了,我們現在又有什麼進步呢?別說進步了,我覺得跟影帶中的RAD開發工具相比,根本就是退步了!

另外,Steve Jobs真的是魅力無法擋,年輕的他比電視主持人還要帥。台風更不是那些電視主持人可以比的。

可惜這個是從VHS影帶上面轉錄下來的,不是很清楚,不過還是可以知道他在介紹什麼。
NeXTStep 3 Demo by Steve Jobs

pyvm

最近在網路上看到了一個叫做pyvm的東西。光看名字應該猜的出來他應該是一個Python Virtual Machine。的確!他就是一個python virtual machine。重點是他比正版的Python小很多,其核心的部份大概為390KB左右。使用stackless的方式實作,也保證了他的速度。根據網站上的資料,他的速度可以達到Python 2.4的兩倍。
不過,我個人的看法是,他可以應用在一些對於CPU及記憶體要求較嚴格的環境。像是嵌入式系統。
pyvm

推薦文章 - 讓錯的程式看得出錯

許多人在學校寫程式的時候就沒有養好coding style。到外面來工作的時候,因為時程的壓力,寫出來的程式更是一團亂。後面收尾的人往往要費很大的功夫,才能瞭解前面的人程式在寫什麼東西。
老是覺得自己程式寫的亂七八糟的人,該好好閱讀下面的文章。還在使用所謂的匈牙利命名法(Hungarian Notation)的人也該先好好閱讀一下這篇文章,才知道自己原來變成了冤大頭了。
讓錯的程式看得出錯

一個具象化的功夫遊戲

好吧!雖然名字不怎麼樣突出,但是這個遊戲是透過複雜的影像擷取技術,讓實體人物的動作,可以即時的變成遊戲中人物的動作。而且他是直接將你的影像投影在 遊戲中,然後分析出你的動作,再與遊戲中的人物互動。而且多位實體人物同時上場也是可以的。上面的link中有他的demo影片與觀眾實際玩的片段。十分有趣!
Kick Ass Kung Fu

wxWidgets 2.7.0開發版釋出

最近好一陣子沒注意wxWidgets的相關消息了,突然就看到就看到2.7.0出現了。雖然還是在開發中,但是很高興看到他又有進展了。目前這個版本中主要新增了新的AUI(Advanced User Interface)程式庫。這個程式庫特別提供具有docking功能的視窗。此外,還有新的richtext元件。看來用wxWidgets應該能設計越來越漂亮的程式了。
wxWidgets 2.7.0

另外開了一個blog

我另外開了一個blog,這個blog的主題為『Gary的數位設計日誌』。其內容將以Digital design為主。有興趣的朋友可以過來看看喔。

在Ubuntu下找不到glib-config

今天為了要compile某個程式,在configure的時候,說我的系統找不到glib-config。我花了很久的時間把所有跟glib, gtk有關的套件,包含開發套件統統都裝了起來。但是還是找不到。心中納悶著,Ubuntu應該沒有這麼爛吧,這麼簡單的程式怎麼會沒有包進去呢。後來想想,我都是裝glib2的套件,沒有安裝過glib 1.x的套件。會不會是這個程式在glib2裡面已經被Deprecated了?於是就把glib 1.x的套件裝了一下。

果然!裝完以後glib-config就出現了。唉...白白浪費好幾個小時的時間。

Clocklink

友人介紹一個提供許多時鐘模組的網站,可以將這個時鐘自由的放在你的網頁中,這樣你就有酷炫的時鐘可以用囉。
clocklink

程式設計師用計算機?

昨天買了一台計算機SHARP EL-531W。一台工程用計算機有什麼好說的呢?其實主要是我看到了它提供的二進位,八進位及十六進位的轉換,還有提供了NOT, AND, OR, XOR, XNOR的計算。像我這種偷懶的程式設計師最討厭做這種運算了。像是十六進位轉二進位,在寫Firmware程式的時候常常用到,我看到其他人用手算,就覺得很累。再加上那些NOT, AND, OR, XOR等等的。頭都暈了。
之前也不是沒有看過類似的功能的計算機,但是價錢都在NT$1000以上。就在昨天去美國office附近的一間店買文具的時候,看到這台計算機在特價。特價期間美金九塊錢!換算成台幣也不過才300元。一台不錯的會計在用的計算機可能都超過這個價錢。
或許有人要說用個Microsoft附的計算機程式不就可以了?我對於這個問題注意很久了,一般人想過的,我都想過了。我也花了很久的時間上網找了一堆的計算機程式。但是沒有一個符合我的要求的。我甚至想過自己寫一個,但是都只是想想而已。而且,不是常常都有電腦可以開著用的。有時與hardware engineer一起debug的時候,還要找台電腦,這多麻煩阿。
上面這台計算機,雖然不是我心目中最佳的程式設計師用的計算機,但是也勉強算還可以了。一些場合還可以拿出來頂一下。
話說回來,有沒有廠商聽到我的心聲,出一台程式設計師用的計算機?有廠商需要的話,我可以幫忙提requirement喔。

ChamberPlus System Level Studio

最近找到了一個網站ChamberPlus System Level Studio,上面的技術資料寫的真不錯。主要是關於USB與一些單晶片的資訊。寫的比市面上的一些書籍都好。看得出來作者本身的功力深厚。希望台灣能多一點這種具有研究及分享精神的人。 MP3系統應用系列USB系統應用系列單晶片與引擎控制其他系統應用

新的討論區建立!

自己maintain一個討論區實在是很辛苦的事情,而且我也不喜歡那種Web介面的討論區的形式。我反而比較喜歡USENET那種的方式,感覺起來比較 有在討論的感覺。剛好看到Google有提供讓人建立自己的group的功能,所以就先來建立兩個討論區吧。希望能與有興趣的朋友一起討論。

garylee_digit (by e-mail): 數位設計的相關討論區。
garylee_prog (by e-mail): 程式設計的相關討論區。

要加入的朋友,點選上面的link進去後,可以找到『加入此群組』的連結,點進去後就可以加入了。不過要加入似乎要有GMail的帳號。
有需要GMail帳號的朋友也可以寄信給我,我大概還有八,九十個可 邀請的帳號。

Spartan-3E Starter Kit

其實,自己對於數位邏輯的東西還蠻有興趣的,也利用空閒時間自己偷偷看了Verilog好一陣子了。不過,頂多只能run run模擬,沒有個什麼實際東西摸摸,總是缺乏實際的感覺。

上網查了一下,看到Xilinx之前有出Spartan-3E Starter Kit。有包含500K Gate count的FPGA以及製作好的電路板,上頭有LED,Character LED螢幕,按鈕,...等等等。而且只要美金149元!

對於我這樣的初學者來說,是個蠻不錯的實驗平台。剛好,我人又在美國,訂這個東西很方便。我想,等我把上面所有的週邊都控制過一遍,再想辦法寫個簡單的RISC MCU,應該就勉強算入門了吧。

後續,我會慢慢把我對於這個板子的實驗心得慢慢po上來的。

小烏龜CVS(TortoiseCVS)

CVS其實是每個電腦工程師都應該要會的技能。不過對於長期使用Windows的人而言,對於CVS或許有種敬而遠之的感覺。其實,CVS在 Windows上面有一個與Windows Explorer結合的非常好的工具叫做TortoiseCVS 。我已經使用這個工具好幾年了。這個小烏龜CVS的特點在於他將CVS與Windows 檔案管理員的右鍵選單結合在一起。不論你今天要commit, update, 看history, 或是製作tag。統統用滑鼠右鍵就可以搞定了。想要使用TortoiseCVS又不清楚他到底該如何使用,可以先看一下的幾個link:

TortoiseCVS首頁

TortoiseCVS 使用者手冊中文版 第一章
TortoiseCVS 使用者手冊中文版 第二章
TortoiseCVS 使用者手冊中文版 第三章

CVS 版本控制系統簡介

有趣的web hosting技術

網路技術何其多,從以前的純靜態網頁,CGI動態網頁。現在隨便念念都一堆技術名詞,像是PHP,ASP,JSP,WordPress,Plone, Rail,Django,TurboGears等等等。還有一堆資料庫。如果不是像我們這麼不務正業的人,大概不會想在自己的家裏弄個Server然後架 出一堆奇怪的Server吧。

而傳統的提供網頁空間的公司,通常會將你能夠使用的東西限制的死死的。有個PHP跟MySQL給你用可能就非常了不起了。要不然就是一堆別人架好的blog系統。如果想要接觸到上面說得那些新技術,又不想自己花時間架站的話,要怎麼辦呢?

現在已經有公司聽到這些使用者的心聲了。這間公司叫WebFaction。 當然,他的服務是要錢的,而且有不同的等級,從每月7.5美金到350元美金都有。而且可以讓你隨便使用PHP,WordPress,Plone, CheeryPy,Ruby On Rail,Django及TurboGears等等的技術。而且,不僅僅是將這些軟體架好給你用而已。他提供了很好的Web管理介面。您可以自訂使用哪幾 個Web application。他有提供demo的影片(Flash, QuickTime),大約五六分鐘的時間,非常值得一看。

推薦blog --Thinker

Thinker: http://heaven.branda.to/~thinker/GinGin_CGI.py

Thinker是我以前在元智大學的學弟。雖然是學弟,但他的電腦功力可是比我深厚。他的文章都相當的有深度。其中有幾篇關於Python,對於 Python內部細節有興趣的人值得前往一遊。

現在想想以前的學弟都比我厲害許多了。自己真的有點不長進了.....orz.
以前還有一個學弟姓蔡的,現在叫蔡學鏞(不知道這是筆名還是他換名字了)。現在應該算是Java界的靈魂人物了吧。不過上次好像看到他發表了一篇關於 Java與.Net的文章,結果好像引起喧然大波。

TestLink

大概一兩年前,我就曾經在找一個可以用來管理test plan的軟體。當時就已經找到這個名為TestLink的軟體。事隔兩年,再次看到這個軟體,它 已經變得更為成熟了。TestLink本身是使用PHP所寫成,並且以MySQL作為其後端資料庫。當然,如果僅是這樣,並不值得我推薦它。他有一個很有 用的特點在於可以自動的產生出Test Report。他的report可以以HTML或是WORD及EXCEL的格式export出來。這對於每天要花很多時間撰寫測試報告的人來說,真是一件 十分方便的工具。

TestLink本身的特點如下:

Web-based. 可支援Mozilla, Firefox, IE等瀏覽器。
支援多個產品,每個產品可以用多樣的test plan, test case及keyword的設定。非常符合正式的測試流程。支援多個使用者,使用者可以被指定不同的角色,如管理員,leader,測試員等。Testcase以階層的方式呈現。支援Keywords。可以更為有彈性的組合及分類Testcases。每個測試項目可以指定不同的測試員,以及優先順序。也可以定義Milestone。多種Report可以選擇。支援多種格式輸出,如HTML, WORD及EXCEL。輸出報表可以透過工具直接寄出。支援多國語言(不過好像還沒有中文)。可與 bug-tracking system連結,如:Bugzilla, Mantis, Jira。
需求導向的測試。 如果你的公司每天有一堆的測試要做,而測試員們每天都是拿著一堆Excel表走來走去的。不妨看看這套系統吧。

Google的線上試算表軟體

最近看到Google推出了線上試算表軟體--Google Spreadsheets,也就是要用來對抗Excel 的東西。 馬上跑去登記申請一個試用帳號。沒有兩天帳號就下來了,真快!說不定因為我是GMail的忠實用戶吧。我的GMail還有90幾個邀請帳號還沒送完呢!

廢話不多說,趕快來試用一下這個軟體。基本上跟Excel還長得蠻像的!如果把那個Google的標誌遮著,說不定可以可以騙騙別人說這是最新的 Excel呢!Google的Spreadsheets可以存檔,不過是存在他的Server上。也可以透過下載的方式,將檔案下載回自己的電腦上。而且 可以選擇csv及xls等格式。不過,話說回來會不會哪天Microsoft告上法院說Google侵犯他們的檔案格式專利呢?

可惜,這個Google spreadsheets現在還不支援OpenOffice的試算表格式。要使用OpenOffice的話,可能要先存成csv或是xls格式才能轉換 吧。

如何根據所需的Baud rate計算出所需的TH1的值

新增文章一篇『如何根據所需的Baud rate計算出所需的TH1的值』。

在8051下面使用Serial port的時候,首先遇到的課題就是如何產生出所需的baud rate。這個問題,其實絕大部分的8051書本都會提到。這邊我特別將這個公式抽取出來,以省掉查書的時間...

簡介Regular Expression Component Library

身為一個軟體程式設計師,如果連Regular Expression都不知道,那麼絕對稱不上是一個合格的程式設計師。在Unix的環境下要使用Regular Expression絕對是很容易的事情,無論是工具或是程式庫一應俱全。

不過,在Windows的環境下,要使用Regular Expression就好像沒有這麼容易了。主要在於相對應工具的缺乏!而Regular Expression Component Library是我在Windows下面看過比較完整而且支援的Compiler比較多的一套程式庫。有需要在Windows下面使用Regular Expression的人不妨看看!

http://viper.python-hosting.com:4072/Components/RegularExpression/

它支援的編譯環境有:
Borland C++ Builder v3-v6Visual C++ v6Visual C++ v7(VS .NET 2002)Visual C++ v7.1(VS .NET 2003)Visual C++ v8(VS .NET 2005)

PyInstaller使用簡介

Python是一個強大的工具,可惜不是每個人的電腦裡面都有安裝。當您寫了一個好用的工具。要如何讓那些沒有安裝Python的人使用你的工具呢?對於 這樣一個需要standalone exectuable環境的需求,直到撰寫本文為止,我只看到兩個比較好用且有持續維護的套件。 一個是py2exe。另外一個就是本文要介紹的PyInstaller。

詳細內容

Visual Studio 2005 Express 開放永久免費下載!

Microsoft在四月底的時候曾經發佈了這樣的消息。也許很多人還不清楚甚麼是Visual Studio 2005 Express。簡單的說,它就是一個沒有IDE介面的開發環境。也就是將Visual Studio 2005的IDE拿掉後剩下來的東西。或許用習慣Visual Studio的人會說:『這樣還能夠開發程式嗎?』

對於我們這些常常自己寫Makefile的人來說,這樣反而是最好的環境。之前,許多提供Windows下原始程式的人,往往遇到一個問題就是不知道要叫使用者安裝甚麼編譯環境。現在,也許就可以叫使用者自己去download這個Tool回去安裝了!

不過說實在的,Microsoft也不是這麼大方的,在express版本裡面是沒有像MFC或是ATL這種東西的!大概Microsoft想說只讓大家寫寫console程式過過癮吧!如果是這樣,Microsoft就太小看網路上得高手們了!比MFC好的GUI架構網路上可多的是呢!

買了Apple Mighty Mouse!

雖然我連買台Mac mini的錢都沒有!但是還是好想有個甚麼Apple的東西來玩玩!在美國這裡的Fry's商店看到了Apple Mighty Mouse!Oh!可以在PC上面使用!真的嗎?可是有點小貴。要49.99美金!考慮了很久,最後終於買下來了!

用著Migthy mouse,感覺寫blog都快上許多 :)

早上老婆在Skype中聽到我花了快50美金買了一隻滑鼠,當場沉默了三分鐘!我想回台灣我就完蛋了!

TurboGears 1.0 preview

今日到TurboGears的網站上面,驚見1.0的preview已經出來了!看來 TurboGears 1.0已經不遠了!等1.0出來時就開始來玩吧!TurboGears是 與DjangoRuby On Rails同等級的Web Application Framework。目前也深受開發人員的矚目,我自己也在注意他的發展。之前由於還在beta版本的階段,而且無論是架構上或是介面上都還未完全固定下 來。相信等1.0 release後,就可以好好來研究研究了!

註:TurboGears與Django都是Python based的。Ruby On Rails則是Ruby based。

到美國了!

經過了三年再次到加州來出差。出差地點還是一樣San Jose。但是,剛來沒多久就感冒了!還是多喝開水,多休息好了。

新酷音輸入法0.29出來了

新酷音輸入法0.29出來了。新酷音輸入法是類於 自然輸入法或是漢音輸入法這種所謂智慧型注音輸入法的工具。差別在於新酷音輸入法是Open source而且同時提供了Win32以及X-Window下面兩種版本。這對於我們這種專門用注音輸入法的人來說,無疑是一個非常棒的選擇。而且在選字 上面他的表現並不比自然輸入法差。如果還在用於愚蠢的新微軟注音輸入法的人,真應該趕快換這個輸入法來用用。

新酷音輸入法0.29下載

PyWinauto模組

今天注意到一個Python module叫做pywinauto。簡單的說,這個工具可以讓你透過寫Python script控制Windows視窗。例如:開啟程式,在指定的視窗中輸入文字,或是模擬滑鼠click等等。透過這個module我們可以用來進行一些程式的自動化測試。或是自動化的進行一些耗力費時的操作行為。

我自己安裝後,稍微試了幾個東西,像是開啟Notepad及小畫家等。都可以運作。不過有遇到中文的問題。原本,他的範例是在英文的Windows下面執行 的,所有有些動作像是FindWindow()時用的視窗標題文字他是用英文,但是我的作業系統則是中文。雖然還沒有進行測試,但是我想應該只要把程式的 部份改成中文應該就可以了。

有興趣的人可以到他的專案網頁看一 下。

中文Engadget網站

最近常在看中文Engadget網站。這個網站上面幾乎每天都 會介紹新奇好玩的科技玩意兒(我想這就是為何它叫Engadget吧)。對於新奇科技產品有興趣的人可以常常來看看到這個網站上面晃晃。聽 說這是比爾蓋茲每天必上網站的第二名(第一名是hotmail)。不知道的是真的還是假的!當然,比爾蓋茲上的是英文版的Engadget

May I hate you?

本週六到光華商場附近晃晃!在某間店門前見到了好笑的事情。有個日本客人跟店員支支嗚嗚的講了一些聽不太懂的東西(我猜可能是日文)。那個店員可能懂一點 英文吧,所以就有了下面的對話:

店員:『Can you speak English?』
日本客人:『...A little...』
店員:『May I hate you?』
日本客人 .....傻掉.......

看起來那個店員的英文發音不是很好,所以把help念成hate。那個日本客人就有點愣住了。我在旁邊一直想笑,後來離開了這間店後,跟旁邊的老婆講這件 事情。其實她也有聽到這段對話,但是她的腦袋自動將hate轉成help,所以當時沒有察覺。經過我提醒後,她已經快要笑到 orz 了。

在trac.turbogears.org上關於Widgets介紹

在turbogears.org的trac網站上新增了一篇關於TurboGears的Widgets 介紹。如果之前沒有看過TurboGears的朋友應該去看看目前的網頁技術可以做到甚麼程度。如果您之前只有看過TurboGears 0.84以前的版本,也來看看這篇介紹吧,瞭解一下0.9版加了哪些東西。

該死的專利

engadget網站上面看到一 則新聞。簡單的說就是英國有位發明家說他其實以前就發明了類似MP3隨身聽的概念,所以他現在要跟律師把這個概念的專利權討回來,亦即所有生產 MP3的廠商都要付他權利金。

專利權到現在已經變成阻礙人類進步的東西了。由於專利本身的界定很模糊,而且核准專利的組織又不具備該領域的專業知識。乃至於一些觀念稍微整理一下就被拿 來申請專利。很多公司已經變成為了申請專利而申請專利。並不是因為該專利本身有多大的創新或是技術深度。之前也有新聞報導過一些可笑的專利。重點在於,這 些將專利當成獲利工具或是當成商場上得防衛工具的公司,隨隨便便就把一個idea弄成一個專利,然後那些審查專利的組織又甚麼都不懂,他們只會看這個專利 是不是之前有類似的申請案。這些idea很多都是隨著時間演進,大家就會想出來的。既然大家都靠自己就想的出來,憑什麼變成專利呢?以上面這個例子來說 吧。當你知道音樂不只可以用CD聽,也可以變成音樂檔案放在電腦上聽。你就會開始想像如果這些檔案可以放到你的隨身碟上面,然後有個耳機連出來,想辦法將 這些檔案播放出來。這樣就是個MP3 player的概念了。其實,大家都可以想得到這樣的idea,而且當技術進步到一個階段時,自然就會有人實作出來。

既然這樣,憑什麼有人可以把這樣的idea據為己有呢?類似狀況的專利還有很多。我突發奇想的覺得,以後的專利申請應該要先能證明這個idea只有你想的 出來,別人無法想的出來。這當然是專利權裡面所講的獨創性,但是我覺得那些專利管理局的根本壓根不管!

FireFox的市佔率有突破

最近看到幾個市場調查的新聞,像是Net Applications及OneStat等等,皆在2006四月初報導了關於FireFox市佔率突破10%的消息。許多的市場分析師在去年或甚至是前年就曾經預測10%會是FireFox的一個重要指標。現在就要看後續的發展了!我個人認為目前有幾個因素會影響後續的演變。第一個是Windows Vista的推出。如果,Vista真的吸引了許多使用者,那麼FireFox的市佔率可能會稍稍下滑。另外一個是FireFox本身新功能的提出。若 FireFox本身能夠提出更多好用的新功能,那麼應當可以穩定持續的搶下市站率。最後是IE自己的Bug。如果IE每次發現一個大Bug,尤其是安全相關的,都會讓一些使用者想要換著使用FireFox。至於FireFox會增加甚麼新功能呢?我想針對P2P或是Internet Message的功能應該會越來越受使用者喜愛吧。

MoGo藍芽滑鼠

今天在報上看到一個新的產品Mogo MouseBT。像我們這種常常使用筆記型電腦的人來 說,滑鼠始終是一個討厭的問題。先說說TouchPad吧。這個東西還真不是人用的,偶而用用無妨,常常用的話,實在覺得不是很方便。手指常常戳了好多遍才把游標移到想要的地方。但是,要自備滑鼠的話也是很麻煩。滑鼠都有一定的高度,所以收納非常不方便。現在,終於有公司做出這種超薄滑鼠的產品 了,而且還是無線的。只是不知道用起來的手感如何呢?還有價位也不太清楚!以下是Mogo Mouse的Feature list:

生產公司:Newton Peripherals傳輸介面:Bluetooth大小:名片大小,與PCMCIA card相同大小。電源:內建充電電池,可插於PCMCIA槽中充電。使用:具有一個傾斜度的腳架,可以讓Mogo有個傾斜度,這樣會比較好用。 他的data sheet在這裡

截至2006/04/19的Hardware精華文章!

硬體相關的文章 PIC 指令集列表PIC指令集列表Verilog 快速參考筆記本文主要記載本人學習Verilog過程中的一些參考用筆記。Verilog 模擬階段分析對於學習Verilog的人而言,切確的瞭解在一個單位時間內Simulator進行了哪些工作是十分重要的。本文針對這個 議題做了一個簡單的列表。Verilog Code Style本文主要是收集一些重要的Verilog coding style。一個好的coding style可以減少錯誤的發生,增加電路的效能,以及較好的可讀性。Finite State Machine(FSM)FSM依據與輸入訊號的關係可分為兩種:Mealy與Moore。其中Mealy與輸入訊號有直接關係,Moore則無。Verilog 資源列表本文主要列出一些網路上面的Verilog資源。一 個以組合邏輯判斷edge的verilog code.通常在verilog中我們都是使用posedge或negedge的方式判斷組合邏輯。網路上有人在問如何用純組合邏輯來 判斷edge。我嘗試寫了這樣的一個solution。有興趣的人可以看看!在Verilog 中如何避免implicit wire type. 通常如果沒有指定某個net的type的話,Verilog會預設給予wire的型態。看起來很方便,其實常會導致 designer忽略掉一些錯誤。透過Verilog-2001的一些設定我們可以避免發生這種情況。

截至2006/04/19的System精華文章!

各種系統的介紹,技巧都在這裡。 Windows Kernel的IRQL運作機制IRQL與CPU rings/thread/priority/hardware IRQ的關係.將Man page轉成PostScript檔案將man page轉成PostScript格式。vnc2swf 介紹有些時候,我們常常會需要撰寫一些文件來教別人如何使用某個軟體,或是系統的某個功能。指 定程式在Windows開機時自動執行除了加在啟動功能表中,有什麼辦法可以讓系統啟動時自動執行呢?如 何讓Windows自動登入(Auto-logon)? 當在一台Windows電腦上面有多個帳號時,也許您還是會想要指定一個帳號,在一開機的時候就能夠自動登入。關 於Control命令在Windows的命令列模式下有個非常好用的命令叫做Control。這個命令其實就是控制『控制台』的一個介面。你可以 用這個命令直接叫起一些平常要找很久才會找到的視窗。切 換輸入法為Xcin安裝完Fedora Core 2之後,預設的輸入法是IIIMF,不過這個輸入法似乎不是想像中的那麼好用。對於用慣XCIN的人來說,還是希望能夠回到XCIN。如 何製作Windows下的Help(.hlp)檔案在Windows 系統下,線上說明主要有兩種格式,一種是舊的.hlp的檔案。這種檔案主要是透過編輯RTF格式的檔案來製作說明。另外一種較新的方式是.chm檔案。這 種檔案是透過編輯HTML格式檔案的方式來製作說明。目前比較新的檔案都是使用.chm的檔案來製作說明。不過在某些環境下.hlp檔案仍然有其作用。所 以本文要以一個快速導覽的方式來說明如何製作出.hlp檔案。用OpenSSL 製作數位憑證用Openssl製作數位憑證的方式很簡單,首先確定您的電腦有安裝openssl。如果沒有,可先至下面的網站取得: www.openssl.org。自 製簡易的安裝程式在Windows 中,安裝或者反安裝軟體一般的是透過『新增或移除程式』的功能。一般常常以為這樣的軟體安裝功能,透過InstallShield或是MSI這類的軟體包 裝程式才能夠達成。的確,透過這些軟體是最快的。不過,商用的軟體安裝程式都很貴。雖然也有很棒的免費軟體像是InnoSetup等。不過對於沒有相關經 驗的人來說似乎還要先去學這些東西的用法。壓 縮執行檔的軟體UPX有些時候我…

截至2006/04/19的Programming精華文章!

程式設計類,且不屬於已經分類的程式語言的文章。 簡 介DoxygenDoxygen是一個程式的文件產生工具,可將程式中的特定註解轉換成為說明文件。何 謂電腦高手何 謂電腦高手? 最近逛了Language版,又看到了一個從很久以前就提出來的老問題-- 很會寫程式是否就是代表電腦很厲害? 如果你常常逛Language這個版,你一定會覺得奇怪,為什麼這個問題會一再的被提出來。我想或許大家只認識什麼是電腦,卻沒有對資訊工程這門學問有足 夠的認識吧。 讓 你的AP上的元件變成XP的Style有些原先開發在非Windows XP上的軟體的元件不會呈現新的Windows XP的style。其實,只要這個軟體所採用的是標準元件。透過一個簡單的小技巧,我們就可以讓他馬上變成XP的Style。make 的簡易介紹make幾乎是個程式設計師每天都會接觸到的工具。這個工具主要的精神在於幫助程式設計師只編譯需要編譯的程式碼。如此一來 可以減少編譯程式所需要的時間。Open-Closed Principle簡介『Open-Closed Principle』(簡稱OCP)在物件導向程式設計中是一項非常重要的指導原則。有些人甚至在討論物件導向時,將這個原則比擬為牛頓力學中的三項基本 定理。可見其重要性。換句話說,如果您在寫C++ 或是Java這類的物件導向程式語言,卻不曉得何謂OCP 。恐怕寫出來的程式只有物件導向的表象而為能得精髓。 軟 體的版本號碼實際上並沒有一個特別的規定告訴我們要怎麼來制訂軟體的版本號碼。不過大家倒是有一些約定成俗的看法。SDL 的小簡介SDL 是Simple DirectMedia Layer的縮寫。這是一個跨平台的圖形及多媒體的程式庫。他所提供的有影像,音效,光碟機等等的控制。經常被用來當作遊戲開發的環境。不過,其實他也非 常適合拿來開發一些多媒體的應用。甚至是應用在嵌入式系統中,如SetTop Box的環境中。Big5 碼中容易衝碼的文字Big5中由於當初設計上的疏失,導致一些屬於控制字元的資料容易引起一些程式環境的誤判。造成顯示出來的中文字不是我們想 要的結果。所以我們在寫程式的時候對於中文的處理要特別小心。Emacs C mode指令速查列表本 文件列出了在Emacs C mode下面常見的指令及所謂的C mode就是在Emacs下面撰寫C語言程式的模式。在這個模…

截至2006/04/19的C/C++精華文章!

所有有關於C/C++語言的文章都在這裡。 在BCB 中的多國語言程式製作說明在BCB中如何撰寫多國語言程式。 一 個類似Popen的C++類別附件的程式是一個C++的類別,專門供Win32平台下面使用類似popen的功能。可以透過他來執行其他命令,並且存取該 程序的stdin, stdout, stderr等pipe資料。也可以將console視窗隱藏,或者透過method將程序結束。 BCB 中的RTTI機制RTTI 在BCB中其實有兩個意義。首先,針對一般標準的C++中所定義的,RTTI是所謂的Run-Time Type Identification的縮寫。傳統的程式語言中,所謂的資料型態僅在Compile-Time有所作用。舉例而言,您宣告了一個變數a,並且指定 其型態為整數。您如何在Run-Time期間知道他的型態是整數呢?很遺憾的是,在原來的C/C++中您是無法知道這樣的事情的。或陰z會問,這樣的資訊 有何作用?若是您考慮物件的繼承關係,您就會發現其重要性了。 如 何產生shared object(.so)檔案如何產生shared object(.so)檔案? 在BCB 中使用StringTable通 常寫軟體時,如果剛開始的時候沒有注意到將來要考慮i18n的問題時。到後面要補救就會變的工程浩大。不過,如果您的軟體是使用BCB Enterprise Edition所開發時,那麼這個步驟將會變得簡單一些。不過,前提是你必需使用Enterprise Edition才行。因為只有 ExterpriseEdition上面才有Translation Manager可用。 Microsoft Visual C++ Toolkit 2003Microsoft Visual C++ Toolkit 2003是一套給C++使用的Compiler及Linker的程式。主要的目的是要給那些需要編譯出Windows環境下程式的使用者使用。 解 決PopupMenu在TTrayIcon上使用的問題如果你有在BCB中使用TTrayIcon來製作TrayIcon的弁遄A你一定會覺得在BCB下面寫TrayIcon真是 輕鬆又簡單。不過當你想再加上PopupMenu時,事情似乎就不是那麼盡如人意了。 BCB 下的簡易萬用字元檢查許多時候,我…

截至2006/04/19的Tcl/Tk精華文章

TCL/TK相關的文章都放在這裡。 Tcl 命令列模式的使用Tcl 本身可以分為兩大模式,一個為命令列模式,另一模式則為Script模式。所謂的命令列模式就如同DOS的Console及一般UNIX系統下登錄後所使 用的命令模式。在這個模式下,Tcl與使用者間具有較高的互動性。使用者所下的每個命令,不論是語法上的錯誤,或是執行上的錯誤,都可立即得到回應。因 此,這個模式也十分合適作為除錯之用途。至於,Script模式則是Tcl的精華所在。AOL Server簡介在Tcl 的討論區上貼了一篇簡介Tcllib的文章,有網友建議我寫寫Tcllib的使用心得。可是覺得光是寫寫Tcllib本身的應用好像不是很有意思, Tcllib本身有提供一些Mime的相關函式,相當的好用,但是光是說明這些函式的使用,也不是很有意思。剛好,之前想用Tcl來寫個WebMail的 程式,便想利用這個程式來說明Tcllib的一些弁遄C而使用Tcl來寫Web程式最佳的方法就是在AOL Server上面開發,所以便決定先寫篇文章來介紹一下AOL Server,然後再來進行Tcllib的使用心得。這正是這篇文章誕生的緣由!Tcl 的變數命名與置換規則在Tcl 之中,並沒有一般程式語言的變數型態。這也就是說,Tcl不會要求您要事先指定您的變數需要為整數,字串,或是浮點數等型態。這是大部份Script的優 勢,它大大地簡化了Script語言的學習難度。並且,Tcl的變數具有很大的彈性。關於這個部分將會在後面關於Tcl變數的章節中做更詳細的探討。本文 將著重於變數置換(variable substitute)的應用說明。Tcl 命令置換規則除了變數置換外,Tcl也提供了直接敘述的某個部分代換成某個命令的結果。Tcl 的雙引號與大括號置換規則本文所要說明的是在雙引號及大刮號內,所允許的置換規則。Tcl 的語法總結綜觀整個Tcl的語法,其實可以歸納成簡單的一些要點。如能熟記這些要點,對於撰寫Tcl程式將會無往不利。Tcl 的變數介紹在前面的文章中,我們已經簡略地介紹Tcl的變數置換規則。本文我們將以更深入的角度來介紹Tcl的變數機制。Tcl 的直述式流程所謂的直述式流程,其實也就是所有程式語言的基本。