Prose_博客日志

原博客日志散记于Diary分类下各年日记中,考虑到博客日志有其历史意义,便集于一篇,按时间倒序排列。

2024.9.5 CDN替换

第一,轻微调整学术主页布局,压缩不必要边距。第二,CDN替换https://unpkg.comhttps://s4.zstatic.net,加快国内Waline响应速度。第三,弃用Baidu统计,加快页面加载速度。探索Umami统计未果。
对于第三点,先前依托Vercel搭建过Umami,但Vercel被屏蔽,此次尝试在Netlify搭建Umami,但无法连接Supabase数据库。本地DBeaver连接无异常,未继续追踪该问题。暂使用Sealos的Umami托管服务。同时关闭Umami统计localhost信息,在Safri的Console中存储storage信息。

1
localStorage.setItem('umami.disabled', 1);

下面是本次尝试记录。

Netlify不提供数据库,因此借助Supabase数据库,连接Netlify。搭建过程参考了如下资料。《umami官方手册》《How to run Umami Analytics + Supabase + Vercel for free》《Website Analytics with Umami, Netlify and a self-hosted database.》《Running on Supabase》。但上述资料已过时,目前的主要流程是先在本地拉取Umami,将schema.prisma置于根目录,删除.gitignore中忽略/prisma/、更改"@netlify/plugin-nextjs": “^5.7.0”。

1
2
3
4
5
6
7
git clone git@github.com:yanyuteng/Blog_Umami.git
cd Blog_Umami
mkdir -p prisma
cp db/postgresql/schema.prisma prisma/schema.prisma
git add prisma/schema.prisma
git commit -m "Add schema.prisma file to the prisma directory"
git push origin master

随后在Netlify建立Umami,在Supabase的Database Settings获取环境变量DATABASE_URL(结尾填写?sslmode=require&connect_timeout=60)、DIRECT_DATABASE_URL。在这个基础上,Netlify的build command修改如下。但仍无法与数据库连接。

1
npx prisma migrate deploy && yarn build-app

2024.6.7 宽表格横向滚动

修订/hexo-theme-next/source/css/_common/scaffolding/tables.styl文件,修改为如下。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/* 表格容器的样式,支持横向滚动 */
.table-container {
overflow: auto; /* 允许滚动 */
margin: 0 auto; /* 容器居中 */
}
/* 表格样式 */
table {
border-collapse: collapse; /* 使用单一线条的边框 */
border-spacing: 0; /* 无额外的单元格间距 */
font-size: $table-font-size; /* 字体大小,使用固定值或变量 */
width: 100%; /* 表格宽度占满容器 */
margin: 0 auto 20px; /* 水平居中,底部 20px 间距 */
overflow-x: auto; /* 横向滚动条 */
white-space: nowrap; /* 防止内容换行 */
}

2024.5.27 声音与tag体系

博客简介中加入俺的声音,以增强对话感。借助wavesurfer.js插件,这个插件可以将声音可视化,它的频谱图(Spectrogram)很酷!晚上玩了好一会插件。翌日晚,对tag进行梳理彻查,一级tag按互斥的book、paper、prose设计,tag数量小幅压缩且更具体系化。

2024.5.24 主页照片与博客字体

第一,重排版主页,且加入照片。第二,修订移动端自适应。第三,解决en目录下移动端menu多个Category被激活问题。第四,指定博客中、英文字体,中文字题里思源宋体仍缺乏美感,替换为朱雀仿宋,英文字体统一为Alegreya。
关于第三点,在主题js文件下声明真实路径。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// 查找路径函数
function normalizePath(path, removeIndex) {
// 路径规范化
if (removeIndex) {
path = path.replace(/index\.html$/, '');
}
return path.replace(/\/$/, ''); // 移除结尾斜杠
}
// mobile-nav-link
let mlinks = document.querySelectorAll(".mobile-nav-link");
let mrootRealPath = normalizePath(window.location.pathname, true);
for (let mlink of mlinks) {
let mlinkPath = mlink.getAttribute("href");
if (mlinkPath) {
let mlinkRealPath = normalizePath(mlinkPath, true);
if (mlinkRealPath === mrootRealPath) {
mlink.classList.add("mobile-active-link");
} else {
mlink.classList.remove("mobile-active-link");
}
}
}

