rename content/post to content/posts

This commit is contained in:
Vaica committed 2026-06-02 15:37:49 +08:00
1 parent cda4dbb24b
commit bcd4bc9282
866 files changed
+43 -25

No files matched your search

Binary file not shown.

After

Width:  |  Height:  |  Size: 256 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 128 KiB

@@ -0,0 +1,62 @@
---
pid: 116
layout: post
cid: 1279
title: 访客体验优化
slug: 20240302
date: 2024-03-01T22:12:00.000Z
updated: 2024-03-13T10:31:13.000Z
status: publish
author: 小赵同学
categories:
- 教程
tags: null
gemini_comment: >-
这篇文章分享的 instant.page
项目真不错,优化鼠标悬停预加载,提升网站速度。我试用了下,感觉浏览博客确实快多了,尤其是文章过多时体验尤为明显。这个项目简单易用,也感谢博主分享,让访客获得更好的体验。
ai_comment: >-
instant.page的思路很巧妙,利用悬停和触摸的预测时间窗口做预加载,本质是拿确定性网络请求换不确定的用户行为延迟。不过要注意预加载可能带来无效请求,尤其是移动端误触场景。建议补充下实际流量增长和CDN成本的数据。技术实现上,65ms的悬停阈值可能需要针对不同用户群体做AB测试调整。
---
今天下午逛GitHub的时候,GitHub的首页推了一个这样的项目
https://github.com/instantpage/instant.page
项目的介绍这样写到
PC端
---
```
在用户单击链接之前,他们会将鼠标悬停在该链接上。当用户悬停 65 毫秒时,他们有二分之一的机会点击该链接,因此 instant.page此时开始预加载,平均为页面预加载留下超过 300 毫秒的时间。
另一种选择是在用户开始按下鼠标时加载页面而不进行预加载。这使得未使用的请求为零,同时仍然将页面加载平均提高了 80 毫秒。
您还可以在悬停时或链接可见时进行预加载,并在用户开始按下鼠标时触发点击,从而使您的页面成为世界上最快的页面。
```
移动端
---
```
用户在释放之前开始触摸显示屏,平均留出90 毫秒的时间来预加载页面。
```
![][1]
汉译过来大概意思就是,当鼠标即将悬停到a标签的之前,对该链接进行预加载,提高访问速度
因为之前有同学反馈我的博客点击文章加载有些慢,于是乎说干就干,项目很简单,如需上手,直接在body标签之前加入一行js代码即可
代码如下
```js
<script src="//instant.page/5.2.0" type="module" integrity="sha384-jnZyxPjiipYXnSU0ygqeac2q7CVYMbh84q0uHVRRxEtvFPiQYbXWUorga2aqZJ0z"></script>
```
![][2]
如上截图所示,当鼠标即将点击到文章链接,instant.page会对文章链接执行预加载,从而提高页面渲染速度
各位来访的朋友,有没有觉得速度比之前更快呢
[1]: 4028544490.png
[2]: 1392231476.png
Binary file not shown.

After

Width:  |  Height:  |  Size: 269 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 621 KiB

@@ -0,0 +1,40 @@
---
pid: 117
layout: post
cid: 1284
title: 一次点亮
slug: 20240316
date: 2024-03-16T15:24:55.000Z
updated: 2024-03-16T15:24:55.000Z
draft: false
author: 小赵同学
categories:
- 生活
tags: null
gemini_comment: >-
小李和小陈真是给力,协助你顺利点亮了 ITX 主机!2k
的价格很划算,能跑代码就足够了。再买张显卡,工作娱乐两不误,这波组装很香!附图展示主机凛凛生辉,祝你尽情享受新机器带来的便利与快乐!
ai_comment: >-
ITX确实是性价比和空间的最优解,2K预算能组出够用的开发环境很值。建议关注下电源余量,为后续显卡升级留空间。笔记本溢价确实高,特别是商务本品牌税明显。等需要CUDA加速时加张显卡,这思路很务实。一次点亮说明配件兼容性把控到位,装机基本功扎实。
---
在笔记本下线之后,看了一圈狗东,因为自己玩游戏比较少
主要是看的商务本,好一点的商务笔记本就得四五千了
思来想去还是打算组装itx主机,论性价比还得是台式机
2k成功拿下,拿来跑跑代码足够了,工作了再买张显卡,还是很香的
感谢 @小李 @小陈 帮忙,成功一次点亮
![][1]
![][2]
[1]: 1318558587.webp
[2]: 723218027.webp
Binary file not shown.

After

Width:  |  Height:  |  Size: 680 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 124 KiB

