用QT5.9.9写一个开源博客的PC客户端,升级博客系统

1 评论
/
23 阅读
/
2713 字
26 2025-01

有milu博客原作者给我留言,突然想起来,我的博客迁移的事情还没做个记录,

迁徙缘由

我的博客,最开始是csdn上博客,写了快20年的博客,排名当时是前100名,说封就给封了,没有任何理由

然后一怒之下就注销了账号,最可耻的是,当我以为注销了账号,我的博客内容应该也一起删除才对, 结果没有过多久,博客内容竟然死灰复燃:

https://blog.csdn.net/gumanren/

终于意识到,博客内容还是要掌握在自己手上,不然随时都可能被封杀,封杀的时候都不会给你通知一声.

第一次迁徙

第一次迁徙就开始了,由于当年比较熟悉用用PHP,于是找了PHP的博客WordPress,写了个导入程序,觉得效果还不错, 于是将数据导入完毕,开开心心上传到服务器,后面手头工作忙就没怎么管了,不知道过了多久,我去看我的博客首页,发现评论里面 一堆俄语,英语的留言,还以为遇到了海外老铁留言了,登录上后台,准备去回复,天塌了,发现都是一些内容雷同的垃圾留言. 删除这些垃圾留言都删除了好久.第一次意识在安全性上,WordPress的这个博客也不是很给力. 真正让我放弃WordPress的是,运行了一段时间后,WordPress的性能不是很给力,在一个1核1G的服务器上,跑起来略微有点吃力,压力一下就卡了.

第二次迁徙

于是准备寻找第二个替代方案,这时候go语言写的hugo静态博客,就非常适合我这种低性能服务器上跑博客的用户,而且也不怕留言灌水,全静态,性能又强大. 当然这玩意也有缺陷:

  • 需要配置第三方的留言代码,由于我的服务器是在香港的,很多国内需要备案的留言服务没法用,国外的又经常被限制.
  • UI可选性小,升级后经常出现不兼容
  • 统计数据不可见(不想备案,不想用第三方js嵌入)
  • 手工管理博客 新建/编辑/图片上传 比较反人性,对于懒惰的我,博客接受.
  • 无留言系统

hugo就这样子折腾了一年多,发现还是有很多不如意的地方,比如:新建博客/上传图片/预览/留言/搜索 最终还是准备要换一个.

第三次迁徙

想着事不过三,这次一定是最后一次了,同时这一次要将前面的那些缺陷都解决掉. 于是在网上搜索go关键词,找呀找,找呀找,终于被我找到一个用go写的博客milu.blog,主要是前端UI一下子就吸引了我,清晰靓丽的绿色风格,觉得这个博客前端非常nice ,比我自己的hugo博客清新太多了(奈何前端审美太差,写不出优雅的css). 当然仔细看后端代码,当时还觉得有点凌乱,在思考要不要换,不过多看了两眼前端,最终还是决定换了,

后端不行,我慢慢完善,前端不行,我真没办法,谁怪我技不如人,前端实力不够强呢.

于是趁着临近过年的这段时间,腾出了点时间,将博客从hugo转到go写的博客

数据迁移

说干就干,第一步就是了解博客数据结构,导入以前的老数据. 没有的功能,新开发 不完善的地方,进行完善

数据转换

第一步是迁移数据,从hugo中解析所有markdown格式的文档,用go写解析代码,并录入到数据库.

修改数据库字段

在录入过程中,发现原有的博客是采用数字id方式作为博客的主键的,我原来的博客存储采用了标题的MD5方式作为主键的,为了保持链接统一,决定改造博客的数据库, 增加一个博客的MD5标题字段.

分类导入

当文字内容迁移成功后,分类也一并导入

新增标签功能

发现在导入标签,原博客并没有标签功能,于是独立开发了个标签功能,然后在导入

导入图片

我原有的博客存放图片采用图片内容md5的方式作为文件名字存放的,为了沿用以前的方式,在上传的部分,也一并修改成了这种存储方式,

新增功能

  • 新增标签功能
  • 上传文件按文件内容MD5SUM命名存储,存储在一层目录uploads下,防止文件重复.
  • 博客存储markdown的时候,从服务端转换到html
  • 取消了富文本编辑方式
  • 给站长留言,增加私密模式(只给站长看到)
  • 增加PC客户端(主要新功能集中在此处)
  • 删除github-markdown的css,导致代码高亮冲突问题

后续增加

  • 评论邮件通知(急需)
  • 留言短信通知(急需,需要增加防刷)
  • 分离前端与后台的API入口
  • 关闭WEB管理入口,防止被攻击
  • 将PC端作为博客编写主力,拥有独立SQLite存储
  • 能将远端文章,备份成hugo的markdown格式文件
  • 实现将导入功能做成UI方式的.
  • 加入html静态生成功能,减轻服务器压力.

编写PC客户端

我希望有一个像我以前写hugo博客一样的客户端软件,由于找的开源程序是网上的是小众的开源项目,根本没有同样的轮子可以用,于是决定自己动手丰衣足食,自己来实现一个轮子. 我比较熟悉用C++和QT写客户端,所以这个客户端采用QT5.9.9来实现.

后台接口修改

后台的接口还是大部分采用原有后台接口,增加了2个修改分类和批量修改文章分类的接口.

花了差不多半个月时间,将这个客户端实现了(中间还有很多功能没完全实现,基本上文章相关功能,分类相关功能都能用了)

软件截图:

Image

标签:
  • QT迷

    非常nice