真正的程序員,敢于面對(duì)自己的BUGs!!
這話說的多么地’正氣凜然‘啊。。。實(shí)際上應(yīng)該是’自作孽,不可活‘啊。。。找了一晚,終于發(fā)現(xiàn)
昨天提到的’刪除單詞Bug‘實(shí)際應(yīng)該是’添加單詞Bug':當(dāng)添加新單詞,并開啟詞典分析選項(xiàng)時(shí),LingosHook會(huì)過濾掉已經(jīng)存在的單詞,以防止重復(fù)記錄;設(shè)計(jì)的多好,但問題是,如果單詞重復(fù),相應(yīng)的HTML數(shù)據(jù)也不應(yīng)該保存啊。。。這個(gè)忘記寫了。。。如下代碼:
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 }
是的,紅色部分忘記了。。。
目前看,這個(gè)Bug在很早就應(yīng)該存在了,大約都可以追溯到1.2.001!當(dāng)同一個(gè)單詞被多次查詢時(shí),Bug會(huì)導(dǎo)致LingosHook存入一條完全沒用的HTML數(shù)據(jù)到SrcDataTable表中。唉,LingosHook長(zhǎng)期以來一直在致力于減少數(shù)據(jù)的存儲(chǔ),沒想這一個(gè)Bug。。。唉,丟臉了。。。
做錯(cuò)事,是要付出代價(jià)的!為了修正Bug導(dǎo)致的錯(cuò)誤存儲(chǔ),昨晚決定為此專門寫個(gè)插件--Data Clean-up!

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

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