Blog@Rocosteve https://blog.srowo.cn/ zh-CN 為何我步步踏著空虛 Thu, 01 Jan 2026 23:43:00 +0800 Thu, 01 Jan 2026 23:43:00 +0800 欢迎使用 Typecho https://blog.srowo.cn/archives/1/ https://blog.srowo.cn/archives/1/ Thu, 01 Jan 2026 23:43:00 +0800 Rocosteve 为什么又回来了?
我也不知道

]]>
1 https://blog.srowo.cn/archives/1/#comments https://blog.srowo.cn/feed/
VS Code Server 本地部署 https://blog.srowo.cn/archives/10/ https://blog.srowo.cn/archives/10/ Sun, 14 Dec 2025 00:04:00 +0800 Rocosteve 宿舍有两台电脑,不知道用哪台?

想着一台专门编译程序,一台专门osu?

Well, wish no more (什么勾开场


版本对比

VS Code Servercode-server
鉴权措施Github / Microsoft 账号纯密码,或通过反代设置其他鉴权方式
连接方式VS Code桌面版或网页版浏览器访问服务器的IP或域名
中转服务器微软
访问权限全局全局
编译位置远端服务器远端服务器
部署方式VS Code桌面端部署docker或命令直装
插件来源官方库Open VSX Registry

其实除了code-server以外,VS Code官方也是有服务端的,但是连接方式仅限于 vscode.dev 和VS Code桌面版,且仅支持采用Github或微软账户的方式鉴权,没有像code-server那样的纯密码登录功能。但是因为经过了微软的服务器中转,所以在本地部署的时候不需要担心内网穿透什么的。

部署方式也很简单,只需在服务端和客户端都下载VS Code桌面版,登录相同的Github或微软账户

服务端 Remote Tunnel Access客户端 Remote Tunnels

然后在服务端点击头像,打开"Remote Tunnel Access",选择打开的时机

可以选仅当VS Code软件开启时打开(选项1)

也可以选当用户登入Windows时自动开启(选项2)

Remote Tunnel access prompt|690x105

然后就是选择隧道要绑定的账户,之后只能以相同账户访问隧道

登录以开启隧道|690x162

选择过后,稍等一会,应该就会出现创建完成的通知。此时可以 Copy Browser Link(复制浏览链接) 然后通过浏览器访问隧道,也可以通过VS Code桌面版访问

隧道创建成功通知|573x223

通过桌面版访问需要安装 Remote - Tunnels 插件。之后,在界面左侧会出现一个 Remote Explorer 用于连接隧道。首次打开需要登录与之前相同的Github或微软账户,随后会自动获取可用的隧道并展示

登入前登入后
登入前的提示登入后的界面

如果之前已经连接过,那么隧道下方就会显示之前连接的文件夹位置,方便快速定位

鼠标移上去之后,会出现一个箭头和一个窗口

一个代表 直接连接 ;一个代表 打开新窗口再连接

初次连接,或者直接在主机那边点连接,可能会出现没有文件的情况

此时只需要手动点开 Explorer(文件浏览器) ,再选择远端位置就可以了

打开文件夹

此时注意,如果点击 OK 右边的 Show Local ,VS Code便会断开远端连接,重新恢复为本地模式

连接成功后,可能需要重新下载插件,我也不知道为啥不直接把原本服务器有的插件部署上去

不过现在插件就是直接从官方repo拉取的了,装完插件记得重连一下

左边为服务器,右边为客户端|690x470

随后就可以愉快的在远端写和编译了,编译出来的文件当然也是存在远端服务器中的

要关闭连接,或者连接远程主机上的WSL,只需点击整个窗口左下角蓝蓝的按钮,然后选择按需选择就行了。注意如果WSL用的是Ubuntu,不要用18.04,用版本高些的

要想关闭整个隧道,回到服务器,重复刚刚开启隧道的步骤,这次会弹出一个菜单

Menu for tunnel|690x211

选择 Turn off Remote Tunnel Access 即可


附加内容 - 在WSL启用Tunnel

*也可用于普通Ubuntu服务器

有些时候,通过VS Code直接连接WSL可能会卡很久
此时可以直接打开WSL终端,手动安装Tunnel服务

curl -Lk 'https://code.visualstudio.com/sha/download?build=stable&os=cli-alpine-x64' --output vscode_cli.tar.gz
tar -xf vscode_cli.tar.gz

安装完成后,运行下面的命令启动

./code tunnel

初次运行界面|690x188

随后会和前文一样提示要登入哪一个账户,用键盘的上下箭头选择Github或者Microsoft
我这里就一样选择Github登入

登录提示|690x196

此时浏览器打开 https://github.com/login/device/ ,登录或选择自己的Github账户,然后输入控制台给出的 Code

以Github登入|574x500, 75%

随后回到控制台,自己起一个隧道名称,或者直接按Enter使用默认的
等到给出一个 vscode.dev 的链接,就代表开通成功了

开通完成示例

现在回到VS Code,WSL已经注册成一台独立的设备了。直接连接就行,不用再选择WSL

WSL已成功建立隧道|669x500


然后额外说一下,VS Code不会自动建立文件夹,可能需要手动mkdir
请输入一个存在的路径|662x189, 75%

]]>
0 https://blog.srowo.cn/archives/10/#comments https://blog.srowo.cn/feed/
Cloudflare域名注册记 https://blog.srowo.cn/archives/9/ https://blog.srowo.cn/archives/9/ Sun, 07 Dec 2025 18:27:00 +0800 Rocosteve

