Sorry, your browser cannot access this site
This page requires browser support (enable) JavaScript
Learn more >

前言

大概是四年以前,我开通了我的博客园账号。

博客是一个很原始的互联网形式。我并没有使用其社区功能,只是当做一个跨平台电子笔记本来用。如果写的文章能给别人帮助的话,那就再好不过了。

我的第一个博客文章标题是《快速幂》。当时我才初学信息竞赛,根本没有完全理解快速幂的原理,也不知道矩阵是什么。然而,我还是从晚上别人的博客里抄来了快速幂的公式,甚至包括矩阵快速幂,复述了一遍,通过这个过程进行学习。当时我甚至不会用 Markdown,就使用博客园默认的 TinyMCE 编辑器一个个手动点击来输入上标下标。

那篇博客的最后一句话是“大家一起进步吧XD”。我想起我当时是作为一个博主的身份,以自己的文章会被很多人看到的心态写下这篇博客。内容写得十分努力,然而也漏洞百出。在 NOI 结束之后,我把这篇文章错误的地方都删掉了,以免误人子弟。

从 2020 年 5 月 5 日,停课搞竞赛开始,我写了近有 150 多篇文章,总计 34500 多阅读量。很多之前的文章在不经意间已经有几百的阅读量了,有一篇题为《高斯消元——行列式》的文章甚至达到了 2600+。然而其内容却非常敷衍,透露出一股刚学竞赛的愚蠢。我不止一次地想把这些早年文章修改整理一下,学竞赛的时候,竞赛结束的时候,高考后的假期。然而,我始终没有动手。

总是发现,学做一些事情,就像小时候牙牙学语,并不总是按部就班,而是整个人倏地置身其中,任由自己不知所措、摸爬滚打地成长。学习竞赛就是一个很好的例子。我抄过很多题解,抄过很多代码,在那许多不在教室而在机房度过的日夜里死磕看不懂的题目,在无数坐牢般的比赛中用自己的想法得到尽可能高的分数。我急着摆脱前一天差劲的自己,尽可能多地去学习新的东西,去刷更多的题,让自己 OJ 的过题数飞涨。然而,在每场模拟赛和正式比赛后,我却没有踏踏实实地去补题,去反思,去总结。我总是记不住上次比赛的题目,甚至到现在都不知道高考那些题做错了。这样的学习方式可能对我这种只有一年时间的竞赛生收益很快,但上限不高。也许,这就是我差别人的地方。博客园的样子就是很好的反映。

我从来没有记日记的习惯,也并不喜欢整理笔记,尤其是在学期已经结束、再也不会上这门课之后。但是现在我发现,竞赛带给我的感觉却很不一样。不只是因为上大学后开始打 ACM,而且我发现之前在高中学到的很多东西,在很多不经意的时刻会再次出现。大学后的每一门新的课程,都让我重新审视之前学过的知识。诸如微积分、线性代数、概率论、数论等等,我都有了新的认识。每每在课堂上学到、在题目中用到它们,我都会想到我在很久以前,又或许是不久之前,在电脑前一点点敲下关于它们的不求甚解的文章,抄背没有完全理解的模板。

因此,在这次暑假的时间里,我下定决心建一个全新的博客,好好装扮它,作为我的心灵庇护所。我想把之前欠的账尽可能还上,不再被回旋镖打到。之前,我总想着快速地把上一秒的自己甩到身后,仿佛那是一个拖累我的“别人”。但现在我发现,每段时间的我都确实是我,无论他叫 Star_Cried 还是微光。他们都没有在拖累我,正是他们一步步推动着我成为现在的自己。

成长的路程总是有舍有得。Github 相较于博客园,更难被搜索到,更难以访问,而且我会失去之前的阅读量。不过我建立博客最初的目的,也只是为自己而写而已。这次的迁移,我不想它作为一个新的开始,而是将我之前所有的一切都搬过来,擦拭干净,摆放整齐。

欢迎访问:Star_Cried 的博客园。(不再维护,仅留档)

博客迁移

下载博客

我觉得各大博客网站为了自己的用户量都不会去给迁移出去的方式。博客园也是如此。如果你的博文不多,那你大可以手动复制;但是我的文章有 200 篇左右,手动复制实在是累人。

网上有很多迁移的办法,大多数都是个人写的小工具。我试了很多,最终使用这个 cnblogs-blogger-downloader 将文章成功导出,效果不错。其它工具由于博客园版本更新频繁的原因,大多数已经不再适用了。我用的工具在发布日期仍可用。

网上的迁移方法大致分为几种:

  1. 网页爬虫。这种访客形式的爬虫工具无法访问文章源码,只能获取到文章的 HTML 页面,无法获取到文章的 Markdown 格式。
  2. 博客园导出工具。博客园可以备份文章为 xml 文件,许多工具对该文件进行解析,可以获取到文章的 Markdown 格式。然而,我试用了许多工具,最晚到 2022 年,这些工具都已无法使用。对照 xml 文件发现,现在的文件格式和之前有较大出入,代码字符串匹配的方式无法识别。
  3. MetaWeblog。cnblogs-click-backup-util 利用多博客同步的 API 接口的工具,理论上可行。但我不知为何在验证部分失败了。(在我发帖询问后作者及时更新并回复我问题为用户名和博客地址不同,没有继续尝试)
  4. 博主端爬虫。cnblogs-blogger-downloader,感谢这位作者的开源。该工具利用 Cookie 访问博客园后台,将文章按分类导出,直接导出源码。非 Markdown 文章会导出 html 格式,Markdown 理论上可以解析。

导入博客

将 Markdown 文件放在一个目录下,用脚本添加 Hexo 的 Front-Matter 头信息,再放入 Hexo 的 _posts 文件夹即可。

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
30
31
32
33
34
35
36
import os

# 定义要添加的前缀模板
prefix_template = """---
title: {title}
categories: [OI]
date: 2022-04-30 00:00:00
tags: [博客园]
---

"""

# 定义目标文件夹
folder_path = './cnblog/ALL'

# 遍历文件夹中的所有文件
for filename in os.listdir(folder_path):
if filename.endswith('.md'):
file_path = os.path.join(folder_path, filename)
with open(file_path, 'r', encoding='utf-8') as file:
content = file.read()

# 获取文件名(不包括扩展名)
title = os.path.splitext(filename)[0]

# 生成带有文件名的前缀
prefix = prefix_template.format(title=title)

# 添加前缀
new_content = prefix + content

# 写回文件
with open(file_path, 'w', encoding='utf-8') as file:
file.write(new_content)

print("前缀已成功添加到所有.md文件中。")

手动修改

刚才的下载和导入过程没有给博客自动添加头信息,如日期、分类和标签等。需要手动修改。在此过程中顺手对文章进行了删改整理。(这其实是最耗时的步骤)

  • 非 Markdown 格式的文章,由于其基本都是早期文章,内容不精,进行删改转换格式。
  • 对不精良的博客进行删除和重写。
  • 对大多数文章进行了格式调整。有空修改内容。
  • 图片引用原地址,等挂了再修改。
  • 所有导入文章添加了博客园的 tag,方便分类。
  • 所有 OI 竞赛算法题目相关的日期默认为 2022-04-30,日记日期为博客园发布日期。

至此,博客园的文章全部迁移到 Github Pages 完成。

给小狼留言