惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Hugging Face - Blog
Hugging Face - Blog
Recent Announcements
Recent Announcements
V
Visual Studio Blog
博客园 - 叶小钗
H
Help Net Security
aimingoo的专栏
aimingoo的专栏
宝玉的分享
宝玉的分享
U
Unit 42
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
F
Fortinet All Blogs
V
V2EX
Stack Overflow Blog
Stack Overflow Blog
WordPress大学
WordPress大学
D
DataBreaches.Net
J
Java Code Geeks
H
Hackread – Cybersecurity News, Data Breaches, AI and More
A
About on SuperTechFans
酷 壳 – CoolShell
酷 壳 – CoolShell
量子位
C
Check Point Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
小众软件
小众软件
Microsoft Azure Blog
Microsoft Azure Blog
M
MIT News - Artificial intelligence

方永、南天紫雲

linux透明代理 技术的边界 停机问题通俗说明 Rust与oracle、redis集群的纠结 学习能力的增长 微信调试的原语 mac外接移动硬盘安装ArchLinux linux的死机问题 linux下全键盘操作 漂亮又好用的bspwm linux本机透明代理 ssh、mosh、autossh linux不能待机又一例 从WordPress切换到Hugo 折腾电脑开机 linux系统QQ新思路 Arch Linux的字体渲染 svn管理之submin OpenWrt自动fucking墙記錄 二维码(qrcode)名片的一些事儿 用lua nginx module搭建一个二维码(qr code)生成器 CentOS 7 安裝註記 php程序連接MySQL时只能127.0.0.1而localhost無法連接的問題 ThinkPad之FAN_ERROR、hi fi聲卡 jetty多端口部署 OpenWrt簡單暴力限網 linux中cron之PATH变量 OpenWrt的WDS無線橋接模式 再敘OpenWrt下的rtl8187無線中繼 sed之模擬tail
从Hugo迁移到Zola
zola · 2020-04-09 · via 方永、南天紫雲

花费近一个工作日的时间, Hugo迁移到了Zola, 麻烦在于path的修正、分页、单页,以下是一个简单的做迁移时的脚本:

import sys
import os
import re
from datetime import datetime


for dirname, _, filenames in os.walk(sys.argv[1]):
    for filename in filenames:
        filename = os.path.join(dirname, filename)
        block_sp = False
        title = None
        date_str = ''
        date  = None
        remain = ''
        with open(filename) as f:
            for i, l in enumerate(f.readlines()):
                if l == "+++\n":
                    if block_sp:
                        block_sp = False
                    else:
                        block_sp = True
                else:
                    if block_sp:
                        x = re.findall('title = "(.+)"', l)
                        if len(x) > 0:
                            title = x[0]
                        x = re.findall('date = "(.+)"', l)
                        if len(x) > 0:
                            date_str = x[0]
                            date = datetime.strptime(x[0], "%Y-%m-%dT%H:%M:%S+08:00")
                    else:
                        remain = remain + re.sub("{{<.*highlight.*>}}", "```", l).replace("<!--more-->", "<!-- more -->")

        if not date:
            continue
        path = date.strftime("%Y/%m/%d/") + title
        all = '+++\ntitle = "{}"\npath = "{}"\ndate = {}\n+++\n\n'.format(title, path, date_str) + remain
        with open(filename, 'w') as f:
            f.write(all)

使用的感受来说,Zola的设计相比Hugo更精细,结构更清晰,模板引擎Tera用起来更舒适,但也存在一些需要优化的细节, 看看Issues就知道很多功能值得期待。

WordPress迁移到Hugo, Hugo已用近5年,到现在,Hugo的功能已非常完善,使用者众多, 社区也不断壮大,在静态网站生成器排名中也名列前茅。Netlify提到JAMstack的概念,从十来年互联网的技术发展来说, 由静到动再到静,可以说是否定之否定。这其实是一种理念,比如说CMS,建站系统,如何应用JAMstack