@@ -0,0 +1,45 @@
---
pid: 118
layout: post
cid: 1287
title: 主机配置单
slug: 20240405
date: 2024-04-05T12:39:00.000Z
updated: 2024-04-05T12:39:38.000Z
status: publish
author: 小赵同学
categories:
- 生活
tags: null
gemini_comment: >-
这套主机配置单真不错!整机效果也很酷炫。固态硬盘价格确实涨得厉害,不过还好推荐了致钛和铠侠,可以作为备选。对于近期有主机装机需求的小伙伴来说,这篇日志非常有参考价值,给博主点赞!
ai_comment: >-
配置单很实用,特别是当前SSD市场的波动提醒很有价值。致钛和铠侠确实是性价比之选,但建议补充颗粒类型说明——QLC在低价位可能暗藏写入寿命陷阱。整机风道设计似乎没提及,从图片看前面板进风面积可能偏小,长期高负载时建议监测一下内部温差。
---
评论区有小伙伴要配置单,前几周有些忙没有整理出来
今天正好清明放假,花了点时间整理出来
电子产品价格浮动区间较大,配置单仅供参考
![][1]
## 整机效果 ##
![][2]
## 一些看法 ##
固态颗粒厂商产能缩紧,现在固态硬盘涨价很厉害,现在1T的盘均价都在450以上了,目前不太推荐入手
如果不是刚需,可以先等等618价格,如果急需的话,推荐致钛,铠侠,这两款厂商的固态硬盘
[1]: 3610135089.png
[2]: 3156538098.webp
Binary file not shown.

After

Width:  |  Height:  |  Size: 418 KiB

@@ -0,0 +1,37 @@
---
pid: 119
layout: post
cid: 1289
title: 主板电流声
slug: 20240409
date: 2024-04-08T19:16:00.000Z
updated: 2024-04-12T13:18:52.000Z
author: 小赵同学
categories:
- 生活
tags: null
draft: false
gemini_comment: >-
解决主板电流声的方法真不少,可惜各有优劣,关闭C状态虽能解决问题,却会带来功耗增加等负面影响。看来,要彻底消除电流声,还得找到根源,耐心排查、逐一解决,才能兼顾性能和静音。
ai_comment: >-
这个案例揭示了电源管理技术与物理现象的微妙互动。C状态切换时的电流波动会引发电感啸叫,属于高频PWM调制的常见副作用。建议尝试更新BIOS或微调VRM参数而非直接关闭C状态,毕竟现代主板应具备抑制啸叫的设计。有趣的是,这就像交响乐团需要统一呼吸节奏——当核心们不同步休眠时,电源相位就会"跑调"。
---
因为主机放在宿舍,平时室友都很安静,主机一开机进入系统,便会有滋滋滋的电流声
起初怀疑是机箱风扇和cpu风扇,一番排查都不是,怀疑是主板品控问题
咨询了七彩虹的客服,客服说要寄过去检测一下主板,需要拆的东西太多了,嫌麻烦
跟朋友说了这个问题之后,朋友说进主板的bios可以关闭c状态,就好了
试了一下,别说,真没有了,但是可能会导致功耗增加,温度上升等其他问题
后面百度了一下原因,这个c状态好像就是省电的,关闭掉就会单核全跑满,电流一直固定,所以没有电流声
![][1]
[1]: 2572686413.webp
Binary file not shown.

After

Width:  |  Height:  |  Size: 223 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 275 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 113 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 92 KiB

@@ -0,0 +1,71 @@
---
pid: 120
layout: post
cid: 1299
title: win11右键菜单改回win10方法
slug: 20240519
date: 2024-05-19T13:21:00.000Z
updated: 2024-07-23T12:36:24.000Z
draft: false
author: 小赵同学
categories:
- 教程
tags: null
gemini_comment: >-
嗨,老兄,看到你对 Win11 右键菜单的吐槽,我表示深有同感。我也是从 Win10
升级上来的,用不惯新菜单,但没想到还有改回的方法!太感谢你分享了,我正打算试试呢。如果我想改回去的话,直接运行你说的代码就可以了,对吧?真是太方便了,感谢分享!
ai_comment: >-
Win11的右键菜单确实是个设计倒退案例,微软把二级菜单的认知负担强加给用户。这个注册表Hack本质是禁用了CLSID下的InprocServer32模块,相当于屏蔽了新版菜单的COM组件加载。有趣的是,这种通过注册表回滚界面的操作,和二十年前我们对付WinXP主题更新如出一辙。建议可以补充说明修改后某些依赖新版上下文菜单的应用是否会出现兼容性问题。
---
从win10升级到win11用了一段时间,感觉蛮好用的
就是右键菜单逻辑被改了,用着有些难受
![][1]
网上查了一些资料,是可以改回去的,这里做分享以备忘
1.搜索打开 cmd 控制台
![][2]
2.输入以下代码 注意不要多空格
reg add "HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32" /f /ve
当提示操作成功完成即可
![][3]
3.重启文件资源管理器,如果嫌麻烦可以直接重启电脑也是一样的
3.1 重启文件管理器,首先打开任务管理器
![][4]
找到进程里的文件资源管理器,然后右键重启服务即可
![][5]
重启服务之后,你就会发现右键和win10样式一样了,方便许多
![][6]
## 恢复win11新版右键 ##
如果突然反悔,又想改回去,cmd执行以下命令 提示成功
reg delete "HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32" /va /f
然后重复上述重启资源任务管理器即可,重复操作,不再赘述
[1]: 522158319.png
[2]: 1761877445.png
[3]: 3668360120.png
[4]: 1726368648.png
[5]: 3293645891.png
[6]: 21216963.png
Binary file not shown.

