解决 bunx 报错 invalid CA cert

用以下脚本导出一份系统的 CA 证书:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
$store = Get-ChildItem Cert:\LocalMachine\Root
$out = "cafile.crt"

Remove-Item $out -ErrorAction SilentlyContinue

foreach ($cert in $store) {
$pem = @"
-----BEGIN CERTIFICATE-----
$([System.Convert]::ToBase64String($cert.RawData, 'InsertLineBreaks'))
-----END CERTIFICATE-----

"@
Add-Content -Path $out -Value $pem
}

然后在 $HOME\.bunfig.toml 配置:

1
2
[install]
cafile = "C:/cafile.crt"

奇技淫巧:在 Cloudflare 边缘网络部署你的 Bitwarden

Intro

Demo

项目:qaz741wsd856/warden-worker

!> 此项目不保证对 Bitwarden 所有功能的完整实现,也不保证安全性,图一乐就是!

部署

设置 Github 项目

fork 前言中的仓库,并在 settings - Secrets and variables - Actions 中设置好 Repository secrets

Name Secret
CLOUDFLARE_ACCOUNT_ID 你的 Cloudflare 账号 id
CLOUDFLARE_API_TOKEN API 密匙
D1_DATABASE_ID D1 数据库的 id

其中,API Token 在这里创建,在模板”编辑 Worker“的基础上,再授予编辑 D1 和 Worker KV 的权限即可。

D1_DATABASE_ID 需要创建一个 D1 数据库,并复制它的 id。

最后,运行 Build Action 即可自动构建。

设置 Worker

在 Cloudflare 控制台,找到自动生成的 warden-worker,配置以下密钥:

Name Secret
ALLOWED_EMAILS 允许注册的邮箱,半角逗号分隔
JWT_SECRET 32 位以上随机字符串
JWT_REFRESH_SECRET 32 位以上随机字符串

其他环境变量参见项目内 document。

最后,添加路由即可。

2025 从 A 到 Z

前言

2025 年已经过去,在这里记录一下笔者 2025 年内打开的最频繁的 26 个网站。

正文

A、H、K、N、P、R、S、U、V、W、Y

B

bilibili.com 无需多言,最伟大的摸鱼网站。、

C

chatgpt.com 和 chat.deepseek.com,我的两位得力助手。

D

dash.cloudflare.com,2025 年的上半年我还是对我的网站比较关心的,也在 CF 上部署了很多好玩的小东西。

E

ename.net,我的域名服务商,经常关注一下域名活动(虽然 .cc 从来没有)。

F

fofa.info,安全界的一座高山。

G

google.com,无需多言。

I

itdog.cn,非常好用的运维工具网站。

J

jkpt.koukao.cn,科大讯飞旗下的口语测评网站。今年为了准备春考英语每个月都会考上几次口考,虽然最后考的还是一坨

L

inkium.simsv.com,风华一位学长做的高质量资源网站!

M

mp.weixin.qq.com,偶尔上去发两篇文章?

O

omn.cc,我的博客

Q

qcloud.com,坑爹云

T

travellings.cn,博客共创平台。

X

x.com,男娘社交平台。

Z

zp.shec.edu.cn,备战高考 ing…

为 NanoPi R1 修复 istoreos 的 WLAN 支持

笔者最近在为捡垃圾收来的一台 NanoPi R1 编译 istoreos,发现 AP6212 一直无法驱动起来,研究了四天,遂记录下来。

问题原因:openwrt 上游仓库中 sunxidts 设备树文件存在问题。

修复方案:参考友善电子官方 friendlywrt 系统中的设备树文件,将 wifi_pwrseq 修改为:

1
2
3
4
5
6
7
8
wifi_pwrseq {
compatible = "mmc-pwrseq-simple";
pinctrl-names = "default";
pinctrl-0 = <0x99>;
post-power-on-delay-ms = <0xc8>;
reset-gpios = <0x37 0x00 0x07 0x01>;
phandle = <0x0c>;
};

并在 pinctrl@1f02c00 下添加:

1
2
3
4
5
wifi_en_pin {
pins = "PL7";
function = "gpio_out";
phandle = <0x99>;
};