关于第四点,按Next官网思路,配置如下文件。/source/css/_variables/base.styl的$font-family-chinese变量、/layout/partials/head/head.njk的font载入,仍加载分包后的本地字体,基本流程与五月八日一致。且鉴于朱雀仿宋字体稍小,调整/source/css/_variables/base.styl的$font-size-base变量。
另,排查警告信息,独立安装punycode,并修订根目录下/node_modules/markdown-it/lib/index.js,不再报警。

1
2
// (node:29049) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.
npm install punycode
1
2
3
4
5
// Update
// Old code
var punycode = require('punycode');
// New code
var punycode = require('punycode/');

2024.5.16 异步字体加载

第一,修订Next主题下/scripts/helpers/font.js文件。第二,统一阿里云oss图片存储的命名格式,如20240516_1_Name。第三,考虑国内访问,将博客评论系统Waline部署从Valine迁移至Netlify。

1
return fontFamilies ? `<link rel="stylesheet" href="${fontHost}/css?family=${fontFamilies}&display=swap&subset=latin,latin-ext" media="print" onload="this.onload=null; this.media='all'">` : '';

2024.5.8 简历页字体变更

对简历页的white主题进行了改造。第一改变重点字段、滚动条的颜色,关闭js动态效果,第二加入menu与正文的分割线,第三变更网站icon显示,第四中英文字体全局变更。对于第四点需要说明。
中文字题的变更有三个步骤,其一选择字体,我使用了中文网字计划 (Chinese Webfont Project) 开源的京华老宋体,这一字体的历史来自于1961年北京新华字模厂改刻的老筑地体61-1体,并使用cn-font-split字体分包器,对中文字体进行压缩、分割;其二在主题目录下source文件夹中创建font文件夹,将分割后字体文件放入;其三在layout/_partial/head.ejs中纳入字体库或在/source/css/_defined/common.styl纳入字体库,前者可使用html语句调用css,后者可使用css @font-face语句调用ttf等,二者择一,并变更source/css/_page/layout.styl、source/css/_page/media.styl、source/css/_page/post.styl中的相关字体配置。本地调用中文字体主要考虑到简历页的文字数量不多,没必要专门进行cdn加速,且已有的开源中文字体cdn多已失效。22/06/2024补记,中文字体更换为朱雀仿宋,与博客一致,并提高主页响应速度。
英文字体的变更则选择了谷歌开源字体Alegreya,并使用360 的75CDN静态资源库本地化 cdnjs 资源。对网页进行一次测速,中英文页面的全国各省平均响应均在1.5s左右,各地响应速度中山东移动可能慢至8s左右、吉林联通慢至13s左右。
此外,对博客Next主题进行了修订,主要是更换至Mist子主题,并将高亮颜色转为暗红、侧边栏底色转为纯白,去除博客title上下横线等。

2024.5.6 简历页双语

参考SaltyLeo’s Blog,对简历页的语言显示进行了优化。基本步骤如下:
第一,在根文件夹“Blog_CV”下新建文件夹“Blog_CV_En”,将“Blog_CV”中除“node_modules”文件夹外全部复制至“Blog_CV_En”,并再次npm install。第二,分别修订“Blog_CV/_config.yml”与“Blog_CV_En/_config.yml”中_config.yml,以及“/Blog_CV/themes/white/_config.yml”与“/Blog_CV_En/themes/white/_config.yml”。第三,在命令行中输入如下

1
2
cd ~/Blog_CV && hexo clean && hexo g && cd ~/Blog_CV/Blog_CV_En && hexo clean && hexo g && cd ~/Blog_CV && cp -r ~/Blog_CV/Blog_CV_En/public/. ~/Blog_CV/public/en/
hexo d -g

此外,由于双语后white主题出现了一些细微错误,对layout.styl与header.ejs文件分别进行修订,以使中英文界面保持一致。

