Revival of My Blog

前言

拖延了很久,终于将我的旧博客重生了。因为答应一位好朋友要换友链。

最早是在 2021 年底用自己的旧 id 想出了一个 NesT 作为名字,和用的主题 NexT 很配。后来不知怎么就忘记了这玩意的存在,虽然一直没从 netlify 上撤下来。所以说还是要放在自己域名上,能记得清楚点

之前曾经大量持有 domain hack 的域名,但出于某些考虑,最终还是放弃了其他可能,继续持有现在这个。

然后看看我整了啥新活:

我不太喜欢 hexo 的那些 permalink 格式,要么丑陋要么不稳定,不像 hugo 可以自定义 slug, 只能通过 :title 曲线救国,不得不捏着鼻子把文件名改得六亲不认了,而且我想让文件名按创建时间严格升序,就不能随便用 hash 了,偏偏又不想用简单的序号。

想到使用文章创建时间的 unix 时间戳。可现在已经是 2024 年了,标准的 unix 时间戳是 int32 类型,到 2038 年就溢出了。ref: Y2K38

好在 Python 的 datetime.datetime.timestamp() 返回的是 float, 等价于一个 C++ 的 double, 范围大太多了,可以硬转成 int64.

然后写一个没有 padding 的 base32 用来转换。本来想用 base62 的,但是不太喜欢在这里看到大小写字母混在一起。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import datetime
import numpy

def iso8601_to_timestamp(iso_time):
dt = datetime.datetime.fromisoformat(iso_time)
timestamp = numpy.int64(dt.timestamp())
return timestamp

# Of course, for my usage, padding is not needed.
def base10_to_baseXX(num):
characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567"
# characters = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
base = len(characters)
if num == 0:
return characters[0]
baseXX_str = ""
while num:
num, rem = divmod(num, base)
baseXX_str = characters[rem] + baseXX_str

return baseXX_str

iso_time = input("Enter the ISO8601 formatted time string (e.g., 2024-03-24T12:34:56Z): \n")
# iso_time = "2121-12-03T16:23:38+08"
timestamp = iso8601_to_timestamp(iso_time)
baseXX = base10_to_baseXX(timestamp)

print("Timestamp:", timestamp)
print("BaseXX representation:", baseXX)

试了一下有生之年应该都在7个字符,而且怎么看起来很无线电呼号(虽然不一定是真的呼号)

hexo 文章 front-matter 的那个日期格式也勉强算符合 ISO 8601 的,粘贴进这个程序会自动识别成所在时区的时间。