Logo

site iconVincent Yang

DeepLX作者。2000年,天秤座,美国计算机科学硕士。篮球爱好者,金州勇士队粉丝,喜欢旅行,尤其是海边,Golang编程。
请复制 RSS 到你的阅读器,或快速订阅到 :

Inoreader Feedly Follow Feedbin Local Reader

Vincent Yang RSS 预览

I applied for Real ID

2025-05-10 21:56:40

2023 年刚来美国的时候,申请了 State ID,这样就不需要护照就可以坐飞机了,包括在美国的几乎 99% 需要出示身份证件的场合都可以使用。比较害怕护照随身携带丢失,所以我一般情况下只会随身携带 State ID。后来因为想拿 Driver’s License,还参加了 Pennsylvania 的笔试拿到了 Permit。但是后来放弃了路考,原因是路考需要自己准备车,按照官方的说法,从租车公司租的车应该还不符合要求。再加上 PA 的规定,DL/State ID 的有效期严格与身份挂钩,最长只能能到 I-20 到期后两个月整。

2024 年得知,原来在 New Jersey 可以直接用中国驾照换取 NJ DL,并且更吸引人的是 NJ DL 并不与身份挂钩,默认给到四年后的生日。经过一般研究,我成功在 2025 年花了一些时间去 NJ 办理了 NJ DL。感兴趣的可以参考 这篇文章。其实有很多小坑,比如同样的材料并不是所有的 MVC 都能成功 waive 路考的。

目前遇到的问题是,在 2025 年 5 月 7 日,Real ID 法案真的在美国生效了。你要知道这个法案从 2005 年就开始提出了,在疫情那会本来要开始执行了,结果又推迟到了 2025 年。本来以为这个法案应该没办法执行,原因是所有的美国居民都需要重新申请身份证件,这对任何人来说都是很大的一笔成本。

Real ID 法案生效之后,也就是我无法使用不是 Real ID 的身份证件坐飞机了。当然截止到我写这篇文章的时候,我不太确定 TSA 是否已经严格开始执行。因为才刚开始三天,我猜可能开始会放水,毕竟大部分人都没有 Real ID。

申请 Real ID

PA 的 PennDOT 是不需要预约的,直接 walk in 即可办理。别的州可以自行打电话询问。

由于 Real ID 相当严格,需要准备的材料也很多。

  • 两份地址证明(我用了水电费账单和银行账单)
  • 护照 + 美签
  • 有效的 I-20
  • SSN
  • I-94

20250510NXY9af

20250510Cb71Yi

实际测试下来,如果你的 I-20 是带 OPT 的版本,会给到你 OPT 到期的那一天。如果你的 I-20 没有 OPT 的话,会给到你 I-20 到期后的 60 天,也就是会覆盖 Grace Period。

申请过程其实非常顺利,也没什么需要问你的,就是填表签字拍照。最后就是等 15 天 Real ID 寄到你家。

值得吐槽的一点是,这个 Real ID 非常贵,Real ID 是 $30,再加上 Renew State ID 的费用是 $42.5,总共是 $72.5。

目前持有的证件

  • PA State ID (Real ID):用于坐飞机和日常带出门
  • NJ Driver’s License (with IDP):用于在美国和全世界开车

为什么不把 NJ DL 换成 PA DL (Real ID)?

因为这样会大大缩短我的 DL 的有效期。

不与身份挂钩的 DL

顾名思义,DL 的有效期与你的身份无关。众生平等,任何人都会有相同的有效期,例如 NJ 即使你是没有身份的非法移民,DL 的有效期也是到四年后的生日。当然 Real ID 的法案比较严格,如果你希望获得更长的有效期,不建议申请 Real ID。

  • New York (4 years)
  • Maryland (8 years)
  • New Jersey (4 years)
  • Washington (6 years)

以上信息来自 usdrive.org

Know ShadowTLS too late

2025-05-05 22:10:28

正如标题写的那样,ShadowTLS 相见恨晚

偶然在 Mihomo 的 Issue 里面看到作者说 ShadowTLS 还很稳,所以没必要支持 XHTTP。看了一下 ShadowTLS 的作者竟然是我关注了很久的大佬 ihc

看了一下 GitHub 的文档,发现部署 ShadowTLS 其实非常简单。我尝试在日本 IIJ 的服务器上部署了一下,发现速度很不错。并且 Surge 和 Shadowrocket 都支持 ShadowTLS。之前一直在用 Snell,但是苦于 Snell 必须要依赖 Surge,很难分享给没有 Surge 的朋友使用。ShadowTLS 刚好解决了这个问题。

由于 老刘没有提供 Snell Server 的 Docker Image,我在 geekdada/snell-server-docker 的基础上改进了一下,支持了 Github Actions 的自动构建,并且支持了更多的环境变量。

