为 Hexo 页脚添加实时更新的运行时间
配置文件
本文用 Dayjs 来处理日期。当然,完全可以用原生 Date,但我不想把时间浪费在处理日期上面。
我使用的是 butterfly 主题。如果读者正在使用别的主题,请查阅对应官方文档寻找如何插入自定义标签与自定义页脚信息。
在主题配置文件(即_config.butterfly.yml)中引入:
12345inject: bottom: - <script src=" ...
自建图床并支持 PicGo 上传
由于 Hexo 的图片管理系统让人比较一言难尽,所以要使用图床来统一管理图片。一般使用 sm.ms 或者 github 仓库作为图床比较多。本着多折腾的心态,再加上我的图不是很多,所以就尝试自己搭建,本文记录一下搭建过程。
部署后端
我们需要自己配置一个后端接口,支持上传图片,我这里用 gist 分享出来了我写的一个简单的后端程序,将几个全局变量替换为对应值即可。如果想要别的功能,那就自己动手丰衣 ...
微元法推导旋转体相关公式
最近学习了微元法(也叫元素法)在几何中的应用,就想推导一下中学学过的旋转体(圆锥,圆台,球)表面积和体积公式。其中,对于表面积,需要用到弧微分的知识,这里顺带记录一下。
弧微分
这里简要给出过程,虽然不是特别严谨,但理解起来容易就好。
对于上图可以得出:
ΔsΔx=∣AB⏠∣Δx=∣AB⏠∣2∣AB∣2⋅∣AB∣2(Δx)2=∣AB⏠∣2∣AB∣2⋅(Δx)2+(Δy)2(Δx)2=∣AB⏠∣2 ...
基于 inspect 实现重载
通常情况下 Python 只能做到在函数体内部判断参数类型进行重载,但我们可以借助 inspect 来实现像一般静态语言那样的重载。为了简化代码,不考虑 positional only 和 keyword only 的参数。
实现了一个基于 OneBot v11 的开发框架,分享一下细节原理
最近写了一个基于 OneBot v11 的机器人开发框架,也就是 SDK,其中包含了蛮多东西,所以单独写篇文章分享一下其中的细节和原理。
整个项目说起来还是比较复杂,所以这里只捡出几个核心实现。这个项目用来参考学习,没有投入生产环境的打算。当然如果你愿意或者喜欢本项目的风格,部署到生产环境是没问题的 :)
项目地址:https://github.com/kifuan/shirasu
使用方法
已上 ...
以元类实现单例
借助元类可以控制类在实例化时的行为,进而达到单例的目的。在 Python 中类本身就是 type 的对象,而元类就是继承了 type 的类,仅此而已。
在 GitHub Pages 中使用 Vue Router
本文主要是由于这个倒计时项目以路径参数的形式接收自定义日期,出于美观的原因我不想用 hash router,而是使用 history router 。如果用 hash router 就不会有这个问题了。此文终结
GitHub Pages 只能帮你生成一个静态网站,但它支持用 404.html 作为一个 fallback(原谅我不知道怎么用中文描述比较贴切)利用这个机制,和 sessionStora ...
自己实现 abc 模块的核心功能
简介
写完这篇文章之后我又做了个视频和大家聊聊,说的应该更详细:https://www.bilibili.com/video/BV14Y4y1o7mN/
通过 abc 这个模块,我们可以在 Python 中使用抽象类,定义抽象方法、抽象属性。其本质是利用元类来检查是否有未实现的抽象方法,从而阻止抽象类的实例化,也就达到了目的。
所以说它只是一个辅助的检查手段,就像 Java 里的 @Overr ...
Python 实现动态的工厂模式
本文讨论的主要是,如何把工厂模式生产的产品,即抽象类的子类信息动态地保存到一个表中,而不是直接简单粗暴地使用 if-else 来判断。可能是 Java 给我的影响比较大,我还比较喜欢用抽象类抽象方法这些东西,至于好坏应该由实际情况来决定,这里就不详细展开讨论了。
那么本文所使用的示例来自于我一个分析 QQ 聊天记录文件的项目,因为它对于群聊的聊天记录和私聊的聊天记录格式不同,需要分别处理,所以就到 ...
Python itertools 简单介绍和运用例
最近写 Python 比较多,不可避免地要处理一堆可迭代对象,发现 Python 对于迭代器/生成器的支持相较于其它语言来说是更为丰富的,所以简单记录一下 itertools 这个内置包中几个常见的函数。
文末附一个实例,是一个关于扫雷的算法,用到了文中提到的一些函数。注意,我知道它们并不是真正的函数,而是以类的形式定义。为了方便起见,本文就把它们当成函数看代。
介绍
使用迭代器/生成器的好处是节 ...