近期打算写一些游记,一看手机拍的照片大小都在 5Mb 以上,所以想着研究一下图片优化方法。主要了解了Imgbot 和 Webp 两种方法,最后选择通过腾讯云来优化图片。
近期打算写一些游记,一看手机拍的照片大小都在 5Mb 以上,所以想着研究一下图片优化方法。主要了解了Imgbot 和 Webp 两种方法,最后选择通过腾讯云来优化图片。
记录博客修修补补的故事
210123: 博客进入 beta 0.3 时代
我也想学习微信不写更新日志
长达 9 个月闲置之后,终于迎来一轮对博客的更新。
早期对博客进行的相关修改有:
ERROR in Cannot find module ‘node-sass’(已解决) - line - CSDN博客
1 | cnpm install node-sass@latest |
博客折腾记:hexo-leancloud-counter-security 与标题中的引号冲突
昨天按照 hexo-theme-next/LEANCLOUD-COUNTER-SECURITY.md at master · theme-next/hexo-theme-next 这个文档配置博客阅读次数时,遇到 hexo-leancloud-counter-security
插件的一个冲突。
完成配置使用 hexo -d
时,终端中出现下面的错误提示:
1 | ATAL Something's wrong. Maybe you can find the solution here: http://hexo.io/docs/troubleshooting.html |
看提示貌似是利用 Json 解析字符串的时候出现问题。打开 node_modules/hexo-leancloud-counter-security/index.js:92
,对应出现一个解析 JSON的:
1 | y = JSON.parse(memoData[memoIdx].substring(0, memoData[memoIdx].length - 1)); |
js 没有怎么接触过,不知道能不能单步调试之类的,只好祭出输出调试大法,加上两个输出:
1 | console.log(memoIdx) |
然后再执行 hexo -d
命令,命令行输出为:
1 | 28 |
JSON 在解析字符串{"title":"System.out.println("hello world!");","url":"/post/hello-world.html"}
时出现错误。对应的正是之前写的一篇名为 System.out.println("hello world!");
的文章,由于 JSON 格式中字符串是需要用""
修饰,导致JSON 中出现了一个 "title":"System.out.println("hello world!");"
key-value 组合。然而实际上 JSON 只会将 "System.out.println("h
解析成 value,之后出现的 h
被当成非法字符报错。
定位问题之后,暂时修改文章的标题为 hello world! | 算法花园,绕过部署失败。
已切换到 Github Action
之前一周在封闭接受公司培训,最重要的任务是熟悉「项目开发全流程」。其中有一点:服务的稳定性。不知道为什么,前几天自己的博客崩溃了,输入域名只能看到 404 页面。当时以为是 Travis CI 的原因,所以进行了全面的一次排查:
其实看一眼就应该知道,我的博客是基于 hexo 搭建的,文件托管在 github 仓库中。不过,按照之前的设想博客应该在 Coding 中也有一份备份。后来由于一些原因,在利用 hexo 生成静态文件之后,自动推送到 Coding 上的命令不起作用。自己也没有时间去排查问题,所以最近访问速度有点慢。
传统的 hexo 博客更新过程是:在完成写作之后,利用命令行调用 hexo g && hexo d
来生成静态博客文件以及并推送到远端的仓库中。这种方法会产生三个痛点:
Travis CI 是一种持续集成开发所使用的工具,在写作过程中引入他可以解决上面我提到的痛点。Travis CI 具体的含义也不是很清楚,直接介绍我是怎么使用的。
博客依赖 3 个 git 仓库:
和大部分人一样,这个博客的静态文件保存在 github 的 xiang578.github.io 仓库 master 分支中。但是,我还创建了一个新的分支 hexo,用来保存博客源文件。每一次修改博客源文件之后,我不在本地生成静态文件,而是利用 git 命令,将所有的修改内容推送到仓库中的 hexo 分支。Travis CI 服务监听到新的 push 时,会根据你的配置将 git 仓库拉倒他的服务器上,编译源文件成为静态文件,并推送生成的文件到指定仓库的指定分支中。而且,如果编译静态文件失败,他也会通过邮件通知你结果。
git checkout -b hexo
创建并进入新的分支,删除分支内所有的文件。.travis.yml
文件,文件内容可以参考下一节 Travis-ci 配置文件。themes/xxx
是通过 git clone 下载的,无法直接 push 包含嵌套关系的 git 库。git modules
引用依赖库。所幸还能编辑 .git/config
,添加下面几行代码解决:themes
对应的 github 网页,你会看到主题链接到其他仓库(其中 @commitid 控制对应的版本)1 | language: node_js |
在这一次的过程中,又遇到两个本地编译 hexo 的错误,一同记录一下。错误表现如下:
1 | ERROR Plugin load failed: hexo-renderer-sass |
网上的建议是修改 npm 的源地址为淘宝的镜像,并且重新下载这两个包。
1 | sudo npm config set registry https://registry.npm.taobao.org |
前几天,看到其他人在 V2 上讨论利用 Docker 更新 hexo 博客。不过自己对使用 Docker 不是很感兴趣,倒是了解到 Travis CI 的作用。
参考使用 Travis 自动构建 Hexo 到 GitHub | Zthxxx’s Blog和使用travis-ci自动部署Hexo到github和coding - 掘金这两篇文章,完成了博客自动部署的修改,也解决了一些,之前没有在意的问题,写下来备忘一下。
介绍一下与这个博客先关的 git 项目。博客相关的原始文件放在 xiang578/blog,主题文件放在 xiang578/hexo-theme-even: A super concise theme for Hexo(我对这个主题有一些修改,所以自己 fork 了一份,最后发布的文件放在xiang578/xiang578.github.io: Welcome to My blog!(实际上这也是一个备份,访问时的文件是从 coding 服务器上读取的)。
按照上面两篇博文配置好 Travis CI 之后,每次向存放博客原始文件的仓库 push 时,travis-ci.com 都会拉取代码进行 build ,成功之后会出现下图。
之前都是使用 git clone 下载主题的,如果把本机上的博客相关文件直接推送到 github 上会遇到问题。简单地说就是一个 git 文件夹包含了另外一个 git 文件夹。所以,需要使用 git modules
来解决。通过这种方法可以在 clone 主仓库时,会自动clone子仓库。
博客仓库中会链接到其他仓库,其中 @ 之后的那一串就是 commit 编号,主要是用来做版本控制的。
完成这样的设置,修改主题文件后,需要先将修改 push 到主题的仓库,然后在博客文件夹下 push 修改到远端仓库。最终,才能再网页上看到修改效果。
从零开始利用 hexo + Github/Coding 搭建个人博客
更新历史
Even
相关内容前几天自己在电脑上装Linux时,不小心把博客的数据文件夹给删了。无奈重新安装,同时写下这篇备忘录以防万一。当然,经历这个失误,看来也要利用网盘对博客的一些文件进行备份。