2024.4.27 历史评论导入

来必力找回了2018年7月至2019年11月的几条评论,勾起了几年前的记忆,一些朋友亦久未联络了。我早期应该还用过多说、网易云等系统,但是当时没有及时记录插件更新情况,那些更早的评论也难以打捞了。

2024.4.18 萌备案与公式

将萌备案icon放入Next文件夹中的source/images/中后,在footer.njk中添加下面html代码。

1
2
3
4
5
6
7
8
<div style="display: flex; justify-content: center; width: 100%;">
<div class="2ICP-link" style="display: flex; align-items: center;">
<img style="height:16px; margin-right: 5px;" src="/images/icon120.png">
<a href="https://icp.gov.moe/?keyword=20240901" target="_blank">
萌ICP备20240901号
</a>
</div>
</div>

此外,发现部分文章的公式出现错误,按查阅,Next主题有两条前端渲染,(1)MathJax + hexo-renderer-pandoc;(2)KaTeX + hexo-renderer-markdown-it-plus/hexo-renderer-markdown-it + hexo-math;一条后端渲染,hexo-filter-mathjax + hexo-renderer-marked/hexo-renderer-pandoc。由于我的脚注使用了hexo-renderer-markdown-it,遂卸载并npm install hexo-renderer-markdown-it-plus —save,尔后在Next config中开启katex enable: true。

2024.4.16 子域名跳转与脚注功能

更新博客子域名。同时,因写作需要脚注,替换Hexo原生插件hexo-renderer-marked为hexo-renderer-markdown-it,并配置参数。

2024.4.15 新增博客圈链接

其一,开启代码块折叠,Next8.x版本可在_config.yml直接配置,不再需要自行设置。其二,修订Next模版的footer部分,增加各独立博客组织链接,修订njk如下。其三,升级Waline评论系统版本,并重置参数。

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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<div style="display: flex; justify-content: center; align-items: center; gap: 10px">
{%- if theme.footer.copyright !== false %}
<div class="copyright">
{%- set copyright_year = date(null, 'YYYY') %}
&copy; {% if theme.footer.since and theme.footer.since != copyright_year %}{{ theme.footer.since }} – {% endif %}
<span itemprop="copyrightYear">{{ copyright_year }}</span>
<span class="with-love">
<i class="{{ theme.footer.icon.name }}"></i>
</span>
{{ theme.footer.copyright or author }}
</div>
{%- endif %}

{%- if config.symbols_count_time.total_symbols or config.symbols_count_time.total_time %}
<div class="wordcount">
{%- if config.symbols_count_time.total_symbols %}
<span class="post-meta-item">
<span class="post-meta-item-icon">
<i class="fa fa-chart-line"></i>
</span>
{%- if theme.symbols_count_time.item_text_total %}
<span>{{ __('symbols_count_time.count_total') + __('symbol.colon') }}</span>
{%- endif %}
<span title="{{ __('symbols_count_time.count_total') }}">{{ symbolsCountTotal(site) }}</span>
</span>
{%- endif %}

{%- if config.symbols_count_time.total_time %}
<span class="post-meta-item">
<span class="post-meta-item-icon">
<i class="fa fa-coffee"></i>
</span>
{%- if theme.symbols_count_time.item_text_total %}
<span>{{ __('symbols_count_time.time_total') }} &asymp;</span>
{%- endif %}
<span title="{{ __('symbols_count_time.time_total') }}">{{ symbolsTimeTotal(site, config.symbols_count_time.awl, config.symbols_count_time.wpm, __('symbols_count_time.time_minutes')) }}</span>
</span>
{%- endif %}
</div>
{%- endif %}
</div>

{%- if theme.footer.FindBlog.enable %}
<div class="FindBlog-link" style="display: flex; justify-content: center; gap: 5px;">
<a href="https://www.travellings.cn/plain.html" target="_blank" rel="noopener" style="margin-right: 5px;">Travelling</a>
<a href="https://bf.zzxworld.com" target="_blank" rel="noopener" style="margin-right: 5px;">BlogFinder</a>
<a href="https://storeweb.cn/member" target="_blank" rel="noopener" style="margin-right: 5px;">StoreWeb</a>
<a href="https://www.foreverblog.cn/" target="_blank" rel="noopener">ForeverBlog</a> <!-- 最后一个链接不需要右边距 -->
</div>
{%- endif %}