如何部署

本文只介绍如何使用 Docker Compose 部署 ShadowTLS + Shadowsocks 和 ShadowTLS + Snell。

https://github.com/missuo/snell-server-docker

ShadowTLS + Shadowsocks

# Create directory and navigate to it
mkdir shadowtls-shadowsocks
cd shadowtls-shadowsocks

# Download compose file
wget -O compose.yaml https://raw.githubusercontent.com/missuo/snell-server-docker/refs/heads/master/compose-shadowsocks.yaml

# Generate random password for enhanced security
openssl rand -base64 32

# Edit the compose file with your configuration
nano compose.yaml

# Start the containers
docker compose up -d

# Check logs
docker compose logs

ShadowTLS + Snell

# Create directory and navigate to it
mkdir shadowtls-shadowsocks
cd shadowtls-shadowsocks

# Download compose file
wget -O compose.yaml https://raw.githubusercontent.com/missuo/snell-server-docker/refs/heads/master/compose-shadowsocks.yaml

# Generate random password for enhanced security
openssl rand -base64 32

# Edit the compose file with your configuration
nano compose.yaml

# Start the containers
docker compose up -d

# Check logs
docker compose logs

其中我提供的 compose 文件使用的是 ShadowTLS V3 (Strict Mode)。

PostgreSQL Master-Slave Synchronization

2025-05-04 13:43:07

本来一直在用 Supabase,但是苦于 Free Plan 只能创建两个 Database,所以不得不寻找其他方案。

最初的想法是,在我美国的不同地区的 Servers 上部署 PG Instance,并且实现 HA (High Availability) 和 Replication。但是我发现如果要实现 HA,至少需要三个 Servers,而且需要保证三个 Servers 之间的优秀的网络。我又没有那么多 Servers,所以最后放弃了 HA。仅保留了主从 Replication,也就是说只要我在 Master 上创建了 Database,那么从数据库也会自动创建一个相同的 Database,并且自动同步数据。

我找到了一个相对来说比较简单的方案,就是使用 bitnami/postgresql 这个 Docker Image。

部署

Master Instance

services:
  postgres-primary:
    image: bitnami/postgresql:latest
    env_file:
      - .env
    restart: always
    volumes:
      - ./data/primary:/bitnami/postgresql
    ports:
      - "5432:5432"
# .env
POSTGRESQL_REPLICATION_MODE=master
POSTGRESQL_REPLICATION_USER=replicator
POSTGRESQL_REPLICATION_PASSWORD=password_hard_to_guess
POSTGRESQL_USERNAME=postgres
POSTGRESQL_PASSWORD=password_hard_to_guess
POSTGRESQL_DATABASE=mydb

Slave Instance

services:
  postgres-replica:
    image: bitnami/postgresql:latest
    env_file:
      - .env
    restart: always
    volumes:
      - ./data/replica:/bitnami/postgresql
    ports:
      - "5433:5432"
POSTGRESQL_REPLICATION_MODE=slave
POSTGRESQL_REPLICATION_USER=replicator
POSTGRESQL_REPLICATION_PASSWORD=password_hard_to_guess
POSTGRESQL_MASTER_HOST=master_instance_public_ip
POSTGRESQL_MASTER_PORT_NUMBER=5432
POSTGRESQL_USERNAME=postgres
POSTGRESQL_PASSWORD=password_hard_to_guess
POSTGRESQL_DATABASE=mydb

其中 Slave Instance 的 Port 其实可以不用映射到公网,因为 Slave 只负责同步数据,不负责对外提供服务。当然,我暴露 5433 是为了连接 Slave Instance 测试是否能实现自动同步。

我的 Master Instance 部署在 Los Angeles, CA,然而 Slave Instance 部署在 Pittsburgh, PA 家里的 PVE 的 Debian VM 上,实际测试下来效果非常好,能否实现几乎无延迟的同步。

优化

  • 使用 TLS 加密所有 Postgres 连接。
  • 计划实现真正的高可用性 (例如 Patroni 或 pg_auto_failover) 。

Proxmox VE smooth upgrade

2025-04-11 01:38:10

Recently, PVE released version 8.4.0, while I am still using 8.3.0 and plan to upgrade to the latest version.

  1. Open the PVE management backend, select pve, and click Shell. This will open the command line for PVE.

  2. By default, if there is no enterprise subscription, updates cannot be checked, so you need to add a no-subscription source.list.

nano /etc/apt/sources.list.d/pve-no-subscription.list
# Enter the following line
deb http://download.proxmox.com/debian/pve bookworm pve-no-subscription
  1. Update the PVE source and upgrade the PVE.
apt update
apt list --upgradable
apt dist-upgrade
reboot
  1. After the upgrade is complete, check the PVE version.
pveversion -v

Get an US DL with a Chinese DL

