reslog 更新記錄

2005-05-08	3.05 版
	問題修正。
	 1. 先檢查有沒有標準輸入和標準輸出可用，若沒有則做一個暫用的替代品，以
	    解決在 MSWin32 下，沒有標準輸入可用時，做標準輸入轉向會產生錯誤的
	    問題。在 CPANPLUS 下做 make test 時，會先關閉標準輸入，就會造成這
	    個問題。

2005-05-08	3.04 版
	 1. 修正載入 File::MMagic 時的別字，導致 File::MMagic 無法載入。

2005-05-08	3.03 版
	 1. 重寫 flock() 的做法：不是普通檔案的檔案操作，不再鎖檔。由外來程式
	    處理檔案操作時，會暫時解除鎖定。自行讀寫普通檔案時，即使是暱名的暫
	    存檔，也一律鎖檔。這樣簡化了鎖檔的問題，外來程式不管怎麼存取，都不
	    是問題了。
	 2. Makefile.PL: 加上 MY 套件，加上 make upgrade 以移除舊版檔案，加上
	    constants() 與 manifypods() 方法，以改變安裝目錄。現在程式會安裝回
	    /sbin 目錄，說明檔則分到 manpage 第八區。這樣才對。
	 3. 更新內建 POD 說明中的 BUG 和 TODO 兩節。

2005-05-02	3.02 版
	 1. 加上 _private::Resolver 和 _private::Resolver::Threaded ，反查程式
	    和主程式分開，獨立作業，以便日後要改寫為其它反查程式時（如 GeoIP
	    ），不需改寫太多東西。
	 2. 暫時工作檔的說明修正。
	 3. 檔案型態不明時，原來顯示 $type ，應顯示 $_ ，已修正。
	 4. 加上測試 31-39 ，以測試 --suffix 及 --trim-suffix 的功能。
	 5. 在 cygwin 上成功測試執行。
	 6. 測試程式加上引號，以便在含空白的目錄中測試無誤。
	 7. 所需的 Perl 版本改為 5.8.0 。 5.7.2 是研發版，那樣設沒有意義。

2005-05-01	3.0102 版
	 1. check_magic() 、 check_gzip() 及 check_bzip2() 直接檢查 eval() 的
	    傳回值，以取代存在 $ok 後再檢查。
	 2. 加上 %CONF 存放設定值。
	 3. $THIS_FILE 、 $SHORTHELP 和 $VERBOSE 由 use vars qw(...) 改為
	    our (...) ，簡化程式。
	 4. 加上 DEFAULT_PROGBAR 處理進度列顯示與否的預設值。

2005-05-01	3.0101 版
	勞動節萬歲！
	 1. 套件名稱由 ResLog 改回 main ，以免和 CPAN 的套件弄混。
	 2. 類別名稱由 ResLog::* 改為 _private::* ，以免和 CPAN 的套件弄混。
	 3. check_io() 原來傳回類型常數，改傳回輸出入介面物件，以便直接產生輸
	    出入處理器。 new_read() 、 new_write() 及 new_append() 改由輸出入
	    介面物件產生輸出入處理器物件。停用 IO_* 常數。
	 4. 加上 use_flock() 以判別輸出入處理器能不能用 flock() ，以取代直接檢
	    查。目前 MSWin32 上執行 bzip2 程式時，不能用 flock() 。
	 5. 停用 IO_* 常數。
	 6. whereis() 改用 ExtUtils::MakeMaker MM->maybe_command() 尋找執行程
	    式。這是參考 CPAN::FirstTime 的做法。

2005-04-26
	 1. Changes: 檔案重新編輯，一行 60 個字元放大到 79 個字元，以便閱讀。

2005-04-26	3.01 版
	錯誤修正。
	 1. --suffix 與 --trim-suffix 無法正常運作。我在 GetOptions() 裏誤把
	    $_[0] 當 $_[1] 使用，而且完全沒有發現！ ^^; 現已修正。
	 2. 修正說明文件的錯別字（ rewrite 應為 rewrote ）。
	 3. 修正 Changes.zh-cn 未隨 Changes.zh-tw 更新之誤。

2005-04-26	3.00 版
	 1. README 說明更新。
	 2. HTML 說明文件更新。
	 3. 上傳到 CPAN 。
	 4. HTML 文件更新，以符合 W3C WCAG 無障礙網頁規範 1.0 三 A 級規定。

2005-04-26	2.9901 版
	 1. 重寫 INSTALL 安裝說明。
	 2. 加上 UPGRADE 昇級說明。

2005-04-25
	 1. 加上 Module::Signature SIGNATURE gpg 簽章檔，停用外附簽章檔。
	 2. 加上測試程式。
	 3. 因為有測試程式，修正了很多錯誤。

