Codejie's C++ Space

Using C++

LingosHook : Data Clean-up Plugins


    真正的程序员,敢于面对自己的BUGs!!
    这话说的多么地’正气凛然‘啊。。。实际上应该是’自作孽,不可活‘啊。。。找了一晚,终于发现昨天提到的’删除单词Bug‘实际应该是’添加单词Bug':当添加新单词,并开启词典分析选项时,LingosHook会过滤掉已经存在的单词,以防止重复记录;设计的多好,但问题是,如果单词重复,相应的HTML数据也不应该保存啊。。。这个忘记写了。。。如下代码:

 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数据到SrcDataTable表中。唉,LingosHook长期以来一直在致力于减少数据的存储,没想这一个Bug。。。唉,丢脸了。。。
    做错事,是要付出代价的!为了修正Bug导致的错误存储,昨晚决定为此专门写个插件--Data Clean-up!



    Data Clean-up插件能够备份和自动清理无用数据。整整3个小时,每分钟不少于敲打120个字母的速度下,终于搞定了。。。使用方法如下:

    1. 备份:为了防止可能的错误,建议备份原有数据文件;使用插件,点击‘Backup’即可。插件自动备份LingosHook.db3文件到以当前日期为后缀的新的db3文件中,如下图所示。



    2. 清理:插件自动查找并清理无用数据,点击‘Clean-up'即可,如下图所示:

  
    看看,超过一半以上的无用记录,多么可怕的Bug啊。。。从理论上来说,无用记录范围会在0到无穷大间。。。(有本书叫做《从零到无穷大》很好看。。。)

    到此,Bug修正并实现清除方法,可以瞑目了。。。插件随下个LingosHook版本一起发布,不好意思了。。。

    突然发现,今晚要是能处理完FonDonator插件,再加班加点测试下,也许没准还真能赶上过个六一呢。。。哇哈哈。。。
    

posted on 2012-05-31 18:20 codejie 阅读(1204) 评论(0)  编辑 收藏 引用 所属分类: LingosHook


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


公告

Using C++

导航

统计

留言簿(73)

随笔分类(513)

积分与排名

最新评论

阅读排行榜

评论排行榜