让 Windows 使用苹果提供的 active probe 服务避免网络小地球

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NlaSvc\Parameters\Internet]
"ActiveDnsProbeContent"="223.5.5.5"
"ActiveDnsProbeContentV6"="2400:3200::1"
"ActiveDnsProbeHost"="dns.alidns.com"
"ActiveDnsProbeHostV6"="dns.alidns.com"
"CaptivePortalTimerBackOffIncrementsInSeconds"=dword:00000005
"CaptivePortalTimerMaxInSeconds"=dword:0000001e
"EnableActiveProbing"=dword:00000001
"PassivePollPeriod"=dword:0000000f
"StaleThreshold"=dword:0000001e
"WebTimeout"=dword:00000023
"ActiveWebProbeContent"="<HTML><HEAD><TITLE>Success</TITLE></HEAD><BODY>Success</BODY></HTML>"
"ActiveWebProbeContentV6"="<HTML><HEAD><TITLE>Success</TITLE></HEAD><BODY>Success</BODY></HTML>"
"ActiveWebProbeHost"="captive.apple.com"
"ActiveWebProbeHostV6"="captive.apple.com"
"ActiveWebProbePath"="ncsi.txt"
"ActiveWebProbePathV6"="ncsi.txt"
"CaptivePortalTimer"=dword:00000001

如何在海鲜市场买到正品英睿达笔记本内存

笔者今天为了给笔记本更换内存条,逛了一下午海鲜市场,见到了无数假货,遂决定写此文。

引入

先来看英睿达的笔记本内存长啥样:

英睿达的笔记本内存

其中,左侧二维码下方应该是六位数字,为 Material number,右侧二维码下方为八位 16 进制字符串,左侧四位数字为生产时间,中间会有 Product of xxx 的字样,代表生产地。

在第二行则是 Part number.

下面介绍几种防伪方法,只有所有方法检验结果都为真才可信,任一方法检验其为假则为假条。

方法一

英睿达官网通过 Material number 查询 Part number

打开官网后,选择地区(美国、中国都可以),产品类别选择 DRAM。输入 Material number 后查询,并比对 Part number 是否与内存条上的一致(只需要比对小数点前的即可)。

方法二

扫描标签上左右两二维码,左侧二维码扫描结果应为 Part number,且与标签和官网查询记录一致。

右侧二维码扫描出来结果应为 S802CXXYYYY+二维码下方八位16进制数字,其中 XX 代表生产地代号(中国为 14,马来西亚为 1A,其余暂时未知),YYYY代表生产时间(应与二维码左侧生产时间一致,且比颗粒生产时间晚)。

方法三

首先查看 Part number 小数点后几位。通常为 XxFY 格式。其中,X 为颗粒供应商编号(M/C 代表镁光颗粒,K 代表三星颗粒,有时会没有这一位);x 为颗粒数(例:8 即代表内存由八个颗粒组成);Y 代表颗粒版本(应与颗粒上的信息一致,后文会提到)。

该方法不一定 100% 准确,因为正版内存在这里有时会出现明显不合理的信息

方法四

观察颗粒。

正品颗粒上的二维码应为独特的,即你无法在一根内存上找到任何两个二维码完全相同的颗粒。

颗粒丝印第一行的前两位代表生产日期。第一位应为数字,代表生产年份的最后一位;第二位为字母,代表第 x 周生产(例:U 在字母表中排第 21 位,则其代表该颗粒在第 21*2=42 周生产)。这里计算出的生产日期应该早于内存标签上的日期,但相差一般不会超过一年

颗粒丝印第一行的第三位代表颗粒版本,在理论上应与标签上 Part number 的信息一致

FBGA & part decoder 上查询颗粒丝印第二行的信息,并核实其与丝印上其他信息是否一致。

封装系统过程中完美删除 Edge 浏览器的方法

今天研究了一天,找到了一个完美地在封装系统过程中移除 Edge 浏览器的方法。

需要的工具:

  • install_wim_tweak.exe
  • MSMG Toolkit (可选)

直接教学:

先用 MSMG Toolkit 挂载 wim 镜像(如果你不喜欢这个可以使用别的工具挂载)。挂载后打开提升权限了的 cmd

1
install_wim_tweak.exe /c Microsoft-Windows-Internet-Browser-Package /r

然后输入你的挂载路径,等待脚本运行完毕后,使用 MSMG Toolkit 的移除功能移除 Edge 即可(新版和旧版都要移除)。

如果你不喜欢 MSMG Toolkit ,这里提供另一个方案:

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
@echo off
set "Mount=D:\\Mount"

call :WORK 2>nul
pause
exit /b

:WORK
if not exist "%Mount%\\Windows\\explorer.exe" exit /b
reg query "HKU\\S-1-5-19" >nul 2>nul || exit /b
set "E1=x86\_microsoft-windows-edgechromium\_31bf3856ad364e35\_10.0.19041.3636\_none\_181897eb58d04a07"
set "E2=x86\_microsoft-windows-edgechromium\_31bf3856ad364e35\_none\_83204c2f0ca4ce9b"
if exist "%Mount%\\Windows\\SysWOW64" (
set "E1=amd64\_microsoft-windows-edgechromium\_31bf3856ad364e35\_10.0.19041.3636\_none\_7437336f112dbb3d"
set "E2=amd64\_microsoft-windows-edgechromium\_31bf3856ad364e35\_none\_df3ee7b2c5023fd1"
)
set "F1=%Mount%\\Windows\\WinSxS\\%E1%"
set "F2=%Mount%\\Windows\\WinSxS\\Manifests\\%E1%.manifest"
if exist "%Mount%\\Program Files (x86)\\Microsoft\\Edge\*" rd /s /q "%Mount%\\Program Files (x86)\\Microsoft"
if exist "%Mount%\\Program Files\\Microsoft\\Edge\*" rd /s /q "%Mount%\\Program Files\\Microsoft"
takeown /F "%F1%" && cacls "%F1%" /E /G %USERNAME%:F && rd /s /q "%F1%"
takeown /F "%F2%" && cacls "%F2%" /E /G %USERNAME%:F && del /f /q "%F2%"
reg load HKLM\\TK\_COMPONENTS "%Mount%\\Windows\\System32\\config\\COMPONENTS"
reg load HKLM\\TK\_SOFTWARE "%Mount%\\Windows\\System32\\config\\SOFTWARE"
reg load HKLM\\TK\_SYSTEM "%Mount%\\Windows\\System32\\config\\SYSTEM"
reg delete "HKLM\\TK\_COMPONENTS\\DerivedData\\Components\\%E1%" /f
reg delete "HKLM\\TK\_SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\SideBySide\\Winners\\%E2%" /f
reg delete "HKLM\\TK\_SOFTWARE\\Microsoft\\Active Setup\\Installed Components\\{9459C573-B17A-45AE-9F64-1857B5D58CEE}" /f
reg delete "HKLM\\TK\_SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Image File Execution Options\\MicrosoftEdgeUpdate.exe" /f
reg delete "HKLM\\TK\_SYSTEM\\ControlSet001\\Services\\edgeupdate" /f
reg delete "HKLM\\TK\_SYSTEM\\ControlSet001\\Services\\edgeupdatem" /f
if exist "%Mount%\\Windows\\SysWOW64" (
reg delete "HKLM\\TK\_SOFTWARE\\WOW6432Node\\Microsoft\\EdgeUpdate" /f
reg delete "HKLM\\TK\_SOFTWARE\\WOW6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\Microsoft Edge" /f
reg delete "HKLM\\TK\_SOFTWARE\\WOW6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\Microsoft Edge Update" /f
@REM reg delete "HKLM\\TK\_SOFTWARE\\WOW6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\Microsoft EdgeWebView" /f
) else (
reg delete "HKLM\\TK\_SOFTWARE\\Microsoft\\EdgeUpdate" /f
reg delete "HKLM\\TK\_SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\Microsoft Edge" /f
reg delete "HKLM\\TK\_SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\Microsoft Edge Update" /f
@REM reg delete "HKLM\\TK\_SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\Microsoft EdgeWebView" /f
)
reg unload HKLM\\TK\_COMPONENTS
reg unload HKLM\\TK\_SOFTWARE
reg unload HKLM\\TK\_SYSTEM
goto :eof

本方法无任何图标残留。

ffmpeg 标准化视频音量

学校这两天搞活动,收集来的素材音量全部不统一……我又懒得重新剪辑,遂想到使用 ffmpegloudnorm 滤镜对视频进行响度均衡。

于是写(用 deepseek 搓)了个小脚本来处理:

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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
import ffmpeg
import os
import re
import json
from pathlib import Path