2005-04-24	2.99 版
	這是物件導向新版。我從頭開始重寫整個程式。
	 1. 以物件導向模式，從頭重寫。
	 2. 加上 ithread 多線程支援，可同時反查多個 IP ，大幅加快執行速度。本
	    功能需要 Perl 5.7.2 ithread 線程支援。新增 --num-threads 參數，以
	    設定本功能。妳可以用 -d -d 觀察多線程作業。
	 3. 支援使用 gzip 程式、 Compress::Bzip2 及 bzip2 程式。這是物件導向的
	    好處：記錄的存取，現在都透過一個一致的輸出入界面，因此，很容易撰寫
	    新的輸出入界面模組。
	 4. 新增選項 --trim-suffix ，在加上檔尾之前，先先去除某個檔尾，以便
	    reslog 能和其他記錄處理程式一起作業。
	 5. 若未安裝 File::MMagic 時，可使用 file 程式代替，或由檔尾判別檔案型
	    態。
	 6. 在 UNIX 下，使用 Term::Size 顯示進度條。在 MSWin32 下會改用
	    Win32::Console 。若未安裝以上模組， reslog 不會顯示進度條，但仍可
	    正常運作。
	 7. 以往 reslog 一行一行讀檔、反查、存檔，現在改先讀過所有的記錄檔，蒐
	    集要反查的所有 IP ，一口氣反查後，再一起把記錄檔的 IP ，用反查結果
	    取代後存檔。
	 8. 程式和專案名稱，由 reslog.pl 改名為 reslog 。很多地方不能用含點 .
	    的專案名稱（如 SourceForge ）。對 UNIX 來說，程式名稱用 reslog 就
	    夠了。而且 在 MSWin32 下，也不可能依副檔名，從檔案總管直接點選
	    reslog 執行，況且 MSWin32 下還有一個 pl2bat 可以轉成 reslog.bat ，
	    比用副檔名更方便。
	 9. 安裝程式原來用我自己寫的 Install.PL ，改用 Perl 的標準安裝程式
	    ExtUtils::MakeMaker 。依標準程序作業是好事。 Perl 的
	    ExtUtils::MakeMaker 比 GNU 的 autoconf 能跨更多平台。在
	    ExtUtils::MakeMaker 下，原先 UNIX 下安裝到 /usr/sbin ，現在改安裝
	    到 /usr/bin 。不過其實 reslog 也不用安裝就是了。 :p
	10. 配合 Perl 模組的慣例，版本號碼由三個數字（如 2.1.0 ）改為兩個數字
	    （如 3.00 ）。
	11. 配合 ExtUtils::MakeMaker 的慣例， ChangeLog 改名為 Changes 。

2003-01-04
	 1. 修正檔案操作的檔尾讀取檢查，改用 defined() 。

2002-11-13
	 1. 統計訊息分行，以使程式碼易於閱讀。
	 2. 按 arclog.pl 的方式重寫 open_src() ，以便用 gzip 和 bzip2 程式壓縮
	    。

2002-11-12
	 1. RELEASE_NOTES 改名為 ChangeLog 。
	 2. 加上 AUTHORS 。
	 3. 加上 THANKS 。
	 4. 改寫參數檢查的邏輯。
	 5. 修正數個 $WORKING_SRC 用 tempfile 開檔，卻未鎖檔的錯誤。
	 6. 按 perlstyle(1) 的規定說明，修正幾個函數名稱與函數括弧間多餘的空白
	    。
	 7. 刪除 slice 與 catfile 後多餘的括弧。

2002-10-28
	 1. 修正 $WORKING_RES 開檔時未鎖檔的問題。 $WORKING_RES 關檔時會解除鎖
	    定。在某些作業系統上（如 Linux ），可以解封之前沒有鎖定的檔案，但
	    在某些作業系統上（如 MSWin32 ），若要解封之前沒有鎖定的檔案，會造
	    成執行錯誤。 $WORKING_RES 其實不需要鎖檔。它是匿名的暫存工作檔，沒
	    有檔名，只有執行的程式緒自己讀寫得到。除非跑多執行緒程式，否則完全
	    沒有同時寫入的風險，而本程式不是多執行緒的程式。我之所以鎖檔，只是
	    為了維持程式寫作風格的統一而已，沒有其她原因。（感謝 Chen-hsiu
	    Huang <chenhsiu@gens.dhs.org> 回報此問題。）

2002-09-28
	 1. 改先用 File::Magic 或 file 程式來檢查檔案型態，最後才用檔尾檢查。
	 2. 加上 check_file_type() ，依序以 File::Magic 、 file 或檔尾來判斷檔
	    案格式。
	 3. 加上 check_gzip() 來偵測 gzip 壓縮的方法。
	 4. 加上 check_bzip2() 來偵測 bzip2 壓縮的方法。

