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加一下权限