September 27, 2018 — Cloudflare, the leading Internet performance and security company, today announced early access of Cloudflare Registrar, the first registrar built around trust, security, and fair, wholesale pricing

source: Cloudflare Launches the First Domain Registrar You Can Love | Cloudflare

2018年,Cloudflare正式推出了域名注册服务,号称是第一个把“安全”和“平价”整合在一起的注册商,主打透明、合理的定价与各种安全措施。

我其实老早就想在Cloudflare注册域名了,苦于不懂PayPal和没有外币卡,无法付款。
直到最近,从友人 @moeouo 手里收了一个 moec.dev 域名,打算直接迁移注册商到Cloudflare来玩玩。

moec.dev 注册页面|690x160

注意事项

首先有一点,于Cloudflare注册的域名,你是找不到Nameserver的设置项的
换句话说,就是必须得用Cloudflare来解析于Cloudflare注册的域名
要不就是别在Cloudflare注册
还有,注册需要银行卡,不可微信支付宝

简要概述

支付方式PayPal(理论上国区账号也可以) / 信用卡(银联可用,但大陆银联借记卡拒付)
结算货币USD$
信用卡或PayPal自动续费可配置
是否支持自定义NS
可否一键配置DNSSEC
WHOIS保护可配置,默认开启
Cloudflare账号间转移域名可以

最初想在Cloudflare注册域名,仅仅是因为想拥有一个在境外注册的,没有或者可以关闭whois隐私保护的域名,然后在whois上面公开自己想要公开的东西。

虽说现在大部分域名的whois信息都被注册商REDACTED了,但是仍然有部分域名的信息是被公开的

mtr.com.hk_2025129_073705|423x500

虽说最初想要达到这个效果,可是后面发现无论怎么配置,自己域名的whois信息好像只有几个包含icann官方查询工具在内的境外网站能够读取得到。

ICANN.org第三方whois查询站
icannmoec.dev_2025129_073916

这种情况,其实不好解决。你不知道其他whois查询的站点是怎么运作的,也不好联系对应的站长让TA单独为你清理缓存。
我反正是放弃了,起码有一个第三方站能检索到我的公开whois就可以了。而且随着现在whois逐步换成rdap,也不知道还能不能像whois这样开放给公众查询。

说完whois,域名安全也是Cloudflare比较注重的一个点。于Cloudflare注册的域名可以一键开启DNSSEC,确实非常的方便,但也不是Cloudflare独占就是了