2002-09-18	2.1.0dev2 版
	申請 SourceForge 的記念版。這是我第一次向 SourceForge 申請架設專案。
	^_*' 主要校正說明文件的錯誤，並把 SourceForge 的專案加入程式的下載網址
	中。
	 1. 恢復旅舍依瑪上的官方網頁。
	 2. 前版原為 2.1.0-dev1 版，為統一起見，改為 2.1.0dev1 版。
	 3. 程式申請到 SourceForge 專案，開始上傳至 SourceForge 上。
	 4. 架設 SourceForge 專案虛擬主機。
	 5. 文件中加入 SourceForge 作為官方網站與下載來源。
	 6. 說明文件校正。校正處頗多，不及備載，略。
	 7. HTML 說明書改寫為 XHTML 1.1 規格。

2002-08-31	2.1.0dev1 版
	隔一年後改版重寫，以在 Perl 5.8.0 下執行。
	 1. 檔案代碼 (filehandles) 改存在整體 (global) 變數中。這樣寫才對。原
	    來從 STDIN 複製出新的檔案代碼，再設定的做法，本來就有問題。那樣能
	    在 Perl 5.6.1 下執行，但無法在 Perl 5.8.0 下執行，因為複製出的新檔
	    案代碼是常數，不能設定。
	 2. 依 perlstyle(1) 內所載的 Perl 程式寫作風格，將內縮由一個定位字元
	    (Tab) 改成四個空格，讓程式更好讀。
	 3. 檔案操作錯誤處理程式，原來用「 || 」，依 perlop(1) 所載的建議，改
	    用低優先性的邏輯算符「 or 」。因為改用「 or 」，檔案處理函式中多餘
	    的括弧，也刪掉了。
	 4. 繁體中文檔案的檔尾由「 .b5 」改為「 .zh-tw 」，簡體中文檔案的檔尾
	    由「 .gb 」改為「 .zh-cn 」，以符合 RFC-3066 、 ISO 639:1988 、
	    ISO 3066-1 語言代碼的標準。
	 5. 發行檔加上 PGP 簽名。
	 6. 加上 bzip2 版本的發行檔。

2001-09-03	2.0.2 版
	 1. 修正將檔案處理 File Handle 當成私有變數來傳遞，導致檔案處理被錯誤
	    修改的錯誤。

2001-09-01	2.0.1 版
	 1. 修正反查結果快取 %NAMES 不是全域變數的錯誤，以在處理多檔時，可在不
	    同檔案間累積反查快取結果。
	 2. 修正英文 HTML 說明檔中，連結網址沒有使用絕對網址的錯誤。

2001-06-29	2.0.0 版
	第一個公開版本。
	 1. 加上中英文標準檔頭。
	 2. 使用 Getopt::Long ，取消自己寫的參數分析函式。 
	 3. 使用 File::Spec::Functions 來做檔名處理，使用自訂的 rel2abs 。
	 4. 使用 Cwd 取得目前工作目錄。
	 5. 使用 IO::Handle 的 autoflush ，在偵錯模式下單獨對 STDOUT 做
	    autoflush 。
	 6. 使用 File::Temp 做暫時工作檔，在暫時工作檔上進行所有的工作，以減少
	    佔用原記錄檔和結果檔的時間。
	 7. 使用 Compress::Zlib 讀取壓縮檔。
	 8. 加上自訂的 rel2abs() ，將相對路徑轉為絕對路徑。
	 9. 加上 progress_bar() ，以圖形顯示目前進度。
	10. 加上 res_log() ，以遞迴處理多檔。
	11. 加上 open_src() 和 save_res() ，以處理開檔存檔。
	12. 加上 POD 說明。
	13. 加上版本記錄。
	14. 加上讀我檔案。
	15. 加上 GNU 版權說明。
	16. 加上安裝指南。
	17. 加上 Install.PL 自動安裝程式。

2001-01-21	1.3.1 版
	 1. 只在偵錯模式下做 autoflush 。
	 2. 將簡式檔頭改成標準檔頭。

2001-01-07	1.3.0 版
	 1. 在詳細執行訊息中加上 [目前筆數/總筆數] 。

2000-??-??	1.2.0 版
	 1. 使用自訂的參數分析子程式 parse_args() 。

2000-??-??	1.1.0 版
	 1. 加上處理暫時工作檔的參數 --usetmp 。
	 2. 加上可以更改附加檔名的參數 --suffix 。
	 3. 加上顯示詳細訊息的參數 --debug 。

2000-12-22	1.0.0 版
	初版。
