之前尝试用 Hugo 来部署,发现 Hugo 不仅挺复杂,而且还有很多小问题,可能这就是速度带来的代价吧。但是其实我也不是写很多内容,所以 Jekyll 的速度应该是够用的。

Jekyll 支持在 markdown 内容里面用 Liquid template tags 来生成动态内容,比如根据 front matter 中的 tags,给每个 tag 生成 html div。如下 liquid 语法:

1
2
3
4
5
<div>
{% for tag in site.tags %}
<a style="background-color: blue;">#{{ tag[0] }}</a>
{% endfor %}
</div>

会根据 post markdown 文件中的 front matter 中定义的 tags:

1
2
3
---
tags: some tags here
---

生成相应的 html div:

1
2
3
4
5
6
7
8
9
<div class="post-tags">
<a href="/tags/life" class="tag-card">life</a>
<a href="/tags/update" class="tag-card">update</a>
<a href="/tags/learn" class="tag-card">learn</a>
<a href="/tags/important" class="tag-card">important</a>
<a href="/tags/jekyll" class="tag-card">jekyll</a>
<a href="/tags/hugo" class="tag-card">hugo</a>
<a href="/tags/static-site-generator" class="tag-card">static-site-generator</a>
</div>

不知道写啥,就写一个 Python 的二分搜索吧:

1
2
3
4
5
6
7
8
9
10
11
12
13
def bin_search(arr: list, target: Any) -> int:
'''
Return the smallest index such that when target is inserted at that index,
the array will remain sorted.
'''
lo, hi = 0, len(arr)
while lo < hi:
m = (lo + hi) // 2
if arr[m] < target:
lo = m + 1
else:
hi = m
return lo