每天进步一点点:修复本地搜索程序的BUG

在HIVE/STEEM上已经写了四年多的文章,其中不乏一些技术相关的内容,有些内容在实际工作中被频繁/偶尔用到,但是由于记忆力不佳,有些操作做过就忘了,有些代码写完就记不得了,所以我需要时不时地搜索一下自己写过的东西。

image.png
(图源 :pixabay)

在很早之前,我曾经基于@furion steemdata服务弄了个查询服务,查查帖子什么的非常方便,可惜后来STEEMDATA服务关停了,再后来用steemsql服务,但是月费太贵了,后来自己写了个小程序用来查自己的帖子,还挺好用了。

可是这两天我打算更新一下小程序的数据库,发现不断出错,想了半天也想不出所以然,那就跟踪一下喽。我使用的是如下API:

get_discussions_by_author_before_date

但是总在这个位置出错:

JSON_THROW(type_error::create(302, "type must be number, but is " + std::string(j.type_name())));

我想当然地认为是JSON解析的问题,可是追踪了一下,发现解析并没有出问题,最终问题定位到读取文章id这里:

long id = j_ret["result"][i]["id"];

按说这代码是不可能出问题的啊,毕竟已经用了好久呢?不过我手动执行一下上述调用,发现原来并没有返回id字段,而是返回post_id,好吧,我承认post_idid意义更明确,但是这确实给我制造了一些麻烦啊。

讲上述代码修改为:

long id = j_ret["result"][i]["post_id"];

再执行更新操作,总算正常了。但是点击搜索结果,打开的链接竟然还是STEEMIT的,如果是分叉前的数据,其实打开哪个链接都能看,但是分叉后,我新发布的文章permlink就不同啦。既然主要在hive上玩耍,并且api节点也用的hive的节点,那么链接当然要换成hive的啦:

ShellExecute(NULL, _T("open"), _T("https://hive.blog") + url, NULL, NULL, SW_SHOWNORMAL);

香蕉派 M3两个关键字搜索一下文章内容,效果不错:

Reveal spoiler

image.png

就这样,我的本地搜索程序又复活啦,啊哈哈哈。