2024.4.14 旅行地图与博客字体

十三日在about中更新静态旅行地图,基于R语言,使用了NOAA GLOBE Topography 1km DEM数据与民政部官网审图号1873号区县级地图。代码见Github
另,加载代码块的文章无法正常显示,查询后发现可能是Next主题的motion问题,故障原因待排查。
十四日排查发现,系偷懒没有核查_config.yml变动,hexo 7.1版本变动较大,尤其是代码块部分,按新版本订正后开启motion可正常显示,但是考虑加载速度,仍然关闭了该功能。同时,对博客字体设置为宋体,并替换谷歌源为烧饼博客的fonts.loli.net

2024.4.12 Hexo框架更新

更新电脑各应用。其一,检查了brew及各包控制(如nvm)版本,替换已失效阿里源为清华源,更新node版本。其二,检查Hexo框架1月份已迭代至7.1(原架构为5.4.2),并更新博客架构。其三,替换npm已失效的淘宝源,见《npm sill idealTree buildDeps问题》,并更新博客使用的各node.js插件版本

1
2
3
4
5
6
7
8
9
10
11
12
brew update && brew upgrade && brew cleanup
nvm install node
cd ~/Blog_Hexo
npm install npm@latest -g
npm i hexo-cli -g
npm update
npm install -g npm-check
npm-check
npm install -g npm-upgrade
npm-upgrade
npm update -g
npm update --save

2023.6.4 Category更新

对博客内容分类进行了重要更新。

2023.3.29 HTTP修订

按Netlify提醒,将所有md文件报错Insecure mixed content的http修订为https。

2023.3.1 Netlify镜像

将Github镜像至Netlify平台托管,并更新学术简历页。并将博客的统计链接至Google Analysis,搜索提交至Google Search与Bing Webmaster。因Next主题未更新,Google Analysis插件需在"~/Blog_Hexo/node_modules/hexo-theme-next/layout/_third-party/analytics/google-analytics.njk"增补。

1
2
3
4
5
6
7
8
9
{%- if not theme.google_analytics.only_pageview %}
<script async src="https://www.googletagmanager.com/gtag/js?id={{ theme.google_analytics.tracking_id }}"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', '{{ theme.google_analytics.tracking_id }}');
</script>
{%- endif %}

2023.2.28 Gitlab与Cloudflare未果

接昨日,按《安装 Gitlab-Runner》改用brew安装成功,并按《New runner has not been connected yet》提示成功连接。但始终pending,查询怀疑是brew安装原因,未继续追踪。

1
2
3
4
brew install gitlab-runner
brew services start gitlab-runner
gitlab-runner register
gitlab-runner verify

另改用Cloudflare尝试托管,按《使用Cloudflare Pages部署Hexo》,布署成功但始终error 522,未继续追踪。补记,属于延迟问题,翌日已更新

2023.2.27 检索速度优化

下午本想将cv与博客集成,使cv托管在Gitlab,按如下文章进行了尝试,但因目前Gitlab开启了信用卡验证,即弃。暂拟托管Gitee挂cv,亦发现实名制。(1)按《配置本地 GIT 同时使用多个账号》配置双git秘钥;(2)尔后按《在 GitHub Pages 上部署 Hexo》配置;(3)按《Hexo + GitLab搭建个人博客》尝试配置Gitlab runner未果。
另,将已有Github上的Hexo进行了升级,并按《Hexo集成Algolia实现搜索功能》,优化了博客检索速度。升级后大致看了一下新版本的功能,很多原本需要自行配置的已被集成进来。补记,Algolia高级检索仅针对技术博客,因申请被拒,转为本地化检索。

1
hexo algolia

2022.9.12 pdf插件失败日志