def analyze_loudness(input_path):
"""使用ffmpeg-python分析音频响度参数"""
try:
# 执行分析命令并捕获输出
stdout, stderr = (
ffmpeg
.input(input_path)
.audio.filter('loudnorm', print_format='json')
.output('pipe:', format='null')
.global_args('-loglevel', 'info')
.run(capture_stdout=True, capture_stderr=True)
)
output = stderr.decode() # 成功时从返回的stderr获取输出
except ffmpeg.Error as e:
# 失败时从异常对象获取输出
output = e.stderr.decode()
json_match = re.search(r'\{.*\}', output, re.DOTALL)
if not json_match:
raise ValueError("未找到响度分析数据")

try:
return json.loads(json_match.group())
except json.JSONDecodeError:
raise ValueError("响度数据解析失败")

def normalize_video(input_path, output_path, target_lufs=-19):
"""执行标准化处理"""
# 分析音频特征
loudness_data = analyze_loudness(input_path)

# 构建处理命令
input_stream = ffmpeg.input(input_path)
audio_stream = input_stream.audio.filter(
'loudnorm',
linear='true',
I=target_lufs,
measured_I=loudness_data['input_i'],
measured_LRA=loudness_data['input_lra'],
measured_tp=loudness_data['input_tp'],
measured_thresh=loudness_data['input_thresh'],
offset=loudness_data['target_offset'],
print_format='summary'
)

# 保留所有视频流和其他数据流
output = ffmpeg.output(
input_stream.video,
audio_stream,
output_path,
vcodec='copy', # 复制视频流
acodec='aac', # 重新编码音频
audio_bitrate='192k',
ar='48000',
y='-y' # 允许覆盖输出文件
)

try:
output.run()
except ffmpeg.Error as e:
raise RuntimeError(f"处理失败: {e.stderr.decode()}")

def batch_normalize():
"""批量处理当前目录下的视频文件"""
video_exts = ['.mp4', '.mkv', '.mov', '.avi', '.flv']
current_dir = Path.cwd()

for file in current_dir.iterdir():
if file.suffix.lower() in video_exts and '_normalized' not in file.stem:
output_name = f"{file.stem}_normalized{file.suffix}"
output_path = file.with_name(output_name)

print(f"正在处理: {file.name}")
try:
normalize_video(str(file), str(output_path))
print(f"完成: {output_name}")
except Exception:
print(f"处理 {file.name} 失败: {str(Exception)}")
if output_path.exists():
output_path.unlink() # 删除可能生成的不完整文件

if __name__ == "__main__":
# 检查ffmpeg是否可用
try:
ffmpeg.probe('')
except ffmpeg.Error:
print("错误: 请先安装ffmpeg并添加到系统路径")
exit(1)

batch_normalize()

2025 生竞日志

!> 本文较水,不建议阅读

天气真好~心情畅快
2025 年 5 月 11 日早 10:00,我准时参加了 2025 年全国中学生生物学联赛(上海赛区)决赛。老实说,作为一名末流市重点的学生,纵使我对生物有较高的兴趣,且在生物课外内容上的积累相比于同水平学生来说较为丰富,我仍不对比赛结果保有太大的期望。

进入考场后,令我感到意外的是今年的联赛题型被改为了判断题(与国际竞赛接轨),题目难度相比前几年也简单了一些,考察到的许多知识点其实回归了高中生物教材之中,与前几年的“氨基酸记忆大赛”相比可谓人性化了许多。

考完出来我却丝毫没有感到解脱,对完答案之后更是发现自己有几道不该错的题目(虽然相比于我在学校考试犯得低级错误来说可以说是占比非常低了),但对完答案估分给我的期望与大家普遍分数偏高给我带来的冲击形成了一种微妙的平衡。

也许我该考虑在暑假做一些高中生物/化学有关的复习视频网课?可以提上日程

【Arch Linux】广东省省直单位WPS 安装包

今天放假闲来无事,用官网上的 .deb 包封了一个 arch 系的安装包。

版本:wps-office-pro-11.8.2.12065

安装报错是正常的,懒得再改脚本了。

链接:https://alist.omn.cc/%E5%B9%BF%E4%B8%9C%E7%9C%81%E7%BA%A7%E5%85%9A%E6%94%BF%E6%9C%BA%E5%85%B3%E6%94%BF%E5%8A%A1%E5%A4%96%E7%BD%91%E4%B8%93%E7%94%A8-wps-office-pro-11.8.2.12065-1-x86_64.pkg.tar.zst

Your browser is out-of-date!

Update your browser to view this website correctly.&npsb;Update my browser now

×