使用 ApacheBench 進行網站的壓力測試

ApacheBench 工具程式是 Apache 網站伺服器軟體的一個附帶的工具軟體,專門用來執行網站伺服器的運行效能,特別是針對 Apache 網站伺服器 的效能分析。這支程式原本是用來檢測 Apache 網站伺服器(Web Server) 所能夠提供的效能,特別是可以看出 Apache 網站伺服器能提供每秒能送出多少網頁,當然的,也可以用在任何其他的網站伺服器,例如說:IISlighttpd

你可以到 Apache HTTP Server 網站下載最新版,如果你要在 Windows 的環境執行 ApacheBench 可以直接下載 Win32 Binary 的版本就好,由於線上所提供的版本是 MSI 的封裝檔,安裝好之後也等同於在你的電腦內安裝了一套 Apache HTTP Server,如果你不需要多執行一套 Apache HTTP Server 的話,你可以在安裝好之後進入 C:\Program Files\Apache Group\Apache2\bin 目錄,找到 ab.exe 執行檔,複製出來後再移除 Apache 安裝即可,因為 ab.exe 是可以獨立執行的,不需要任何關連的 dll 檔。

底下是 ab.exe 的使用參數摘要說明,若要看詳細說明可以看這裡(或中文翻譯):

C:\>ab -h
Usage: ab [options] [http://]hostname[:port]/path
Options are:
    -n requests     Number of requests to perform
    -c concurrency  Number of multiple requests to make
    -t timelimit    Seconds to max. wait for responses
    -p postfile     File containing data to POST
    -T content-type Content-type header for POSTing
    -v verbosity    How much troubleshooting info to print
    -w              Print out results in HTML tables
    -i              Use HEAD instead of GET
    -x attributes   String to insert as table attributes
    -y attributes   String to insert as tr attributes
    -z attributes   String to insert as td or th attributes
    -C attribute    Add cookie, eg. 'Apache=1234. (repeatable)
    -H attribute    Add Arbitrary header line, eg. 'Accept-Encoding: gzip'
                    Inserted after all normal header lines. (repeatable)
    -A attribute    Add Basic WWW Authentication, the attributes
                    are a colon separated username and password.
    -P attribute    Add Basic Proxy Authentication, the attributes
                    are a colon separated username and password.
    -X proxy:port   Proxyserver and port number to use
    -V              Print version number and exit
    -k              Use HTTP KeepAlive feature
    -d              Do not show percentiles served table.
    -S              Do not show confidence estimators and warnings.
    -g filename     Output collected data to gnuplot format file.
    -e filename     Output CSV file with percentages served
    -h              Display usage information (this message)

而我經常使用的參數摘要如下:

1. 同時 10 個連線,連續點擊 10000 次 ( 每個 Request 執行完畢後都會自動斷線,然後再重新連線 )

ab -n 10000 -c 10 http://www.example.com/index.aspx
2. 同時 10 個連線,連續點擊 10000 次,並且使用 Keep-Alive 方式連線(當 Web Server 有支援 Keep-Alive 功能時 ApacheBench 會在同一個連線下連續點擊該網頁)
ab -n 10000 -c 10 -k http://www.example.com/index.aspx

3. 將測試的效能原始資料匯出成 CSV 檔

ab -e output.csv -n 10000 -c 10 http://www.example.com/index.aspx

   匯出的 output.csv 內容如下:

Percentage served,Time in ms
0,6.200000e+001
1,6.200000e+001
2,6.200000e+001
3,6.200000e+001
4,6.200000e+001
5,6.200000e+001
6,6.200000e+001
7,6.200000e+001
8,6.200000e+001
9,6.200000e+001
10,6.200000e+001
11,6.200000e+001
12,6.200000e+001
13,6.200000e+001
14,6.200000e+001
......

   上表所代表的每一列代表送出的百分比,第二個欄位是當下的 "Time per request" (每個要求所花費的時間),單位是豪秒(millisecond)。

如何有效的檢視結果

壓力測試的核心在於如何分析結果,底下我用一個測試的結果說明每個欄位所代表的意義。如果你只要看重點的話,可以看 Failed requests、Requests per second、與 Time per request 這三個參數也就差不多夠了。其中的 Failed requests 的數量太高的話,很有可能代表你的 Web Application 的穩定度不夠,而導致使用大量要求時無法回應需求 。而 Request per second 代表你每表可送出的回應數有多少,代表你 Web Application 的承載量有多少(在不考慮頻寬限制的情況下)。

C:\>ab -d -e a.csv -v 1 -n 1000 -c 3 http://www.example.com/index.aspx
This is ApacheBench, Version 2.0.41-dev <$Revision: 1.121.2.12 $> apache-2.0
Copyright (c) 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright (c) 2006 The Apache Software Foundation, http://www.apache.org/

Benchmarking www.m-taoyuan.tw (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Finished 1000 requests


Server Software:        Microsoft-IIS/6.0
Server Hostname:        www.m-taoyuan.tw
Server Port:            80

Document Path:          /index.aspx
Document Length:        25986 bytes

Concurrency Level:      3
Time taken for tests:   25.734375 seconds
Complete requests:      1000
Failed requests:        0
Write errors:           0
Total transferred:      26372000 bytes
HTML transferred:       25986000 bytes
Requests per second:    38.86 [#/sec] (mean)
Time per request:       77.203 [ms] (mean)
Time per request:       25.734 [ms] (mean, across all concurrent requests)
Transfer rate:          1000.72 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    1   4.4      0      15
Processing:    62   75   9.1     78     109
Waiting:       46   64   8.0     62     109
Total:         62   76   9.3     78     109

如上表顯示的結果來說明,我一個欄位一個欄位的講解如下:

  • Server Software:    Web主機的作業系統與版本(若Web主機設定關閉此資訊則無)
  • Server Hostname:  Web主機的IP位址(Hostname)
  • Server Port:           Web主機的連接埠(Port)
  • Document Path:     測試網址的路徑部分
  • Document Length: 測試網頁回應的網頁大小
  • Concurrency Level: 同時進行壓力測試的人數
  • Time taken for tests: 本次壓力測試所花費的總秒數
  • Complete requests: 完成的要求數(Requests)
  • Failed requests:      失敗的要求數(Requests)
  • Write errors:           寫入失敗的數量
  • Total transferred:   本次壓力測試的總數據傳輸量(包括 HTTP Header 的資料也計算在內)
  • HTML transferred:  本次壓力測試的總數據傳輸量(僅計算回傳的 HTML 的資料)
  • Requests per second: 平均每秒可回應多少要求
  • Time per request:  平均每個要求所花費的時間(單位: 豪秒)
  • Time per request:  平均每個要求所花費的時間,跨所有同時連線數的平均值(單位: 豪秒)
  • Transfer rate:         從 ab 到 Web Server 之間的網路傳輸速度

最後的 Connection Times (ms) 指的是壓力測試時的連線處理時間:

橫軸欄位的部分:

  • min:       最小值
  • mean:    平均值(正、負標準差)
  • median: 平均值(中間值)
  • max:      最大值

縱軸欄位的部分:

  • Connect:     從 ab 發出 TCP 要求到 Web 主機所花費的建立時間。
  • Processing:  從 TCP 連線建立後,直到 HTTP 回應(Response)的資料全部都收到所花的時間。
  • Waiting:       從發送 HTTP 要求完後,到 HTTP 回應(Response)第一個 Byte 所等待的時間。
  • Total:           等於 Connect + Processing 的時間(因為 Waiting 包含在 Processing 時間內了)

壓力測試的基本觀念

  • 排除頻寬的限制
    • 做壓力測試通常不會考量「頻寬的限制」,所以一般來說不會將測試的主機擺在遠端機房、然後測試程式擺在公司內部的主機,而是會將壓力測試的 Client 跟 Web 主機擺在同一個網段下進行壓力測試。
    • 因為「頻寬」只要花錢就會有了,但是主機的承載量卻是有限的,從遠端進行壓力測試主要的限制是在「頻寬」而非「效能」,所以從遠端單點進行壓力測試毫無任何意義可言,這樣是測不出主機的效能極限的。
    • 如果你有能力與資源進行大規模(多點)壓力測試的話,透過遠端進行壓力測試才有意義。
  • 壓力要循序漸進
    • 你不要一下字就執行同時連線數 100 人,而是要循序漸進的慢慢加同時連線數上去,才不會讓 Web Application 一下字承受過大的負載而導致效能的數據不正確(例如說 Failed requests 過高),但這只是建議,你也可以一下子操死你的主機,反正你在測主機的極限嘛!

參考網址:

  

此文章由 will 發表於 2008/6/30 下午 07:46:05

永久連結 | 評論 (3) | 此文章的RSSRSS comment feed |

分類: Linux | Web | 介紹好用工具

標籤: , ,

收藏:

介紹幾款好用的 SQL Injection 偵測與防禦工具

微軟最近推出了兩套 SQL Injection 偵測與防禦工具,分別是 Microsoft Source Code Analyzer for SQL Injection (MSCASI) 與 URLScan 3.0

其中 Microsoft Source Code Analyzer for SQL Injection (MSCASI) 是專門用來分析早期 Active Server Pages (ASP) 程式中的 SQL Injection 漏洞,他會直接分析你的 ASP 原始碼並明確點出你的程式中潛在的 SQL Injection 漏洞在哪裡、潛在的風險、第幾行有問題等(如下圖)。如果你曾經寫過的 ASP 網站年久失修,建議你用這套工具執行看看是否有哪一段程式是有 SQL Injection 漏洞的。另外,微軟在前幾週也發表了一篇關於如何在 ASP 程式中防禦 SQL Injection 的建議( Preventing SQL Injections in ASP),而這套工具就是依據這篇文章中所寫的幾個規則進行 ASP 原始碼分析的。

Microsoft Source Code Analyzer for SQL Injection 執行畫面

由於 Microsoft Source Code Analyzer for SQL Injection 是指令列程式,你下載後只要解壓縮就能用了,用法很簡單,你只要執行 msscasi_asp.exe 就會出現使用說明了。

G:\asp>msscasi_asp.exe
Microsoft (R) Source Code Analyzer for SQL Injection Version 1.3.30601.30622
Copyright (C) Microsoft Corporation. All rights reserved.

Usage: msscasi_asp.exe [/nologo] [/quiet] [/suppress=num;..;num] [/GlobalAsaPath=
path] [/IncludePaths=path;..;path] /Input=file.asp

** msscasi_asp failure: no input file specified.

一次只能掃瞄一個檔案,底下是一個範例的用法:

msscasi_asp.exe /nologo /Input="c:\web1\test.asp"

你如果要掃瞄整個網站的 asp 程式你可以寫個批次檔來處理。

另一套軟體 URLScan 3.0 有別於已經推出五年之久的 UrlScan 2.5 版,功能多出了許多,他比較能夠主動偵測 SQL Injection 的攻擊,且目前也完整支援 IIS 7.0,不過未來這些掃瞄功能應該會直接整合進 IIS 7.0 中。

URLScan 3.0 版新增的功能有:

  • Support for query string scanning, including an option to scan an unescaped version of the query string.
  • Change notification for configuration (no more restarts for most settings.)
  • UrlScan can be installed as a site filter.  Different sites can have their own copy, with their own configuration.
  • Escape sequences can be used in the configuration file to express CRLF, a semicolon (normally a comment delimiter) or unprintable characters in rules.
  • Custom rules can be created to scan the URL, query string, a particular header, all headers or combination of these.  The rules can be applied based on the type of file requested.
  • Support for 64 bit IIS worker processes.

另外還有一套由 HP Web Security Research Group 發展出來的一個 SQL injection 偵測工具,叫做 Scrawlr 1.0,我覺得還挺酷的,用一個比較視覺化的方式偵測你的網站是否包含 SQL Injection 漏洞,只要輸入要檢測的網址,再按下 Start 按鈕就會開始跑了,非常的直覺、好用。如果你的網站被他抓到有漏洞的話,他還可以猜出你的資料庫名稱與相關資訊。

Scrawlr 1.0

相關連結

  

此文章由 will 發表於 2008/6/26 下午 07:02:00

永久連結 | 評論 (0) | 此文章的RSSRSS comment feed |

分類: 介紹好用工具 | Security

標籤: , , , ,

收藏:

介紹好用工具:Process Explorer

Windows Sysinternals 是一套進階的系統管理工具,原本是由 Sysinternals Inc. 這家公司發產的產品(大多是免費的),可能因為做得太好了,在 2006 年 7 月時被微軟併購成為旗下的一套產品,這套產品中最有名的一個工具程式我覺得應該是 Process Explorer,他可以說是【Windows 工作管理員】的進階版,提供的資訊多到數不完,我想應該很多人都用過這個 Process Explorer 工具,但真的瞭解怎麼用的人我想應該不多吧,因為說明文件也沒寫什麼,我個人也沒有完全看的懂上面的所有欄位的真正意義(大概有上千個吧),我今天就說一些我經常在用的一些功能與查看有用資訊的技巧。

1. 程序之間的階層關係 & 判斷執行檔的類型

Process Explorer Screenshot

如上圖,我用紅色框線框起來的地方就是指我的 notepad++.exe 程式是從 WinKey.exe 執行起來的,但你可能會想,如果我將 WinKey.exe 砍掉,會不會也將 notepad++.exe 也連帶砍掉呢?其實是不會的,而是 notepad++.exe 會自動拉高到自己為主程序。

另外,你也可以很容易的使用顏色來區別執行檔的類型,其中:

  • 黃色:代表此程式是一個 .NET 的應用程式。例如說我用 Process Explorer 就發現原來 Yahoo!奇摩輸入法 就有支程式是用 .NET 寫成的。
  • 紫色:代表此程式是一個 Pack (包裝) 過的程式,也就是說這個程式本身又被包了一層程式,意思也就是說該程式是被「修改過」的程式,並非為原本的程式喔!通常這種程式有兩種可能:
    1. 中毒的程式:病毒讓你的程式還是可以正常運作,讓你覺得程式沒問題,但是私底下可能「多做了一些事」讓你沒感覺。
    2. 壓縮過程式:知名的 UPX (the Ultimate Packer for eXecutables) 工具程式就是專門用來將你製作出來的執行檔壓縮過,讓你的執行檔變小又能正常執行的工具。
  • 粉紅色:此程式為一個 Windows 服務。

至於其他的顏色所代表的意義,你可以從功能選單的 Options -> Configure Highlighting 查得完整的顏色定義,當然你也可以修改掉,如下圖:

    Process Explorer - Configure Highlighting

2. 查看該程序(Process)到底開啟了哪些檔案或使用到哪些 DLL

 查看該程序(Process)到底開啟了哪些檔案或使用到哪些 DLL

如上圖,你可以點選功能選單的 View -> Show Lower Pane 開啟 Lower Pane(或按下 Ctrl + L 快速鍵)查看程序載入了哪些 DLLs 或開啟了哪些 Handles (目錄, 檔案, 事件, 機碼, 執行緒, ..., etc. )

 Process Explorer - Show Lower Pane

如上圖範例,我按下了 Ctrl + H 開啟 Handles View,你可以看到圖中的 KeyKeyServer.exe 開啟了一些檔案,以上圖為例我選取了 D:\Program Files\Yahoo!\KeyKey\zh-TW\Preference.resources.dll 程式,這時如果你想要刪除這個檔就會被通知「刪除檔案或資料夾發生錯誤」的錯誤訊息(如下圖),如果真的想強制刪除的話,可以在該 File Handle 上按下右鍵選擇 Close Handle 強制關閉這個 Handle,你就可以正常刪除檔案了,不過你原有的程式就很有可能會出錯或中斷執行,我是不太建議這麼做。

刪除檔案或資料夾發生錯誤

3. 查看完整的系統資訊

Process Explorer - System Information

當你按下功能選單的 View -> System Information 或按下 Ctrl + I 快速鍵就可以看到這個完整的系統資訊,有時後我們電腦變慢可能跟 CPU 或 Memory 無關,而是 Disk I/O 過高導致拖慢程式執行的速度,透過這個畫面就可以一目了然你整台主機的運作狀況。

4. 瞭解你的 .NET 應用程式的執行狀態

有在寫 .NET 的人對這裡的技巧可能就會很有興趣了,我以 SharpReader 為例說明如何查看 .NET 相關的資料。我先啟動 SharpReader 應用程式,然後在 Process Explorer 上雙擊 SharpReader.exe 出現 Properties 視窗,然後點選 .NET 頁籤。

在 Process Explorer 上雙擊 SharpReader.exe 出現 Properties 視窗,然後點選 .NET 頁籤

你會看見第一個區塊是 AppDomains,他會列出該程序所建立的所有 AppDomain 清單。下方是 .NET Performance Objects 區塊,這裡你就可以選擇不同的效能物件,用以查看該 .NET 應用程式的各種狀態。

.NET CLR Exceptions

  • # of Exceps Thrown:這個程式總共發生了幾次 Exceptions,當你用 try / catch 捕捉到例外事件時,每捉到一次這邊就會加 1,你要知道 Exception 對效能的影響是很大的,對單機程式來說或許沒什麼差別,但是對多人使用的程式(如:ASP.NET)在人多的時候就會有差別了!
  • Throw To Catch Depth / sec:代表他統計你的程式平均每秒捕捉到深度統計,因為 try / catch 是可以很多層的,我是不太知道算出這個數據有什麼意義,不過應該是數據越高越不好吧!

Process Explorer - .NET CLR Exceptions

.NET CLR Interop

  • # of CCWs:所謂的 CCW 是 COM Callable Wrapper 的縮寫,是指這個 .NET 程序中有幾個物件被封送(Marshaled)成 COM 物件。
  • # of Stubs:代表這個 .NET 程序中有幾個成員(Members)被 Export 到 COM 物件供其他程式使用。
  • # of marshalling:代表這個 .NET 程序中被封送(Marshaled)處理的總數。
  • # of TLB imports / sec:所謂的 TLB 是指 Type Library 的縮寫,也就是平均有多少型別(Type)被匯入此 .NET 程序。
  • # of TLB exports / sec:平均有多少型別(Type)被匯出到 COM 物件。

Process Explorer - .NET CLR Interop

.NET CLR Jit

  • # of Methods Jitted:代表到目前為止有多少方法(Methods)被編譯成機械碼(Machine Code 或 Native Code)。
  • # of IL Bytes Jitted:有多少 MSIL 位元被轉譯成機械碼。
  • Total # of IL Bytes Jitted:總共有多少 MSIL 位元被轉譯成機械碼。
  • Standard Jit Failures:轉譯成機械碼失敗的次數。
  • % Time in Jit:轉譯成機械碼所佔的時間百分比(因為可能有些程式寫了很多動態編譯的程式碼)。

Process Explorer - .NET CLR Jit

.NET CLR Memory

這裡的物件就很重要了,雖然 .NET 有個很棒的自動記憶體管理機制,但並不代表你就可以完全不管,雖然再怎麼亂用也不會發生 memory leak 的問題,但卻很有可能會發生 OutOfMemoryException 例外狀況,或是因為資源回收器(GC, Garbage Collector)頻繁啟動而導致的程式執行效能降低的情況,因為每次資源回收器啟動時都會將程序中所有執行緒(Threads)凍結,以便讓 GC 檢查受管控的堆積(stack)。詳細的 GC 運作機制可參考 大內高手專欄.NET 的自動記憶體管理 文章、.NET Framework記憶體回收機制 文章或 C# 精要 (C# Essentials) 一書,有意想深耕 .NET 領域的人不能不瞭解 GC 的運作機制,當你瞭解之後就看的懂底下這些欄位的定義代表什麼了。

Process Explorer - .NET CLR Memory

其實還有許多其他相關的物件我沒有介紹,老實說我也不是全部都懂,但是等你越瞭解 .NET 的核心,就越能瞭解這些 Counter 所代表的意義。

其他相關連結:

  

此文章由 will 發表於 2008/6/25 下午 03:43:01

永久連結 | 評論 (1) | 此文章的RSSRSS comment feed |

分類: 介紹好用工具 | 系統管理

標籤: ,

收藏:

介紹好用工具:IETester

之前推薦過一套 MultipleIE 工具可以在同一台電腦同時安裝 IE 3.0, 4.0, 5.0, 5.5, 6.0, 7.0 等不同的版本,非常適合用來做網站的瀏覽器相容性測試。不過最近又發現另一套瀏覽器相容性測試的工具,叫做 IETester,這套 IETester 只能測試 IE 5.5 以上的版本,不像 MultipleIE 可以測 IE 3.0, 4.0, 5.0,不過現在還在用 IE 3.0, 4.0, 5.0 的人類應該不多了吧。

使用 IETester 還可以測試到 IE 8.0Beta1 的版本喔,除了支援多國語言,還支援軟體自動更新的功能,且瀏覽網站的方式是使用頁籤(Tab)的方式進行,與 IE 7 的瀏覽方式類似,不過整個介面做的就像是 Office 2007 的介面一樣,是使用 Ribbon 的選單,可以看看下圖:

整個介面做的就像是 Office 2007 的介面一樣,是使用 Ribbon 的選單

瀏覽網站的方式是使用頁籤(Tab)的方式進行,與 IE 7 的瀏覽方式類似

不過各位安裝好之後,第一次執行的畫面會被「誤判」為「簡體系統」,你只要到「選項」修改「語言」即可:

image

image

我剛剛就大概測了一下我們之前做的網站,在 IE 8.0 Beta1 的版本,還真的版面都跑掉了,我想等過一段時間可能又有網站改版需求了吧,不知道是要感謝微軟不斷進步(改變)讓我們有「源源不絕」的案子,還是要討厭微軟每次軟體改版都不太相容讓我們每次都要改網頁改到三更半夜。不過這個問題我已經想通了,擁抱改變才能創造改變,接受改變只能適應改變,所以現在的我不害怕也不討厭,只要是好的東西都願意吸收並放棄既有的知識。

雖然這套 IETester 有些已知的問題,不過我覺得問題不大,因為其實你並不是要用這套軟體來瀏覽網站,而是用來「測試」而已,所以這些軟體的瑕疵我是還可以接受的,況且這些問題應該在日後會更新吧。

相關連結

  

此文章由 will 發表於 2008/6/9 下午 07:18:11

永久連結 | 評論 (1) | 此文章的RSSRSS comment feed |

分類: Web | 介紹好用工具

標籤: ,

收藏:

推薦好用工具:Yahoo!奇摩輸入法

今天在看 ZDNet 的 RSS 訂閱文章的時候發現一則雅虎奇摩推中文輸入法 自誇比微軟好用,心血來潮的把這套輸入裝起來用看看,結果還真的不錯勒!

image

真沒想到Yahoo!奇摩竟然會出一套中文輸入法工具,而且最強的是他們藉著雅虎搜尋系統所搜集的大量詞庫讓選字的機會大大降低,減少許多選字的時間,我自己親身體驗一下發現真的很厲害,我今天的這篇部落格文章就是用Yahoo!奇摩輸入法的「好打注音」輸入法輸入的,真的需要選字的次數應該不超過 3 次,真的是太強了。

我兩年前就是因為微軟做的注音輸入法的選字太差,所以還特別買了比較好用的自然注音輸入法,到今天我想連自然注音輸入法都可以丟了,因為光是 Yahoo!奇摩輸入法的「好打注音」幾乎就可以打遍天下無敵手了。

該輸入的的操作幾乎跟微軟新注音輸入法差不多,但有多些不錯的功能,我大致摘錄一下一些好用的功能與操作技巧:

1. 支援常用符號輸入功能

常用符號輸入功能 1

常用符號輸入功能 2

常用符號輸入功能 3

2. 支援簡體中文輸出(你打完字之送出之后会自动转换成简体中文喔)

image

image

3. 提供「一點通」模式

只要輸入 ` 符號,就會開啟選單,並且直接執行 Yahoo! 奇摩 所提供的一些線上服務。

如下圖示在鍵盤裡可以直接輸入 ` 1 test {Enter} 就可以完成英漢字典的查詢,的確是挺方便的。

提供「一點通」模式  

提供「一點通」模式 :英漢字典

提供「一點通」模式 :字典查詢

其他的詳細功能可以上Yahoo!奇摩輸入法網站查詢。

  

此文章由 will 發表於 2008/6/1 下午 08:44:31

永久連結 | 評論 (3) | 此文章的RSSRSS comment feed |

分類: 介紹好用工具

標籤: ,

收藏:

推薦好用工具:Data Dictionary Creator

今天要介紹的工具是 Data Dictionary Creator (DDC),是一個簡單又實用的工具,他可以幫你的 SQL Server 中的資料庫每一個表格、欄位做註解,註解寫完之後是直接儲存在 SQL Server 中的「擴充屬性」中,然後可以直接輸出完整的資料庫結構說明文件(包括 Word, Excel, Xml, Html, T-SQL 等),如果覺得不夠還可以自己擴充,因為這軟體是在 CodePlex 上的一個開放原始碼專案。

Data Dictionary Creator 

大家應該都知道在設計 SQL Server 資料表的時候每個欄位都有個屬性叫做「描述」,可以說明該欄位是做什麼用的:

image

這個欄位的值其實是儲存在該欄位的「擴充屬性」裡,其屬性名稱是 MS_Description

這個欄位的值其實是儲存在該欄位的「擴充屬性」裡,其屬性名稱是 MS_Description

我曾經在之前也寫過一篇SQL Server Management Studio 表格設計技巧,建議各位可以去看看。

而 Data Dictionary Creator 就是靠著擴充屬性的自訂,將所有可註解的訊息全部紀錄在資料庫中,除了預設的 Description 欄位外,你還可以自訂其他的擴充屬性,讓你在 Document Database 頁籤的畫面中輸入。

例如說:你可以在 Advanced Settings 的 Document Additional Properties 輸入「UI 輸入說明」

在 Advanced Settings 的 Document Additional Properties 輸入「UI 輸入說明」

之後再進入 Document Database 頁籤就會馬上看到「UI 輸入說明」的欄位:

再進入 Document Database 頁籤就會馬上看到「UI 輸入說明」的欄位

最後再到 Export Documentation 就可以輸出文件:

到 Export Documentation 就可以輸出文件

之後你再選取你要輸出的格式即可:

選取你要輸出的格式

這樣你就可以立即獲得一份完整的資料庫表格欄位說明文件了,而且不用再維護「離線的文件」,任何資料庫欄位有變更,只要用這軟體編輯一下就可以匯出新的文件了,且最新資訊永遠留在資料庫中,真的是個很理想的文件撰寫模式。

除此之外,還可以將之前匯出的 XML 檔案手動編輯之後重新匯入資料庫,直接覆蓋掉現有資料庫中的擴充屬性。

可以將之前匯出的 XML 檔案手動編輯之後重新匯入資料庫,直接覆蓋掉現有資料庫中的擴充屬性

  

此文章由 will 發表於 2008/5/30 下午 07:05:17

永久連結 | 評論 (0) | 此文章的RSSRSS comment feed |

分類: SQL Server | 介紹好用工具

標籤:

收藏:

介紹好用工具:WinDirStat

你會不會覺得電腦用一段時間之後突然有一天硬碟就不夠用了,但卻不知到到底是哪個目錄佔用我最多磁碟空間,想查又覺得目錄超級多的,實在不知從何處著手。這時你就需要用 WinDirStat 幫你分析一下電腦各目錄與檔案的大小了。

到底有多酷呢,一圖解千文,如下:

介紹好用工具:WinDirStat

WinDirStat 有三種檢視模式:

  1. 目錄檔案清單(如圖示左上角):就如同你檔案總管的檔案列表,但會多好幾個大小統計的欄位。
  2. 檔案類型清單(如圖示右上角):列出硬碟裡各種檔案類型的大小統計。
  3. 圖例檢視模式(如圖示下方):用圖形表示你電腦中的目錄與檔案大小,且點選底下的方塊後左上角的目錄瀏覽視窗還會直接選中該目錄或檔案,讓你知道這塊圖形是代表哪一個目錄或檔案。

我覺得最方便的就是 WinDirStat 可以提供我一個概要性的資訊,讓我知道哪些目錄或檔案佔用我過多的磁碟空間,知道以後就可以進一步判斷是否將改目錄刪除或備份到其他磁碟機。

相關連結

  

此文章由 will 發表於 2008/5/25 下午 08:22:30

永久連結 | 評論 (0) | 此文章的RSSRSS comment feed |

分類: 介紹好用工具

標籤:

收藏:

介紹好用工具:Bloglines 與 SharpReader

我每天吸收新知的主要來源都是透過 RSS 訂閱而來的,我剛算了一下,我目前共訂閱了將近 350 個 RSS,如此龐大的量真的很不容易管理,所以我採用了兩個 RSS 管理工具幫我管理這些 RSS 訂閱,一個是線上版的 Bloglines,一個是單機版的 SharpReader

線上版的 Bloglines

我會採用線上版的 Bloglines 最主要的目的就是他可以幫我把大量的 RSS 文章儲存在線上,只要我訂閱的 RSS 有新文章它都會自動收集到我的帳號裡,若平時太忙沒時間看等下次進入之後所有文章都會留著,等假日再慢慢看。除此之外,在 Bloglines 裡還可以自訂「資料夾」,幫自己分類各種不同的訂閱,而且看過的文章還可以自己選擇「標記」起來,讓自己滿意的文章「永遠」的儲存在 Bloglines 裡,且還有提供搜尋的功能,這儼然就是一個龐大的個人知識庫。

我個人每天使用電腦的時間已經很長了,對於頻繁的使用滑鼠讓我的手腕產生了一些負擔,所以我一向習慣使用鍵盤快速鍵(Hotkeys)幫我操作各式的軟體或網站介面,當然包括 Bloglines 也不例外,不過 Bloglines 的快速鍵是我無意間發現的,有一次在看文章的時候想說 Bloglines 不知道是否可以用 vi 的指令移動,結果真的可以耶!按下 j 會跳到下一筆,按下 k 會跳到下一筆,都測試成功後開始上網尋找 Bloglines 的快速鍵,不過奇怪的卻是 Bloglines 並沒有官方公佈的快速鍵說明網頁,雖然在其他部落格有看到一些人分享一些自己發現的快速鍵,但我自己又自己亂試又多試出了好幾個,在瀏覽文章的過程中有了這些快速鍵真的如虎添翼,以下是我整理出的快速鍵清單:

  • j - 移動到下一篇文章
  • k - 移動到上一篇文章
  • n - 將文章標記(Pin),讓文章不會在下次進來看時消失
  • A - 將所有文章設定為「已閱讀」(要按下大寫的 A 喔)
  • s - 移動到下一個 RSS 訂閱
  • f - 移動到下一個資料夾
  • r - 重新整理左邊的訂閱清單

不過缺點就是他的中文版的翻譯實在是太爛了,所以我還是一律用英文版來操作。

單機版的 SharpReader

SharpReader 對我而言最大的目的就是「即時性」,當我在工作的時候可以收到一些我比較注意的一些 RSS 訊息,例如我管理的主機我會把監控的一些訊息透過 RSS 傳出,並用 SharpReader 訂閱,每 15 分鐘 Refresh 一次訂閱的部落格。或我會訂閱一些重點討論區文章,例如微軟技術社群討論區ASP.NET Forums 中的幾個有興趣的討論區等。

在軟體功能方面比 Bloglines 強的地方就是可以在看文章的過程中直接 Show 出討論串的所有回覆文章,對看文章還蠻方便的,且在看文章的時候按下 Enter 就會在 SharpReader 中直接開啟網頁,要直接回覆文章或繼續瀏覽都可以。

不可免俗的一樣有快速鍵可以分享,以下是一些我常用的快速鍵:

  • 按下 Tab 與 Shift + Tab 可以在左側 RSS 訂閱清單與右邊文章列表切換,但是在文章列表的地方按下 Tab 會跳入文章內容區,可惜跳進去之後就無法用鍵盤跳出來了。
  • 在文章列表區:
    • 按下 Enter 鍵會直接開啟該篇文章的網頁在文章內容區
    • 按下 Ctrl + S 會另開瀏覽器視窗顯示該文章的網頁
    • 按下 Ctrl + L 會「鎖定」該文章,若你按下 Del 鍵刪除時會多提示你是否要將該文章刪除
  

此文章由 will 發表於 2008/5/23 下午 11:44:31

永久連結 | 評論 (0) | 此文章的RSSRSS comment feed |

分類: 介紹好用工具

標籤: ,

收藏:

介紹好用工具:USB Disk Ejector

有沒有覺得每次要移除 USB Disk 都要按一下「安全的移除硬體」 圖示 ( image ) 很煩,每次都要用滑鼠 Click 一下,等待一秒的時間,然後再點選一下你的 USB 磁碟機才能安全的移除。

最近找到一個不錯的工具叫做 USB Disk Ejector,可以讓你用一行指令就能快速的移除 USB Disk,最主要是可以讓你用批次檔 ( *.bat ) 或設定捷徑就能夠快速移除 USB Disk,例如說我將下載回來的 USB Disk Ejector 程式 ( USB_Disk_Eject.exe ) 放在 C:\Program Files 目錄下,並且寫一支批次檔擺在「桌面」或「快速啟動」裡,要移除的時候只要點選一下就可以移除了,程式如下:

@echo off 

"C:\Program Files\USB_Disk_Eject.exe" /REMOVELETTER K

批次檔程式中的 /REMOVELETTER K 是代表要移除 K 磁碟機的意思,如果你的 USB 磁碟機預設在 G 槽的話,你只要換成 G 即可。

或者你可以建立一個「捷徑(Shortcut)」的方式也可以達到相同的效果,只要參數設定好就沒問題了:

透過設定捷徑設定 USB Disk Ejector

或者更方便的可以用我之前介紹過的 WinKey 工具設定好參數就可快速移除了,如下圖的設定,當我按下 Ctrl + K 的時候就可以立刻移除 USB Disk 了,超級方便的。

設定 WinKey 快速移除 USB Disk

 相關連結

  

此文章由 will 發表於 2008/5/14 下午 11:50:01

永久連結 | 評論 (0) | 此文章的RSSRSS comment feed |

分類: 介紹好用工具

標籤: ,

收藏:

介紹好用工具:WinMerge

WinMerge 幾乎是我每天必用的軟體之一,他可以幫我比對我在 Subversion 受控管的檔案差異,也可以幫我比對兩個目錄的檔案差異。最主要來說是用來替換掉 TortoiseSVN 內建的 Diff 工具,因為 TortoiseSVN 內建的 Diff 工具對中文字的顯示有些問題,改用 WinMerge 就會好很多。使用 WinMerge 幾乎不用看手冊就會操作了,而且跟檔案總管也整合的十分的好,比對目錄時只要選取兩個資料夾按右鍵選 WinMerge 就會進行比對了。

檔案比對圖例

File Comparison

目錄比對圖例

Folder Comparison Results

安裝好 WinMerge 後的預設「選項」我是建議修改一下,讓使用的時候比較順暢一些,以下是我習慣的設定:

一般:勾選「自動捲至最初差異」

image

比較:比對空白通常沒什麼意義,且檔案多按了個 Enter 也不需要大驚小怪的,斷行符號也不是挺重要的。

image

編碼頁:我們的程式檔案通常都是 UTF-8 編碼,使用「系統用的編碼頁」在繁體作業系統是 Big5,常會造成無法比對的情況。

image

相關連結

  

此文章由 will 發表於 2008/5/11 下午 11:50:19

永久連結 | 評論 (0) | 此文章的RSSRSS comment feed |

分類: Subversion | 介紹好用工具

標籤: , ,

收藏: