跳到主要内容

游牧周记第49期

· 阅读需 6 分钟
Suhe
This site owner

标签 Tags

李新野Elon

剧集

小丑回魂:欢迎来到德里镇第一季

才出了2集,我的感觉是惊为天人。

其实Thing只在国内这么翻译,容易和DC小丑混淆,开始我也是因为这个原因没第一时间看。 五十年代质感,人物性格刻画intense,及时是种族议题都很真实,不做作。 我有点当年看Strange Things的感觉了,虽然很不一样。

顺便说说本周另一部泰拉玛斯卡第一季虽开头还不错,到第三集就有点看不下去了。

开发

为啥国产大模型AI api都不支持response

导致vercel AI SDK用球不成。

supabase的domain jwt cookie问题

之前做了一个用户登录中心,后台是supabase的Auth服务。 原理就是用Cookie存储jwt,实现同主域名下跨站共享登录状态。 目前的做法是自己生成jwt cookie,和supabase的auth不同步。 后来想为啥不用supabase的cooke呢,问了AI都说这样才对。 Gemini甚至说supabase有配置域名的地方,我找半天没见到,只是发现有个收费服务上有这么一句:

Custom domains are a Pro Plan add-on Paid Plans come with free vanity subdomains or Custom Domains for an additional $10/month per domain.

看来这是一个收费服务?

突然想试试Clerk或类似国产服务。

claude-code-router和iflow的坑

我前面的blog似乎说过。 由于iflow给的apikey 7天就过期。 所以要去网站申请新key,然后改。 这里有点坑:

  1. ccr ui打开网页修改基本无效,自己又改回来了。
  2. 直接改~/.claude-code-router/config.json文件,要注意上面那个APIKEY是访问和网页UI打开的密码。下面providers中的apikey才是iflow给的。
  3. 修改后ccr restart或者UI中重启均无效,要ccr stop + start才行。原因呢:
CCR 的 `restart` 实现等同于**先杀再拉起同一个进程**,但**配置在启动时一次性读入内存**,后续热更新文件不会触发重载;  
所以看似“重启”,其实**还是用的旧内存对象**。

Clerk替代之Logto

logto.io的文档丰富,支持next和expo。 看似非常国际化,但问题是“社交连接器”中没有国内的微信/支付宝,只有apple/google/discard,太国际化了点?哦不对它叫做WeChat和Alipay😅。

试用发现配置很简单,但永远报错redirect url不对,查不出原因,放弃。

Clerk替代之Authing

看着也不错。

不替代了就用Clerk

国内打开其网页和面板确实慢,不管了。 根据文档,简单配置了,确实非常成熟简单。

面板中有development和production模式,要启用后者,除了vercel部署和域名解析好之外,还要配置5-6个Clerk自己的域名。 我的应用域名定在iching.suhe.space,选择了Secondary模式。

过程中问了AI:

如果我的各个子应用都想用clerk作为用户登录管理,形式都是XX.suhe.space,同时suhe.space也是一个应用呢?

回答:

你的情况是:

- 你有主域名 `suhe.space` 对应一个主应用。

- 还有多个子应用,例如 `app1.suhe.space`、`app2.suhe.space`,都想用 Clerk 统一管理用户登录。


这种情况下在 Clerk 的设置里一般建议这样处理:

---

### 1. 主应用(Primary)

- 绑定 **`suhe.space`**,选择 **Primary application**。

- Clerk 会把这个域名作为主应用的默认域名,管理用户、会话、邮箱验证等。


### 2. 子应用(Secondary)

- 每个子应用绑定自己的子域名,比如:

- `app1.suhe.space` → Secondary application

- `app2.suhe.space` → Secondary application

- 子应用依赖主应用的用户数据库,但可以独立处理前端登录/注册。

- Clerk 会自动共享登录状态(如果你配置了 cookie 跨子域)。


---

### 3. Cookie / 跨子域登录配置

为了实现用户在子域间共享登录状态,需要在 Clerk 配置里设置:

- **Cookie domain** = `.suhe.space`(注意前面有点号)

- 这样登录状态可以跨子域共享。


---

✅ 总结:

- `suhe.space` → Primary

- `*.suhe.space` 子域 → Secondary

- 配合 cookie 域配置,就能实现多子应用统一登录管理。

nextjs和expo能共用多语言json文件吗

我一直是这么认为的,而且在近期的项目中也使用了。 直到发现二者模板占位符语法完全不同

环境插值语法示例
next-intl / FormatJS (ICU){name}"Hello {name}"
i18next / react-i18next / Expo 常用库{{name}}"Hello {{name}}"
我现在是expo的标准,但发现next还没法通过配置来调整。
看来以后只能反过来了。

更理想 的方向 —— 如果可以让 Expo 端也兼容 {} 单花括号 (ICU),那就不用在 Web 端做任何 hack 或转换,直接一份 JSON 到处用。

Expo(React Native)可以支持 {} 单括号语法
只要你用的是 i18nextreact-i18next(绝大多数 Expo 项目都是这样),
你只需要 调整 interpolation 配置 即可。

interpolation: {
prefix: '{',
suffix: '}',
}

其他

第一次自己交医保

本来经过前段时间的咨询,啥都准备好了。 结果打开云南税务局的小程序,还是蒙圈了。 UI逻辑反人类。 干脆去官渡区政务中心问问,结果发现停车很难,或者用10块买断一天的场地。 3、4楼都是来办医保社保的,比当年房管局还火爆。 其中一个小伙子坐镇中间,大妈们排队让他操作这个小程序,这哥们不会就是开发方代表吧~ 我实在没机会问他,在旁边自己摸索一下,结果搞定了,然后走人。 去官渡区图书馆坐了一下,没有五华区感觉好(当然跟成都比都是渣渣)。 最近似乎新流感来了,我感觉有点不适,几年来第一次戴上口罩。