将hexo依赖的npm由版本7升至版本8,并加载pdf插件。按各平台方法仍无法显示,未进一步追踪。

1
2
npm install --save hexo-pdf
npm install -g npm@8.19.1

2021.10.7 地址迁移

原域名sociologist.cn到期后未续费,按2021.1.5日志:“按阿里云的邮件通知,‘sociologist.cn’的域名要到期了。我从一七年三月注册这一域名已有四年,今年不再续费了,原因有很多,如对自己能力的认识、博客的定位。或直接用’yanyuteng’作域名,再修正DNS等。” 晚,将github地址解析至’yanyuteng.cn’,域名注册商由阿里转为dnspod。

2021.8.12 Waline评论系统

《Waline官网配置》《Waline 评论系统的介绍与基础配置》《Hexo使用Waline评论系统》三篇文章,配置了waline评论系统,后发现《Hexo Next 主题使用 Waline 评论系统》一文更全面。关于Waline管理员账号忘记密码的bug问题,可以参考该“评论”,在Leancloud修改账户权限。
另根据《NexT主题用Leancloud统计文章阅读量》配置了阅读量统计,按《NexT主题个性化配置》配置了字数统计。此外,手动修改了Next主题的footer部分的显示。

2020.10.28 图床变更

七牛云存储的图片地址必须要求备案,因此挂了很久,晚上着手替换到了阿里云。此外,博客早前存在阿里云的图片名称并不规范,日后或也逐步规范起来。

2020.8.29 博客备份

考虑到github时快时慢,coding新pages分配的名字蹩脚,为方便自己平时查阅,在码云(gitee)上又备份了一次博客。博客托管在三个网站,也算当代版狡兔三窟。也是我太乏味了。

2020.7.14 加载提速

按Haiyuan的建议,博客访问速度常比较慢,我取消了live2d,并将js第三方库使用bootcss提供的cdn服务。由于托管在github,无法icp备案,也就没有办法全站cdn,仅在腾讯旗下知道创宇(原加速乐)使用了未备案免费cnd(实际未cdn),他名义上讲“较使用域名注册服务商提供的默认DNS解析服务解析速度平均提升2倍”。按站长工具的检测看有些许改善,或是深夜心理安慰。实际效果还是没有什么提速。

2020.7.12 检索问题

国光的这篇文章,解决了博客无法search的问题。

2020.5.20 域名定向问题

这几天sociologist的域名访问一直是404,考虑到coding的访问人数较少,把原先的境内外分流全部默认走github了。又想把域名绑回github,但一直提示我"the CNAME is already taken"。我查了一圈,在wangqy这里看到和我一个情况,他也没有找到合适的办法,最后是向Github Support求助。我写邮件过去,他们回复很快,如果不算时差,解决问题非常迅速。
另,hexo的tags有些404我一直没时间处理,这次查了一下,主要是大小写问题,很多人(大专栏xxpcb)都遇到过,按他们的方法顺利解决了。

2020.2.13 SSL证书

不知不觉博客用sociologist.cn这个域名已经三年了,今年是三月份就是第四年了。最近半年,我的内心转变其实很大,一度不想再用这个域名,一方面觉自己与学术理想已渐行渐远,另一方面,自己的能力或也不恰使用这一词标榜自己。但更改域名后相关配置也要重写一遍,人怕麻烦,也有顾念以前,就恬不知耻地继续用吧。
这次检查了一下,以往用新设备访问总显示不安全链接,就在阿里开了ssl个人证书。目前买域名用的阿里云、域名解析用的腾讯云(原dnspod)、网页托管用的微软(github)与腾讯(coding)、网页统计用的谷歌统计与百度统计。博客的维护其实也是互联网生态的一角吧。

2019.5.23 Echart插件

我今天下午在想如何将Echart和博客写作结合起来,通过KChen’s BlogECharts插件,本地显示成功。但问题在于,KChen的插件只能在option里定义data,如果data较大,或data是动态的,显示起来就比较麻烦。同时,加载Echart后,博客加载速度显著变慢,这里不再展示。因为我对JavaScript知之甚少,只能暂时搁置。

2018.12.3 分类变动

晚上将博客的分类全面改动了一下,明年拟专攻SNA方向。

2018.7.25 Hexo_url配置

  1. url sitemap索引:hexo高阶教程:想让你的博客被更多的人在搜索引擎中搜到吗?Hexo百度主动提交链接
  2. url英文翻译插件:hexo-translate-titleHexo,添加标题翻译插件
  3. 404 page:hexo 怎么创建404页面?

2017.11.27 更新node

晚上打算给博客加个新功能,看了一下本机node的版本还是6.2的,新node已经9.2了,不得不感叹一下cs的迭代真快,这也就是一年多的光景。

2017.4.13 IP分流提速

下午上完课按IP地址把访客国内外分流,关闭Google字体,博客的访问速度明显提升,还是挺开心的!

2017.3.5 地址迁移

无意间看到狗爹注册com域名降至7元,后发现杂七杂八加到一起还是要百十元,相比之下万网虽在国内,但价格的确公道一些。对于新域名本有两个打算,一是纪念孙本文先生的《社会学ABC》,起先的计划是注册sociologyabc,但sociologist似乎更好记一些,最终注册了后者。临熄灯前,博客已全面解析至 www.sociologist.cn 这是我的第一个独立域名,也是我自16年中旬于台湾交流期间搭建半独立博客后的一个进步。今夜非常开心!博客如我的子嗣,我看着它长大,以泪水与欢笑。

2017.2.24 地址迁移

Github的网页在凌晨突然登陆不进,便开始着手转移到Coding,大约两点转移好,转到国内Coding后想直接把一直没改的DNS解析一并改好,才发现freenom把DNSPOD、dnsever几个免费商全禁了,日后有时间再慢慢折腾。域名则从 www.yanyuteng.tk 转为了 www.sociology.ml ,为纪念专业Sociology与我近来的关注点Machine Learning。

2016.11.5 vendors目录访问失效

博客近来突然空白,不明原因,下午本打算看书,只好跑去查是什么原因,搞了半天没有反应。晚上吃完饭福至心灵查了一下,开发者iissnan在两天前写了答案。

“不清楚为什么 GitHub Pages 过滤掉了 source/vendors 目录的访问。可以手动将 source/vendors 目录修改成 source/lib (或者其他的名称,只是 lib 我测试了可以使用);同时,修改下主题配置文件_config.yml, 将 _internal: vendors 改成你所修改的名字,例如 _internal: lib。”

2016.6.13 删库新浪博客

新浪博客是我大一下學期伊始開的博客。斷斷續續寫了一年,旅台期間,漸而接觸獨立博客,遂萌生自立門戶的心思,個人博客業已搭建,新浪博客不再更新。博客終歸是屬於自己的精神世界,不為他人的寫作是快樂的,若有一二閒人與我有些共鳴,則是我的幸運。

2016.5.31 地址迁移

新浪博客訪問經常卡頓,文章陸續搬遷至github博客,但總是出錯,檢查了一晚上是因為某處少輸入一個空格,yml格式實在嚴格;另看了kael的pc端很棒,但移動端太丑,最終還是換了NexT。域名暂用 yanyuteng.tk

2015.3.6 开通新浪博客

前阵子室友说要写博客,恍惚记起我曾经也注册过一个博客。那时中考失利想寻人安慰,写了牢骚挂在网上,现在想来很有趣,起兴致又找到当时博客,虽早已忘记账号密码。十六岁刚上高中的记忆还很清晰,现在十八岁却已过了大半,大一秋季学期了。
虽是“少年不识愁滋味,为赋新词强说愁。” 但大抵这几年看了些书,对很多文章有所感触。夫子尝曰:“逝者如斯夫!不舍昼夜。”人生须臾,现在虽仍少年,但白驹一跃,再回首不知何岁月了。因而起心思,重开了新浪博客,打算做些记录,为与人分享我年少轻狂,也为老时能帮助回忆。所谓欲说还休,却道天凉好个秋。13:42 于哈尔滨。