自动DNSSEC设置页面|690x442, 75%

那Cloudflare的价格嘛,我觉得还算可以,但也不能说是全网最低价。
以 .org 为例,Cloudflare就比其他家贵了,但是也不会差太多。

左图为其他境外注册商,右图为Cloudflare|690x132

还有就是,国内注册商好像普遍要比Cloudflare便宜,我印象中Cloudflare宣称他们注册的域名是完全不收中介费的。

Cloudflare Blog - No hidden fees

而且因为Cloudflare用美元结算的缘故,我们花出去的价格,可能还要多上换汇的费率。比如我在11月28日以港币付了12.2美元的账单,他就扣了我95.4HKD。
银行账单|690x131


看到这里,那么我们于Cloudflare注册域名有什么优势呢

好问题,我也想问

]]>
0 https://blog.srowo.cn/archives/9/#comments https://blog.srowo.cn/feed/
vscode简易指南 https://blog.srowo.cn/archives/8/ https://blog.srowo.cn/archives/8/ Tue, 28 Oct 2025 00:00:00 +0800 Rocosteve VS Code 入门速查手册(桌面版)
官网:Visual Studio Code – Open-source AI code editor

1. 版本速览

版本下载地址说明
桌面版DownloadWin / macOS / Linux 本地安装
官方网页版vscode.dev纯浏览器运行,文件存本地或 OneDrive/GitHub
code-server(第三方)GitHub自建 Web 版,服务端编译+存代码,手机/平板也能用

下文均以 桌面版 为例。


2. 外观与基本操作

2.1 语言

默认英文,搜索并安装 Chinese (Simplified) Language Pack 后右下角点击 Restart 即可。

中文语言包|690x368

2.2 左侧活动栏(快捷键)

  1. 资源管理器 Ctrl + Shift + E
  2. 搜索 Ctrl + Shift + F
  3. 源代码管理 Ctrl + Shift + G
  4. 运行与调试 Ctrl + Shift + D
  5. 扩展 Ctrl + Shift + X
    装插件后会多出对应图标。

2.3 右侧边栏

默认停靠 GitHub Copilot (Ctrl + Alt + I),需登录 GitHub/Google/Apple 账号。

2.4 打开文件 / 文件夹

  • 直接拖文件夹到图标上 → 建议做法
  • 单文件打开也可,但调试/多文件编译不方便
  • 路径不要含中文或全角符号,易踩坑
  • 首次打开会提示“是否信任此文件夹” → 可信就点 Yes / Open
单文件与文件夹模式信任窗口
单文件与文件夹模式信任窗口

3. 调试(Debug)

3.1 打断点

在行号左侧点一下出现红点即可。
注意:程序停在断点行时,该行尚未执行。

打断点|690x450

调试面板顶部工具栏:

图标功能快捷键
▶️继续运行到下一断点F5
⤴️逐过程(跳过函数)F10
⬇️单步调试(进入函数)F11
⤴️单步跳出Shift+F11
🔄重启调试Ctrl+Shift+F5
⏹️停止Shift+F5

C/C++ 单步跳出≈逐过程;Python 同理。


4. .vscode 配置文件夹

位于打开的根目录,含 JSON 配置,不要在这里写代码

常见文件:

  • tasks.json → 编译任务(必配)
  • launch.json → 调试参数(选配)
  • c_cpp_properties.json → IntelliSense(选配)

示例(多语言共存):

// launch.json:gdb + python 双配置
{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "(gdb) Launch",
      "type": "cppdbg",
      "request": "launch",
      "program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
      "cwd": "${fileDirname}",
      "MIMode": "gdb",
      "miDebuggerPath": "C:/msys64/ucrt64/bin/gdb.exe",
      "preLaunchTask": "C/C++: g++.exe build active file"
    },
    {
      "name": "Python: Current File",
      "type": "debugpy",
      "request": "launch",
      "program": "${file}",
      "console": "integratedTerminal",
      "cwd": "${fileDirname}"
    }
  ]
}