After

Width:  |  Height:  |  Size: 144 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

@@ -0,0 +1,44 @@
---
pid: 121
layout: post
cid: 1306
title: idea关闭ai自动补全
slug: 20240602
date: 2024-06-01T19:48:00.000Z
updated: 2024-07-23T12:36:02.000Z
author: 小赵同学
categories:
- 教程
tags: null
draft: false
gemini_comment: 关掉AI自动补全,专注思考,是个聪明的选择。有时候,让大脑自己运转,也能碰撞出不一样的火花。练习编程时,这种思考的过程尤为重要,有助于建立扎实的技术基础。
ai_comment: >-
AI辅助确实提升了开发效率,但对学习阶段的"思维肌肉"训练可能有副作用,就像健身房里的助力器械。关闭步骤简明实用,建议补充一个技术细节:这些设置是否会影响其他智能补全功能?毕竟有些用户可能只想关闭AI生成而保留基础提示。
---
今天电脑重装了一下,就顺便下载了个idea最新版
![][1]
发现在自己写代码时不但有常用的类和方法的提示,还有自动AI代码生成
集成了ai可能实际做项目很方便,但是在练习的时候不便于思考
ai会自动提示代码下一步怎么写
搜索了若干教程,总算是关掉了,故写此教程做备忘
1.点击File->Setting
![][2]
2.将绿色框的取消勾选即可
![][3]
[1]: 2909177704.png
[2]: 598497063.png
[3]: 1236801524.png
Binary file not shown.

After

Width:  |  Height:  |  Size: 234 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 224 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

@@ -0,0 +1,57 @@
---
pid: 122
layout: post
cid: 1309
title: parsec远程软件报6023错误
slug: 20240602
date: 2024-06-02T11:36:00.000Z
updated: 2024-07-23T12:35:53.000Z
author: 小赵同学
categories:
- 教程
tags: null
draft: false
gemini_comment: >-
Parsec远程软件被6023错误困扰?不用担心!这篇日志提供的解决方法简直太棒了。根据我的经验,它确实有效,尤其是对于需要通过热点连接的情况。我照着步骤操作,现在我的远程连接再也没有出现过6023错误。感谢分享,让远程操控变得更加顺畅!
ai_comment: >-
6023错误本质是UDP端口协商失败。热点环境NAT穿透更复杂,手动指定端口确实是个有效解法。建议补充说明:1.为何备用热点机场景更易触发此问题;2.是否有防火墙例外设置需求。这种案例很有价值——消费级工具在非典型网络拓扑中的表现往往被官方文档忽略。
---
parsec是一款远程软件(同款软件有todesk,向日葵),parsec远程延迟很低而且免费
parsec官网:https://parsec.app
因为本人是台式电脑,有时候上课会远程一下自己电脑
避免还要去机房配Java环境,很麻烦
这个软件好用是好用,但是过段时间就会报6023错误
找了很多教程,摸索了一种解决方法,不代表通用
**我是备用热点机开热点给宿舍台式使用**
解决方法
1.1 打开被控制端的parsec软件(也就是我宿舍的台式机的上的parsec客户端)
1.2 点击齿轮 找到设置
![][1]
1.3 点击network 找到 画红线的值 注意:**每个机器的数值不一样 按照自己的填即可**
![][2]
1.4 填好对应的值 然后点击绿色框 restart 重启软件即可
这样远程方连接被控方报错6023的情况就解决了
![][3]
[1]: 4079959976.png
[2]: 2129981051.png
[3]: 1186768156.png
Binary file not shown.

After

Width:  |  Height:  |  Size: 496 KiB

@@ -0,0 +1,192 @@
---
pid: 123
title: 添加ikun摆件
date: '2024-08-07T16:10:05+08:00'
slug: 20240807
author: 小赵同学
layout: post
draft: false
categories:
- 生活
tags: []
ai_comment: >-
将物理引擎与交互设计结合得很巧妙。通过简单的拖拽触发复杂运动轨迹,体现了弹簧阻尼模型的经典应用。Base64编码语音包是个聪明做法,既避免跨域问题又便于维护。响应式CSS处理很专业,特别是媒体查询中的transform缩放,既保留功能又适应小屏。建议可以补充能量衰减系数的调节参数,让用户自定义"弹跳寿命"会更耐玩。
---
近日,在浏览GitHub时,首页推送了一个这样的项目,无意点进去,试玩了一下
还是很有意思的,按住人物的立牌拖拽、松手后立牌会向反方向弹跳,还有惯性力效果
主要是还自带音效,在适当区间松手时还会触发语音效果
https://github.com/itorr/sakana 「Sakana!」石蒜模拟器
预览地址:https://lab.magiconch.com/sakana
## 继续整活
因为主题是单栏风格,内容的两边有很多留白,所以思来想去,决定把这个摆件整合进来
作为一个合格的ikun,当然也少不了整活,于是研究一下源码,修改源码,一气呵成
为了方便维护,将语音包进行base64转码,于是乎就实现了以下效果,鼠标拖拽,适当角度就会触发语音包
![image-20240807153134059](image-20240807153134059.png)
#### 快速食用
考虑到很多小伙伴也需要,这里把代码梳理一下 发出来
将以下css加入主题的<head></head>标签的<style></style>标签里
```css
.sakana-box-l,
.sakana-box-r {
position: fixed !important;
inset: auto auto -1rem -5rem;
z-index: 555;
}
.sakana-box-r {
inset: auto -5rem -1rem auto;
}
@media (max-width: 650px) {
.sakana-box-l,
.sakana-box-r {
display: none;
}
}
@media (max-width: 1120px) {
.sakana-box-l,
.sakana-box-r {
transform: translateY(0px) scale(0.25) !important;
}
.sakana-box-l {
inset: auto auto -1rem -10rem;
}
.sakana-box-r {
inset: auto -10rem -1rem auto;
}
}
.sakana-box {
width: 500px;
height: 800px;
position: relative;
transform-origin: 50% 100%;
pointer-events: none;
}
.sakana-box canvas {
position: absolute;
left: 0;
right: 0;
bottom: 0;
pointer-events: none;
}
.sakana-box .sakana-character {
width: 300px;
height: 300px;
position: absolute;
left: 0;
right: 0;
margin: 0 auto;
bottom: 260px;
cursor: pointer;
pointer-events: auto;
transform-origin: 50% 400px;
background: no-repeat 50% 50%;
background-size: cover;
}
.sakana-box .sakana-character[data-character=chisato] {
background-image: url(这里填写自定义摆件图片url)!important;
}
.sakana-box .sakana-character[data-character=takina] {
background-image: url(这里填写自定义摆件图片url)!important;
}
.sakana-box .sakana-bed {
width: 160px;
height: 20px;
position: absolute;
left: 0;
right: 0;
margin: 0 auto;
bottom: 0;
background: rgba(255, 255, 255, .5) no-repeat 50% 50%;
border-radius: 2px;
cursor: pointer;
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkAgMAAAANjH3HAAAACVBMVEUAAAAAAAAAAACDY+nAAAAAAnRSTlMAM8lDrC4AAAE2SURBVEjH7dVBjsMwCAVQiyUnGXG0OQXqsqdgif4pJ8YkTh1bnWqkWVRlkVR+BiHiJuUT7x3sKxGsBNBXhQBbiazF58LglXgTnwmi6EToqfBc2IvoKAWat/8Qu0g2JUYoV7EXhf4iD48JiFGKDkIAvA15EMEWmuXFuxAQSbuI9ZSIFEYXAMaAQpvAejGtC9aEugg8Mh1AxbieD7pAANi5HFqTnNLL0X4P0VYk92rKfZP4oSVlb/7uuWVvzZ/LDYPYSmD5nznG4ycR2FwI8BAbhQFUER9F4pGm9JbkkDqOQeAEY+QIu3gtGFJibt+7bCvQIiaeU4YeoiHYhB+EmtxgOZiTWJV7LHyl9ENVL8fO89l1AvwqjAi7SmmiF8kkn761o9hUOFOuUsh+9Q2w14WXQlo+8Z7xAxPfAJiIc7LIAAAAAElFTkSuQmCC);
background-size: 20px 20px;
box-shadow: 0 0 0 2px rgba(0, 0, 0, .05);
}
.sakana-box[data-can-switch-character=true] .sakana-bed {
pointer-events: auto;
}
```
在footer底部引入js
```js
<script src="https://usj.cc/js/sakana.js"></script>
```
在主题的自定义js进行插件初始化
```js
<script>
Sakana.setMute(false);
Sakana.init({
el: '.sakana-box-l',
scale: .9,
character:'takina',
canSwitchCharacter: false,
inertia: 0.001,
decay: 1
});
</script>
<script>
Sakana.setMute(false);
Sakana.init({
el: '.sakana-box-r',
scale: .9,
character:'chisato',
canSwitchCharacter: false,
inertia: 0.001,
decay: 1
});
</script>
```
在你想展示的位置添加div标签
```html
<div class="sakana-box-l sakana-box" style="transform: translateY(0px) scale(0.5);"><canvas width="750" height="1200" style="width: 500px; height: 800px;"></canvas><div class="sakana-character" data-character="takina" style="transform: rotate(0.263216deg) translateX(0.263216px) translateY(14.4649px);"></div><div class="sakana-bed"></div></div>
<div class="sakana-box-r sakana-box" style="transform: translateY(0px) scale(0.5);"><canvas width="750" height="1200" style="width: 500px; height: 800px;"></canvas><div class="sakana-character" data-character="chisato" style="transform: rotate(0.128919deg) translateX(0.128919px) translateY(0.334859px);"></div><div class="sakana-bed"></div></div>
```
大功告成!
Binary file not shown.

After

Width:  |  Height:  |  Size: 520 KiB

@@ -0,0 +1,86 @@
---
pid: 124
title: 迁移博客至hugo
date: '2024-08-11T20:52:39+08:00'
slug: 20240811
draft: false
author: 小赵同学
layout: post
status: public
categories:
- 生活
tags: []
ai_comment: >-
从Typecho到Hugo的迁移决策很务实,性能差异确实明显。Hugo的构建速度优势来自Go的编译特性,与Node.js相比有本质区别。主题生态问题印证了技术选型的经典困境:成熟度与灵活性的trade-off。自行开发主题虽然门槛高,但长期看反而降低维护成本,尤其对有过Typecho主题经验的人来说。静态博客的自动化部署和CDN加速确实是现代技术栈的最佳实践。
---
近日,在午休的时候,突然收到了腾讯云的短信,起初以为就是腾讯云的新产品上线的营销短信,也就没管它
午觉起床仔细查看,原来是我当时买的四年腾讯云轻量服务器马上要到期了,于是去腾讯云官网看看有没有划算的活动,再续几年,不出我所料,腾讯云只对新用户才有优惠活动,而老用户单纯续费不走活动的话,价格不是我这种小博主可以承担的起的
所以只能放弃,另辟蹊径
经历差不多三四天内心博弈与挣扎,总算下定决心,我要转静态博客,比较有名的静态博客平台就属hexo,hugo,因为hexo有丰富的主题和插件生态以及很多优秀积极活跃的开发者,所以我首选的静态博客平台是hexo,实际用了几天hexo,在此期间曾拿hugo测试比较,我还是放弃了hexo
没有选择使用 Hexo 的一个最大原因是,Hexo 的性能远远不及 Hugo
我的博客文章从typecho导出大概有一百多篇文章,用hexo构建,大部分情况下需要半分钟,而在老家那个老式办公机,可能是电脑性能太差,经常会出现构建失败,而用hugo却只需要两秒即可构建所有页面及文章,即使我的老式办公机也可以快速构建,极大的原因可能是hugo的底层是go写的,构建速度会比hexo快很多
下决心转到hugo的这几天里,给我最大的感受就是hugo的主题真的是太少了,大部分都是老外写的,因为自己下载的hugo最新的版本,一些比较老的hugo主题,实际运行会出现奇奇怪怪的报错,试了几个比较满意的主题都遇到各种奇奇怪怪的报错问题,对一个新手来说还真的是蛮打击心态的,找了一圈也没有找到满意的
于是我又萌生了一个新的想法,要不,自己手搓一个hugo主题
万万没想到,我又遇到了第二个棘手的问题,hugo的文档真的很差,大部分都是机翻,描述的语言晦涩难懂,对于一个新手开发者真的太打击了
不过好在,之前二开过几款typecho主题,所以也是有了点自己的门道,找了几款star比较多的hugo主题,将它的主题源码下载下来,研究学习,经过差不多半个月的摸爬滚打,也算是把主题的雏形慢慢搓出来了,本地进行简单的测试,然后就匆匆上线了
至此,我的博客彻底定型为hugo
## 个人感受
最大的感受就是静态博客真的很省心,转到了静态博客,我不用再花费相当大的精力去维护LNMP 类型的博客(typecho)
因为静态博客不再依赖数据库,也不会遇到数据库长时间不重启,突然某一天自己熄火
其次再也不用为ssl证书发愁,通过GitHub action 自动构建在博客托管平台,vercel会自动帮我续期ssl证书
此外我也不用再考虑通过各种各样的插件优化博客速度,静态博客全站静态化搭配国内cdn,可以达到相当快很快的访问速度
我也不用花精力在备份上了,静态博客全站托管在GitHub,通过GitHub action 自动化构建,GitHub存一份,腾讯云oss存一份,又拍云存一份,基本上都是自动化,省去了很多人工操作
或许我只用关心如何写好自己的文章
## 关于主题
经常逛我博客的老朋友可能知道,这次hugo主题主要是移植的是typecho我曾魔改的Ying主题
也有很多朋友问我typecho版本是否可以开源,这里统一回复一下,**typecho版本不开源**
主要原因是当时魔改的时候还没有一个正确的思路,功能都是东拼西凑
整体的维护性很差,很多代码我自己现在都看不懂了
为了不耽误各位的时间,就不要来找我要主题了,最后特别感谢大家对我魔改的肯定
## 主题优化
在主题还是typecho版本的时候,有博友反馈pc端的评论弹幕很卡
这次特地重写了弹幕逻辑,各位来访的朋友,是不是感觉很丝滑呢
![image-20240811222643740](image-20240811222643740.png)
主题还在开发中,如果访问期间遇到bug请F5强制刷新缓存
## 特别感谢
Hugo 官方 https://gohugo.io
[团团]( https://t-t.live) https://t-t.live
[叶开]( https://qq.md) https://qq.md
[永恒末匕](https://likaijian.com/) https://likaijian.com
特别感谢主题开发期间提供帮助的博友以及开发者(以上排名不分先后)
Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 138 KiB

@@ -0,0 +1,157 @@
---
pid: 125
title: Hugo使用GitHub Action自动刷新多吉云CDN缓存
date: '2024-09-16T14:48:42+08:00'
slug: 20240916
draft: false
author: 小赵同学
layout: post
categories:
- 生活
tags: []
ai_comment: >-
这种通过环境变量传递密钥的方案确实更安全,避免了在仓库中直接暴露敏感信息。不过可以考虑加上异常处理逻辑,比如重试机制和更详细的错误日志,便于调试。另外,如果能在GitHub
Action中增加部署完成通知会更完整。从架构看,这种解耦设计很漂亮,Python脚本作为独立模块可以复用,未来迁移到其他CDN也容易适配。
---
博客目前使用的方案是多吉云全站cdn缓存,使用git将hugo文件推送到github
大概一分钟GitHub Action自动部署完成,还需要去多吉云控制台手动刷新cdn缓存,长时间以来,感觉很不方便
这里特别感谢博友[永恒末匕](https://likaijian.com/)提供的方案
原方案地址:https://blog.cpen.top/posts/6f7759e0.html
这个方案虽然可以实现自动刷新的效果,但是有个弊端,也就是多吉云key令牌会直接暴露出来,只能把仓库设置为私有,不太灵活,今天下午花了点时间完善了一下,理论支持所有部署在GitHub的静态网站
## 快速食用
在你的项目的根目录,新建一个`RefreshCDN.py`的文件,代码如下
```python
from hashlib import sha1
import hmac
import requests
import json
import urllib
import os
def dogecloud_api(api_path, data={}, json_mode=False):
"""
调用多吉云API。
:param api_path: 调用的 API 接口地址,包含 URL 请求参数 QueryString。
:param data: POST 的数据,字典格式。
:param json_mode: 数据 data 是否以 JSON 格式请求,默认为 false 则使用表单形式。
:return dict: 返回的数据。
"""
access_key = os.environ.get('DOGECLOUD_ACCESS_KEY') # 从环境变量获取 AccessKey
secret_key = os.environ.get('DOGECLOUD_SECRET_KEY') # 从环境变量获取 SecretKey
if not access_key or not secret_key:
raise ValueError("Access Key or Secret Key is not set in environment variables.")
body = ''
mime = ''
if json_mode:
body = json.dumps(data)
mime = 'application/json'
else:
body = urllib.parse.urlencode(data)
mime = 'application/x-www-form-urlencoded'
sign_str = api_path + "\n" + body
signed_data = hmac.new(secret_key.encode('utf-8'), sign_str.encode('utf-8'), sha1)
sign = signed_data.digest().hex()
authorization = 'TOKEN ' + access_key + ':' + sign
response = requests.post('https://api.dogecloud.com' + api_path, data=body, headers={
'Authorization': authorization,
'Content-Type': mime
})
return response.json()
# 从环境变量中获取 URL 列表,使用逗号分隔
url_list_env = os.environ.get('CDN_URL_LIST')
if not url_list_env:
raise ValueError("CDN_URL_LIST is not set in environment variables.")
url_list = url_list_env.split(',')
api = dogecloud_api('/cdn/refresh/add.json', {
'rtype': 'path',
'urls': json.dumps(url_list)
})
if api['code'] == 200:
print(api['data']['task_id'])
else:
print("API failed: " + api['msg'])
```
创建你的 GitHub Actions 脚本,在项目根目录创建 `.github/workflows` 目录,如果有该目录请忽略
接下来在`.github/workflows` 目录下新建 `RefreshCDN.yml`文件
yml文件配置如下
```yml
name: Refresh CDN
on:
push:
branches:
- main
jobs:
refresh-cdn:
runs-on: ubuntu-latest
steps:
- name: 检出代码
uses: actions/checkout@v2
- name: 安装 Python
uses: actions/setup-python@v2
with:
python-version: '3.x'
- name: 安装依赖
run: pip install requests
- name: 等待源站部署
run: sleep 1m # 这里用了个笨办法,等待 1 分钟后进行刷新
- name: 刷新 CDN
run: python RefreshCDN.py
env:
DOGECLOUD_ACCESS_KEY: ${{ secrets.DOGECLOUD_ACCESS_KEY }}
DOGECLOUD_SECRET_KEY: ${{ secrets.DOGECLOUD_SECRET_KEY }}
CDN_URL_LIST: ${{ secrets.CDN_URL_LIST }}
```
然后在你的GitHub项目仓库页面
依次进入 `Settings` -> `Secrets and variables` -> `Actions` -> `New repository secret`
创建三个密钥键值对,分别为
`CDN_URL_LIST`:值为 URL 列表,使用逗号分隔
例如:https://usj.cc/,https://5b2.cn/
`DOGECLOUD_ACCESS_KEY`:填入你的 AccessKeys
`DOGECLOUD_SECRET_KEY`:填入你的 SecretKey
多吉云密钥获取请访问:https://console.dogecloud.com/user/keys
按照如上步骤,设置完毕,你的仓库得有如下三个字段
![f2736183148b132aea6cb14908e8e86](f2736183148b132aea6cb14908e8e86.png)
执行git提交,脚本就可以自动刷新多吉云缓存了
![48dad6112a4e2110c95b04111084309](48dad6112a4e2110c95b04111084309.png)
去多吉云控制台看看刷新预热,这样就是成功了
Binary file not shown.

After

Width:  |  Height:  |  Size: 527 KiB

@@ -0,0 +1,109 @@
---
pid: 128
title: Hugo自动化备份至阿里云OSS
date: '2024-10-06T15:49:58+08:00'
slug: 20241006
draft: true
author: 小赵同学
layout: post
status: hidden
categories:
- 生活
tags: []
ai_comment: >-
国内GitHub访问确实是个痛点,增量备份到OSS是个实用方案。有个技术细节值得注意:find命令排除public目录的写法可能存在隐患,如果文件路径包含空格会中断处理。更稳妥的做法是用`find
. -path ./public -prune -o -type f -print0 | xargs
-0`配合null字符分隔。另外可以考虑在workflow里加个slack通知,确认备份完成状态。
---
Hugo的整个构建流程需要搭配GitHub Action使用 ,但是GitHub网络在大陆访问并不是很好
大部分地区无法打开,国庆回家想把博客仓库拉下来,更新一篇文章,拉了几次都失败了
渐渐意识到了多端备份的重要性,在搜索引擎找了一圈基本上都是腾讯云Oss的教程,没有找到自己想要的
我比较喜欢使用阿里云Oss,于是打算自己写一个,期间也遇到点问题,不过还好有ChatGpt帮忙
试了下效果不错,分享出来并作备份
## 创建阿里云oss Bucket
登录阿里云控制台,搜索oss,创建一个新的Bucket,按照以下配置即可
![image-20241006160517132](image-20241006160517132.png)
操作完此步骤后,请记录你创建好的Bucket名称和Endpoint域名
## 创建阿里云 AccessKey
访问以下地址创建自己的AccesKey值,并做记录
https://ram.console.aliyun.com/profile/access-keys
## Github仓库配置
以上几个步骤所记录的值都是一些敏感的数据,暴露在GitHub仓库是非常危险的
我们将其保存为GitHub Action Secret,这样流水线在工作的时候会自动读取配置好的值
![setup-secrets](setup-secrets.png)
对于Bucket的访问你需要在仓库上配置以下四个数据:
`OSS_BUCKET` : Bucket的名称
`OSS_ENDPOINT` : 上面让保存的Endpoint值
`OSS_ACCESS_KEY_ID` : AccessKey的ID
`OSS_ACCESS_KEY_SECRET` : AccessKey的Secret
## GitHub Action创建文件
[Github Actions](https://github.com/features/actions)是Github推出的自动化工作流工具,主要用来完成CI/CD
它的工作流是通过yaml文件定义的,放在仓库的.github/workflow目录下
这里我把文件命名为`aliyun-backup.yml`,这里作一下配置文件说明
因为备份没必要提交一次commit备份一次,备份周期设置的每周日的凌晨0点自动备份
采用的是增量备份模式,只有文件修改或新增才上传,缩短了上传时间
```yaml
name: 备份到阿里云oss
on:
schedule:
- cron: "0 0 * * 0" # 每周日的00:00执行一次
workflow_dispatch: # 手动触发工作流
concurrency:
group: "pages"
cancel-in-progress: false
jobs:
publish:
runs-on: ubuntu-latest
steps:
- name: 下载代码
uses: actions/checkout@v4
with:
submodules: true
fetch-depth: 0
- name: 配置阿里云OSS
uses: manyuanrong/setup-ossutil@v3.0
with:
endpoint: ${{ secrets.OSS_ENDPOINT }}
access-key-id: ${{ secrets.OSS_ACCESS_KEY_ID }}
access-key-secret: ${{ secrets.OSS_ACCESS_KEY_SECRET }}
- name: 增量上传资源(排除 public 文件夹)
run: |
# 查找所有文件,排除 public 文件夹
find . -path ./public -prune -o -type f -print | xargs -I {} ossutil cp {} oss://${{ secrets.OSS_BUCKET }}/{} --update
```
Binary file not shown.

After

Width:  |  Height:  |  Size: 383 KiB

@@ -0,0 +1,45 @@
---
pid: 129
title: Failed to connect to github.com port 443 解决方案
date: '2024-10-18T16:34:20+08:00'
slug: 20241018
draft: true
author: 小赵同学
layout: post
status: hidden
categories:
- 笔记
tags: []
ai_comment: >-
这个解决方案直击核心,但需要注意代理配置是全局生效的。建议在.gitconfig里用includeIf按目录区分代理设置,避免影响其他项目。另外,检测代理是否生效可以先用curl
-v测试,再上git操作——毕竟网络问题就像薛定谔的猫,不观测永远不知道死活。
---
最近在使用vscode的时候,使用vscode自带的git一直无法推送上去
一直使用的是折中的方法,通过GitHub Desktop解决,但是提交切换
体验感十分割裂,于是寻找解决方法,通过查阅资料,找到以下方法,用以记录和备份
理论上配置http代理Windows、Linux、Mac OS 中 git 命令一致
## 配置socks5代理 ##
```
git config --global http.proxy socks5 127.0.0.1:10809
git config --global https.proxy socks5 127.0.0.1:10809
```
## 配置http代理
```
git config --global http.proxy 127.0.0.1:10809
git config --global https.proxy 127.0.0.1:10809
```
## 注意
命令中的主机号(127.0.0.1)是使用的代理的主机号
命令中的端口号(10809)为代理软件的端口号
Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

@@ -0,0 +1,40 @@
---
pid: 130
title: win10&win11去除桌面快捷方式小箭头方法
date: '2024-10-19T17:37:36+08:00'
slug: 20241019
draft: true
author: 小赵同学
layout: post
status: hidden
categories:
- 教程
tags: []
ai_comment: >-
从注册表操作到bat封装,这种将技术方案产品化的思路很赞。不过建议在GitHub仓库添加验证机制,比如执行前后对比HKEY_CLASSES_ROOT\lnkfile的IsShortcut值变化。另外可以考虑用PowerShell脚本实现,既能保留版本控制优势,又便于添加参数化功能(比如可选保留/恢复箭头)。
---
最近重装系统,不太美观的桌面快捷方式小箭头又冒出来了
找了一下之前收藏的去除桌面快捷方式小箭头的文章,博主的博客已经打不开了
最后还是找到了解决方法,索性直接将所有代码整理成bat文件,这样方便很多
## 效果展示
![image-20241018175042885](image-20241018175042885.png)
## 快速食用
访问GitHub仓库:https://github.com/zqlit/Some_useful_win_tools
将代码git clone下来或者直接下载zip压缩包,过程不在赘述
在文件夹找到对应需要的bat文件,直接`右键->使用管理员身份运行`
## 备用链接
考虑到一些网络环境不太好的小伙伴,可以直接访问下方的蓝奏链接下载
https://wwsr.lanzouv.com/b0izxg8hi 密码:eo2k
Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

@@ -0,0 +1,53 @@
---
pid: 131
title: windows系统自启redis服务
date: '2024-11-10T10:09:16+08:00'
slug: 20241110
draft: true
author: 小赵同学
layout: post
status: hidden
categories:
- 笔记
tags: []
ai_comment: >-
实用的小工具脚本。建议可以加上错误处理,比如先检测redis-server.exe是否存在,避免直接报错。另外,如果考虑跨团队使用,可以用绝对路径代替相对路径。开机自启部分配图很直观,但可能需要注意不同Windows版本的系统目录差异。
---
最近在学习redis,每次都需要手动启动redis,很麻烦
于是看了一下windows的bat脚本语法,照葫芦画瓢弄了个redis-start脚本
此文章主要记录备忘
## 基本概述
切换到E盘下的redis目录,启动redis-server.exe服务,并指定配置文件 redis.windows.conf
```
@echo off
cd /d E:\Redis
redis-server.exe redis.windows.conf
pause
```
## 解释:
1. `@echo off`:禁用命令回显,确保命令输出更干净。
2. `cd /d E:\Redis`:切换到 `E:\Redis` 目录。`/d` 用于切换驱动器(如果你当前在其他驱动器上)。
3. `redis-server.exe redis.windows.conf`:执行 Redis 服务器并加载指定的配置文件。
4. `pause`:命令执行后暂停,保持窗口打开,这样你可以看到任何错误消息或日志输出。
## 使用方法:
1. 将上面的代码保存为 `start_redis.bat` 文件。
2. 双击 `start_redis.bat` 即可启动 Redis 服务
## 开机自启方法
windows系统键盘快捷键输入win+r输入`shell:startup`
将bat脚本放进该目录即可
![image-20241110102208532](image-20241110102208532.png)
Binary file not shown.

After

Width:  |  Height:  |  Size: 204 KiB

@@ -0,0 +1,41 @@
---
pid: 132
title: 解决webstorm本地调试跨域问题
date: '2024-11-13T09:03:25+08:00'
slug: 20241113
draft: true
author: 小赵同学
layout: post
status: hidden
categories:
- 笔记
tags: []
ai_comment: >-
JetBrains 的产品设计确实总能在细节处体现工程师思维,WebStorm 的零配置开箱即用体验对标 VSCode
的插件依赖模式,本质是产品哲学差异。跨域问题的解决路径很有意思——这类编辑器内置的 HTTP
请求拦截机制常被忽略,实际上类似于开发环境代理的轻量化实现。建议可以展开讲讲 WebStorm 背后如何封装底层网络栈,这对理解现代 IDE
的完整技术栈会很有启发。
---
在b站刷到一个up主,才知道[JetBrains](https://www.jetbrains.com/idea/)的webstorm开始免费了
抱着试一试的心情下载了一下,使用体验很不错,只需要下载下来,即开即用
不需要下载安装什么插件,进行扩展,而且操作界面和idea界面很相似,熟悉上手很快
比如最喜欢的就是`变量名.let`的快捷键,可以快捷生成 `let example = xxx`,虽然vscode可以通过插件实现,但是体验感还是很一般
下午在背js面试题的时候,使用fetch发送get请求,一直报跨域问题
我就纳闷了,一些公开的api网站怎么可能设置跨域访问,不然还咋赚钱
于是排查了一下是webstorm的编辑器问题,去Google搜索也没有靠谱的回答
最后摸索到了解决方法,这里分享一下解决方法
方法很简单,就是去settings将下图勾选即可
![0839c79d4896e0ccf9e6309d50d3091](0839c79d4896e0ccf9e6309d50d3091.png)
默认是不勾选的,勾选上,前端跨域问题就解决了