about
- 2021年5月起自用笔记应用从蚂蚁笔记迁移到joplin,使用流畅
- ps:由于2.1.9后的joplin版本做了一些所谓的排板优化,个人使用版本固定在2.1.9
- 为了一至体验,写博客这个事也移到joplin来
- 可行解决方案,想到了三种,理论上还有很多种:
- 给jopin写一个插件,直接发布
- 按官方文档搭建了开发环境,测试发了一个插件发现在mac下没反应,但在windows下正常,故放弃
- 解析本地数据库,检查到改动后发布
- 点帮助打开配置文件目录,后就可以看到database.sqlite文件,就是数据库文件,定时读就能看到改动
- 其实这个方案蛮好的,只是不想在本地专门启个程序来做这个事
- 由于我是使用腾讯云同步的,所以可以使用同步的数据进行处理
- 给腾讯云COS写触发器,判断是否为是博客分类的,然后处理
- 给jopin写一个插件,直接发布
迁移到AWS s3 + lambda
- 由于腾讯云函数从6月开始收最低消费第月12块,所以迁移到aws
- 具体:笔记同步到aws s3, 静态博客生成程序运行在aws lambda ,静态文件依旧在腾讯云cos
- 阿里云也不考虑了,国内迟早都得收钱。。从新浪sea到腾讯scf,都不想让我们这些有零星自我开发需求的人不花钱过,你按量计费也行,没流量也没几个钱,你TM弄个低消包月,怎么忍,新浪当初也是,最低包月20
- aws有一个问题就是一个月只有2000次调用的put量,一般正常是够 用的,但是如果文章多,首次同步,基本上就跳满了,我一共100条的样子,第一次同步就用了接近1600次put,get倒是有20000次,完全够用,下面帖一下aws给的免费套餐的量
实现
postList.json
- 博客文章列表,静态文件
后端
- 后端是一个serverless,大致过程是
- 验证是否刷于笔记桶
- 下载文件
- 分析备份文件内容,拆出markdown和属性类信息
- 下载 postList.json 获取博客列表
- 判断操作类型,包含添加,更新,删除
- 渲染markdown,生成博客页
- 更新postList
- 上传博客文件,上传postList列表
前端
- 索引页
使用vue下载 postList.json 进行列表渲染- 后端直接输出
- 分类页
- 索引页加参 category=xxx 实现,由vue筛选列表渲染
- 博客内容页
后端生成时将内容放在头信息里由前端 marked渲染- 加了code语法高亮,
加了异步数学公式渲染
done
当前看到的页面就是,前端具体代码直接右键开发者模式看就好
TODO
- 首页时间显示,改为计算属性
- 地址栏参数queryVar改为全局变量 分类检查时直接调用
- 首页列表改为在 vue 初始化,
- 内容页markdown前端渲染改为使用commonmark后端渲染,前端渲染还是有肉眼可见的过程的
- 首页改为vue3,
vue3少比vue2少十多k(并没有少),理论上vue3更快,跟上时代- vue3好像和vue2变化不是很大,需要改的地方不多
- app创建改为了一个函数,不再是vue2的new app
- data是一个函数,可以直接调用方法,不再需要写在created里
- app创建好后要手工mount到DOM节点上
let app = Vue.createApp({ data(){ return {postListByYear:this.getPostListByYear()} }) app.mount("#posts-list")
- vue3好像和vue2变化不是很大,需要改的地方不多
- page页模板独立,由于之前resources拿不到,做成了String变量,研究了一下文档解决
- 图片处理,有点复杂,待完成,于4月5日完成
- 先把图象标签拎出来
- 按id把图片复制到blog桶image目录下
- 替换图象标签里的连接
-
并发问题暂不考虑- lock文件,内容为文章id,每次处理时循环检查
- 评论或留言版,考虑用第三方,使用了来必力
- 代码高亮,添加了一些常用语言json,java,groovy,python
- 公共静态文件cdn更换为为cdnjs.com,供应商为cloudflare
- 用了codefever的git做为代码托管,主要是想知道自己之前改了啥,好排查问题
- 静态首页,发现动态的首页seo不收
- 使用bytool去除fastjson依赖
- siteMap 生成
- 添加 meta description tag
- 更新时间使用笔记更新时间,而event时间
- 解析器添加autolink扩展,支持直接写url,并对链接添加target = "_blank"新页面打开
- 文章改名支持
- 一个小bug导致的
迁移到aws
- 笔记同步到aws
- 更新程序,调整blog程序,添加aws s3事件相关逻辑,已基本改完
- 部署aws测试调整,确认无异常,附件也要测试一下,自测俩小时。。哎写groovy是有点不容易看到bug
- 移除腾讯云函数相关代码
- 冗余一份postList在s3,用于判断是否需要update,如里不需要update就无需请求腾讯云了
迁移备注
- aws s3需要开启 存储桶版本控制,才能收到更新事件
- lambda 需要专门给s3加一下权限