真正的程序員,敢于面對自己的BUGs!!
這話說的多么地’正氣凜然‘啊。。。實際上應該是’自作孽,不可活‘啊。。。找了一晚,終于發(fā)現(xiàn)
昨天提到的’刪除單詞Bug‘實際應該是’添加單詞Bug':當添加新單詞,并開啟詞典分析選項時,LingosHook會過濾掉已經(jīng)存在的單詞,以防止重復記錄;設計的多好,但問題是,如果單詞重復,相應的HTML數(shù)據(jù)也不應該保存啊。。。這個忘記寫了。。。如下代碼:
1 int CDictObject::SaveResult(const std::wstring& html, TResultMap& result)
2 {
3 if(FilterResult(result) != 0)
4 return -1;
5 if(result.size() == 0)
6 return 0;
7 int srcid = -1;
8 if(SaveSrcData(html, srcid) != 0)
9 return -1;
10 if(SaveResult(srcid, result) != 0)
11 {
12 RemoveSrcData(srcid);
13 return -1;
14 }
15 return 0;
16 }
是的,紅色部分忘記了。。。
目前看,這個Bug在很早就應該存在了,大約都可以追溯到1.2.001!當同一個單詞被多次查詢時,Bug會導致LingosHook存入一條完全沒用的HTML數(shù)據(jù)到SrcDataTable表中。唉,LingosHook長期以來一直在致力于減少數(shù)據(jù)的存儲,沒想這一個Bug。。。唉,丟臉了。。。
做錯事,是要付出代價的!為了修正Bug導致的錯誤存儲,昨晚決定為此專門寫個插件--Data Clean-up!

Data Clean-up插件能夠備份和自動清理無用數(shù)據(jù)。整整3個小時,每分鐘不少于敲打120個字母的速度下,終于搞定了。。。使用方法如下:
1. 備份:為了防止可能的錯誤,建議備份原有數(shù)據(jù)文件;使用插件,點擊‘Backup’即可。插件自動備份LingosHook.db3文件到以當前日期為后綴的新的db3文件中,如下圖所示。

2. 清理:插件自動查找并清理無用數(shù)據(jù),點擊‘Clean-up'即可,如下圖所示:
看看,超過一半以上的無用記錄,多么可怕的Bug啊。。。從理論上來說,無用記錄范圍會在0到無窮大間。。。(有本書叫做《從零到無窮大》很好看。。。)
到此,Bug修正并實現(xiàn)清除方法,可以瞑目了。。。插件隨下個LingosHook版本一起發(fā)布,不好意思了。。。
突然發(fā)現(xiàn),今晚要是能處理完FonDonator插件,再加班加點測試下,也許沒準還真能趕上過個六一呢。。。哇哈哈。。。