2025-04-03 14:39:02

使用中国驾照及翻译件在美国租车,大部分的租车公司会租给你,当然其实这样的操作在美国的部分州是不合法的。所以,如果有美国驾照就会方便很多,更重要的是持有美国驾照可以去 AAA 换取国际驾照(IDP),这样就可以在全世界范围内租车了。

20250403KzSaN5

灰色部分是不承认 IDP 的国家和地区。(非洲和南美洲部分地区以及中国大陆不能使用 IDP 开车)

本文主要介绍的是使用中国驾照在美国新泽西州申请美国驾照的保姆级攻略。

材料准备

  • 中国驾照原件
  • 中国驾照翻译件原件(可以找 Aiqiang Chen 翻译,如果想要省钱也可以自行翻译)
  • SSN 原件 (如果没有可以使用 I-94 或者 I-20 代替)
  • 护照
  • 地址证明(Checking Account Statement)

申请流程

尽管 NJ 有很多的 MVC,但是根据网友的反馈,绝大多数的 MVC 都可能会需要路考,所以我个人仅推荐成功率比较高的可以 Waive 路考的 MVC,比如:

  • North Bergen
  • Bayonne
  • Lodi

我有尝试过 Oakland 最终失败了,而且一旦你在别的 MVC 通过了 Knowledge Test,并且已经拿到了 Learner Permit,那就没有办法再 Waive 路考了。只能等待两年 Learner Permit 过期后重新申请。

上述提到的三家 MVC 离 NYC 都比较近,加上广受好评,导致预约非常困难。一般只能约到起码 20 天之后的时间。根据我的经验,其实只有有脚本一直监控空余的预约,是可以约到当天的时间的,为此我专门写了一个脚本监控这三家 MVC 未来三天内的空余预约,你可以订阅我的 Telegram Channel 收到通知。

在任何一家的 MVC 你都需要先拿着预约进去,然后工作人员会在名单上找你的名字,当然如果是当天捡漏的预约的话,他们的名单上可能没有你的名字,你只要把预约成功的邮件或者短信给工作人员看即可。他就会给你一张表格让你填写。应该先选择 Learner Permit 的申请,填完之后前往 ID Check 窗口,其实这一步就是帮你检查材料是否齐全,这个时候你需要跟他说你有中国驾照,并且你想 Waive 路考。工作人员帮你检查完材料确定无误之后,会给你分配一个号码,等到叫号之后前往窗口提交材料。这个时候需要拍照,签名,支付 $10 的 Learner Permit 费用。他会问你是否需要今天参加 Knowledge Test,如果是的话接下来就等待叫号参加笔试。

先是测试视力,然后上机笔试,通过之后,就到了最关键的 Waive 路考环节。如果在 North Bergen 申请的话,需要你打开 12123 的 App 上的电子版中国驾照查看,请注意美国的 IP 根本无法登录,这边建议你提前准备好香港的 IP 或者中国大陆 IP 的 VPN。

这一步完成之后,接下来应该重新 ID Check 一遍,然后获取一个号码,等待叫号办理 Full License。但是很多 MVC 不让在当天进行到这一步,通常会让你第二天再来。由于这个业务没办法预约,会导致第二天只能 Walk-in 办理,目前知道的情况是每家 MVC 每天都有 Walk-in 的名额,但是具体是多少,我还没有去验证过,理论上去得早的话应该肯定没什么问题。如果他们没有给你 Walk-in 的名额,你可以尝试直接到 ID Check 窗口,你可以跳过门口检查预约的地方,因为通常上一天的工作人员会给你那张填写的卡片。

第二天的这个流程其实很简单,就是 ID Check 完,等叫号去办理的窗口,拍照,签字,支付 $24 的 Full License 费用,等待 20 天左右就可以收到邮寄的正式驾照了。

注意事项

  • 如果你在别的州有 Permit 和 License,他们理论上不会给你 Waive 路考,但是似乎他们查询不到你是否有别的州的 Permit 和 License。
  • 关于地址证明,仅需打开 Chase App 修改到 NJ 朋友家的地址即可。
  • 关于笔试,个人觉得 Aiqiang Chen 的题库看起来确实很多题目很接近很困惑,例如罚款多少钱,几年内不能考驾照类似那些,但是实际上考试很简单,都是一些基础题目。
  • 关于 Real ID 的申请,我强烈不建议申请 Real ID,即使 Real ID 的法案在五月就要生效了。Real ID License 的有效期仅有一年,而 Standard License 的有效期是四年。
  • 关于 IDP,需要等你拿到正式驾照之后才可以去 AAA 申请。

监控三家 MVC 空余预约

暂时不会考虑开源代码,你仅需订阅频道就可以收到实时的消息。有需要代抢和预约的朋友欢迎给我发邮件 [email protected]