5. C/C++ 编译环境(MSYS2 + GCC)

5.1 安装 MSYS2

官网 → 默认路径 C:\msys64 即可。

打开 UCRT64 终端执行:

pacman -Suy
pacman -S mingw-w64-ucrt-x86_64-gcc mingw-w64-ucrt-x86_64-gdb

5.2 把编译器加入系统 Path

C:\msys64\ucrt64\bin(或 mingw64 对应路径)
→ 系统属性 → 高级 → 环境变量 → 系统变量 Path → 新建 → 确定。

5.3 VS Code 插件

搜索并安装 C/C++ Extension Pack,重启。

5.4 测试代码

// test.cpp
#include <iostream>
int main() {
    std::cout << "Hello, World!";
    return 0;
}

F5 → 选 g++.exe → 自动生成 tasks.json 并完成编译。

终端快捷键:Ctrl + `
仅编译不运行:Ctrl + Shift + B


5.5 多文件编译

  1. 修改 tasks.json
    "${file}" 换成所有源文件,例如:

    "args": [
      "-g", "main.cpp", "vector.cpp", "print.cpp",
      "-o", "${fileDirname}\\main.exe"
    ]
  2. main.cpp 里直接 #include "xxx.cpp"(无需改 tasks.json,但仅小项目推荐)。

5.6 手动 .vscode 模板

若自动检测失败,可手写以下文件(路径换成自己的):

tasks.json

{
  "version": "2.0.0",
  "tasks": [{
    "label": "C/C++: g++.exe build active file",
    "type": "cppbuild",
    "command": "C:/msys64/ucrt64/bin/g++.exe",
    "args": ["-fdiagnostics-color=always", "-g", "${file}", "-o", "${fileDirname}\\${fileBasenameNoExtension}.exe"],
    "group": { "kind": "build", "isDefault": true }
  }]
}

launch.json(调试)

{
  "version": "0.2.0",
  "configurations": [{
    "name": "(gdb) Launch",
    "type": "cppdbg",
    "request": "launch",
    "program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
    "cwd": "${fileDirname}",
    "MIMode": "gdb",
    "miDebuggerPath": "C:/msys64/ucrt64/bin/gdb.exe",
    "preLaunchTask": "C/C++: g++.exe build active file"
  }]
}

6. Python 运行环境

  1. 安装 Python(记得勾选 Add to PATH)
  2. VS Code 插件:Python + Python Debugger
  3. 新建 hello.pyF5 → 选 Python File 即可。

launch.json(Python,选配)

{
  "version": "0.2.0",
  "configurations": [{
    "name": "Python: Current File",
    "type": "debugpy",
    "request": "launch",
    "program": "${file}",
    "console": "integratedTerminal",
    "cwd": "${fileDirname}"
  }]
}

7. 常见坑速查

  • 路径含中文/全角符号 → 编译失败
  • Permission Denied(exit -1)→ 手动删掉旧的 .exe 再编译
  • 仅装 gcc 无法编译 C++ → 把命令/路径全部换成 g++
  • 多文件时别在子文件里按 F5,只在 main.cpp 启动调试

搞定!现在你已经拥有:

✅ 中文界面 ✅ 断点调试 ✅ 多文件编译 ✅ Python 一键运行
去写代码吧 🎉

]]>
0 https://blog.srowo.cn/archives/8/#comments https://blog.srowo.cn/feed/
上行短信验证器自研记 https://blog.srowo.cn/archives/7/ https://blog.srowo.cn/archives/7/ Sun, 26 Oct 2025 00:00:00 +0800 Rocosteve 从「接收验证码」到「发送验证码」——自建上行短信验证笔记

短信验证大家都不陌生:
注册社交账号、租云服务器、开直播间……都能碰到。
它帮服务商降低滥用风险,却也让用户多了一笔「短信包」成本。
最近甚至冒出境外社交平台要求先开 Premium 才能收短信验证码的离谱操作。

fabi86377kif1-473x1024|230x500
图源 reddit


其实验证方向可以反过来:
让用户发一条短信给平台,完成校验。

  • 近几年注册微信,你可能给腾讯发过一条短信,而不是收验证码。
  • QQ 登录也支持「用密保手机短信」验证。

网上一搜却全是「平台下发验证码」的商业服务,几乎找不到「用户上行短信」的现成方案。
之前玩过开源工具 SmsForwarder,于是萌生想法:
自建 webhook,做一套「上行验证」

> 注意:本文提及的任何外部软件均与作者无利益关联,使用请遵守其 EULA,风险自负。


思路概览

  1. 手机端通过 SmsForwarder 把发出的短信回传到 webhook。
  2. 服务器按约定格式解析,判断是哪一家「服务商」的验证请求。
  3. 提供查询接口,供业务端校验手机号是否已验证。

消息格式

采用 [PREFIX]..[MSG] 结构:

  • [PREFIX] → 收件方标识(类似短码)
  • [MSG] → 实际验证内容
    示例见图:

短信格式示例|225x500

API 示例

GET /verify/:phone?prefix=xxx
返回是否已验证,文档见下图:

接入文档截图|690x429
来自 上行 SMS 验证器文档


当前状态

  • 试运行阶段,暂不开放自助注册 站点已EOL
  • 可能存在逻辑漏洞,欢迎拍砖。
  • 如需申请接入、提交漏洞或给出架构建议 → 欢迎邮递至 smsproject@rocoawa.com
]]>
0 https://blog.srowo.cn/archives/7/#comments https://blog.srowo.cn/feed/
来看看Android准备推出的Fast Pair setup吧 https://blog.srowo.cn/archives/6/ https://blog.srowo.cn/archives/6/ Mon, 30 Jan 2023 00:00:00 +0800 Rocosteve 本文翻译自 XDA – Here's an early look at the Fast Pair setup experience for Android phones
Rocosteve 译制,并作些许改动,但这不意味着译者完全同意本文观点。
文章原作者 Pranob Mehrotra
翻译错误请指出,我会感激不尽的 (。・ω・。)

在一次对 Google Play Services 的解包过程中,有人发现 Google 正计划
将更多设备类型纳入 Fast Pair,从而让 Android 手机的初始设置更加便捷。
虽然官方尚未公开提及该功能,但 Mishaai 已通过某种方法提前启用并体验了一番。

据 Mishaai 透露,未来支持 Fast Pair 的 Android 手机可快速发现正处于初始设置阶段的同类设备。
新设备会通过 Fast Pair 广播当前设置状态;附近已开启 Fast Pair 的 Android 手机检测到后,将弹出窗口询问是否同步本机数据。

X(Twitter)原文截图|426x499

在 Google Pixel 系列上,借助该方式初始化 Android 可直接跳过后续大部分设置步骤;
若你使用其他品牌手机,则可能仍需额外安装对应迁移工具(如小米换机)以完成数据转移。

注意:该功能仅加速设备发现,并不提供选择性传输或提升传输速度等能力。

这项特性有望随 Samsung Galaxy S23 系列首发亮相,距离发售日已不远。
若属实,XDA 将进行更深入的体验与解析。
但我不确定会不会再翻译。

]]>
0 https://blog.srowo.cn/archives/6/#comments https://blog.srowo.cn/feed/
Microsoft Clarity初体验 https://blog.srowo.cn/archives/5/ https://blog.srowo.cn/archives/5/ Sun, 13 Mar 2022 11:28:00 +0800 Rocosteve 上个月摸到了 Bing Webmaster Tools,顺手就把原来丢在 Google Search Console 的站点「无痛」搬了过去。

支持快速导入

之后就把这事抛到脑后,直到某天发现后台多了个 Microsoft Clarity(BETA) ——
那还等什么?滑稽

安装方式和 Google Analytics 差不多:往 <head> 里塞一段代码即可。
配完后还发现它居然能跟 GA 联动——不过反正我暂时用不上,先让它吃灰。


昨天无聊点开 Clarity 控制台,居然已经躺着一堆数据:

Console

行,配对了,那就开玩!

Session Playbacks(会话回放)

Session playbacks DEMO

想快速定位用户在哪卡壳?直接看回放,跟录屏一样丝滑
至于为啥文字被「····」代替了?

Microsoft:默认会屏蔽敏感信息(如邮箱、卡号等)。

隐私保护

Heatmaps / Insights(热力图)

Heatmaps DEMO

草,我这站也太冷清了——
没人往下滑,连点的人都屈指可数。
冷


翻设置时发现还能 Block IP

BlockIP

把调试用的 IP 段拉黑,仪表盘就只剩真实用户数据,
再也不担心把自己瞎点的操作当成 bug 复盘。

目前界面只有英文,部分功能(如站点错误检测)也还没完善,
先 Clarity + GA 双持观望一阵。

]]>
0 https://blog.srowo.cn/archives/5/#comments https://blog.srowo.cn/feed/
Google为Pixel手机发布了Android 13 Developer Preview https://blog.srowo.cn/archives/4/ https://blog.srowo.cn/archives/4/ Fri, 11 Feb 2022 20:54:00 +0800 Rocosteve > 本文转载自 9TO5Google | Google launches Android 13 Developer Preview for Pixel phones,作者 Abner Li
> 由 Rocosteve 智杖译制


即便 12L 仍处于测试阶段,谷歌还是在 2 月 10 日发布了 Android 13 Developer Preview
这是谷歌第七年在秋季就给出 Android 下一版的方向预览;此次再度于 二月启动,让开发者有更充裕的时间适配应用。

Android 13 继续以 “隐私与安全” 为核心主题,致力于
> “通过在设备上提供更安全的环境以及更细粒度的功能控制,为大家搭建一个高质量的平台。”


1. 系统级照片选择器(System Photo Picker)

  • DP1 即提供「基础 + 可选」接口,让用户 安全地分享本地或云端照片/视频
  • 应用无需申请 READ_EXTERNAL_STORAGE 即可通过 Photo Picker API 访问共享资源,只拿到用户明确选择的文件
  • 谷歌计划通过 MediaProvider 模块更新 将此项功能下放到 Android 11(不含 Android Go)。

Photo Picker 示意图


2. 新增权限:NEARBY_WIFI_DEVICES

  • 允许应用 扫描/连接附近 Wi-Fi 设备无需获取定位权限,进一步减少敏感权限滥用。

3. 第三方应用也能做「Material You 主题图标」

  • 开发者只需提供 单色图标 + 标准自适应图标 XML,即可让启动器自动生成主题图标。
  • 谷歌正与 OEM 沟通,鼓励全员适配。

主题图标对比


4. 其他亮点速览

(以下为 Google 翻译整理)

  • 应用可弹出 系统级快速设置图块添加对话框,用户一键即可把自定义图块拖进面板。
  • 支持 按应用设定语言列表更快断字算法
  • 新增 可编程着色器OpenJDK 11 更新
  • 蓝牙与超宽带(UWB)被拆成 Project Mainline 模块,可通过 Play 商店更新。

Quick Setting Tiles 示例


反馈与刷机提醒


推荐延伸阅读(全部来自 9TO5Google)



]]>
0 https://blog.srowo.cn/archives/4/#comments https://blog.srowo.cn/feed/
荣豪暴毙现场 https://blog.srowo.cn/archives/3/ https://blog.srowo.cn/archives/3/ Sat, 07 Aug 2021 22:00:00 +0800 Rocosteve 录完冒险地图后,我和 萌城 一起去了 The Hive 服务器玩 DeathRun。
我半失误半起飞地拿了好几个第二名——当然,最吸引人的还是那些翻车瞬间(doge)。
于是把其中几个失误镜头剪在一起,做了这支视频。


观看地址

微信视频号请搜索 荣豪Roco
]]>
0 https://blog.srowo.cn/archives/3/#comments https://blog.srowo.cn/feed/