I am LAZY bones?
AN ancient AND boring SITE

2026年 04月 的归档

uv 的 inline script metadata 太香了

最近又玩了下 uv,感觉它在“小工具开发”这个场景里特别顺手。

uv 本质上是一个把 Python 依赖管理、虚拟环境、脚本运行这些事情揉在一起的工具。它最大的优点当然是快,但更让我喜欢的是:很多原本零碎又烦的动作,被压缩成了几个很好记的命令。

比如平时写个小脚本,常常只是想:

  • 调一下接口
  • 批量处理一点文件
  • 验证一个第三方库
  • 给自己做个顺手的小命令

这类东西通常不值得认真建个项目,但又往往会依赖 requestshttpxrich 之类的包。以前一般要先建 venv,再装依赖,可能还要改个 .gitignore,多少有点麻烦。

这时候 uv 很方便的一个点,就是可以直接用 --with

或者:

这种方式特别适合刚开始写小工具的时候。先跑起来,先验证思路,不用一上来就准备完整项目。

不过,--with 也有个问题:依赖信息是在命令里,不在脚本里。

今天你记得怎么跑,过几天自己可能都忘了。发给别人时,也得额外告诉对方要带哪些依赖。

这时候真正的大招就来了:inline script metadata

你可以直接把依赖用这样的格式,写到脚本头部:

可以看到,去掉# /// script这些包裹层之后,里面的内容,其实就是TOML的语法。

这样之后就不用再写长命令了,直接:

就行。这个体验非常好。因为脚本自己就说明白了:

  • 需要什么 Python 版本
  • 依赖哪些包
  • 应该怎么运行

更进一步,你甚至可以再加个 shebang,把它写成一个可以直接执行的脚本:

这样给脚本加上执行权限(chmod +x)之后,连 uv run foo.py 都可以省掉,直接 ./foo.py 就可以跑起来了。

最后总结一下:

  • 刚开始随手写个小工具,用 uv run --with ...
  • 觉得这个脚本值得留下来,就上 inline script metadata
  • 再彻底一点,可以用#!/usr/bin/env -S uv run --script这个shebang

App Store Small Business Program

事情是这样的,3月初的时候,我上线了我的第一款收费APP(用于在睡眠期间监测和记录呼噜声的),然后陆陆续续也有几笔成交了。

于是我这个数据控,就研究了一下Apple的开发者后台,里面的一些看板和详细数据。由于我的APP一共也才成交了几笔而已,样本非常有限,还刻意和资深开发者朋友 TualatriX 聊了一下,还真让我发现了一些门道和问题。。。

那就是在app store connect里,Sales、Proceeds的数据,和你给APP的定价肯定都会不一样。原因有以下几层:

第一层,是汇率的影响。

因为你的 APP 是全球卖的。用户可能用的是欧元、日元、人民币付款,而你后台的结算通常是按美元(或你本地货币)来算的。中间一定会经历一次甚至两次货币转换。

关键点在于:Apple 用的不是实时汇率,而是自己的一套定价和结算汇率(按周期更新)。这就会带来几个结果:

  • 同样标价 2.99,在不同国家对应的本地价格其实是不一样的
  • 不同货币换算回来的“基准金额”,本身就有偏差
  • 即使同一个国家,汇率调整周期不同,Proceeds 也可能轻微波动

换句话说,从一开始,你的“2.99”,在全球范围内就已经不是一个严格一致的数字了。

然后,才是第二层:税。

App Store 的价格是“含税展示价”,不同国家税率不同(比如 VAT、GST)。这些税是从用户支付的钱里先扣掉的。

接着是第三层:Apple 抽成。

而且这个抽成,是在“去税之后”的金额上算的(默认抽走30%)。再剩下的才是你真正拿到的 Proceeds。

所以完整链路其实是:本地定价 → 汇率换算 → 扣税 → Apple 抽成 → 最终收入(Proceeds)

那,作为开发者,有什么可以action的东西么?

显然,汇率和税,作为小卡拉米的我们,是没法去影响的,但苹果其实有个“App Store Small Business Program”,是可以给小开发者一些抽成上的优惠的。

具体来说,苹果针对年销售额不足1百万美元的小开发者,可以把默认的30%的抽成比例,降到15%。其实之前我也听说过这个计划,但当时也没细看,以为是默认开通的。但其实是要开发者去单独申请,并审核开通的。方法倒是很简单,就是用开发者账号登录后,在这个页面点“Enroll now”,填上相应的信息,就算提交成功了。

注意,提交成功,并不代表你enroll成功了,在收到以下邮件之前,抽成将还是30%。而且苹果处理这个请求相当地慢,以我为例花了3周的时间,而且我中间还催过一次。
Small Business Program

好了,最后祝所有开发者都能APP大卖!早日被踢出Small Business Program!

清迈旅行

我发现,要坚持输出一些内容,还是挺难的,这不,离上一篇文章都已经快一个月了。经常有这样那样的事情,就推脱自己有点忙,哈哈!好在,今天还是想起来要写点东西了。

这次去清迈,是因为4月初有个Good Friday,新加坡会多一天假,而且刚好和国内的清明假期差不多时间。就想趁着小长假去哪里玩一下。一开始是计划去印尼看火山的,但机票、行程都没有选到合适的,后来又在科莫多岛、巴厘岛和斯里兰卡之间摇摆了很久,最终决定去个轻松的,几个人才定了清迈。

我们有4天3晚的时间,去掉来和回的两个半天,安排一个一日游行程和一天的自由活动。剩下的就是吃吃喝喝和每天一次的马杀鸡了。

一日游,我们是携程上找的“清迈黑庙+白庙+蓝庙一日游”,中文导游+跟车+门票+团餐的小团。389RMB一个人,我们选的是9人小团,如果是12人的团,价格会便宜蛮多。但是,相信我选贵的,这9人和12人,不仅仅是人数的差别。这两者使用的面包车是一样大小的,也就是说12人团的车,位置会很挤,相当于经济舱;而9人团的位置就宽敞很多。而且,由于经典离清迈老城还蛮远的(实际上,已经到旁边叫“清莱”的邦了),全天在车上的时间会超过6小时,所以乘车的舒适性对这个行程还是挺关键的。

好了,接下来就到了放图时间了。我按时间顺序来吧。

长颈族部落,这是一个3庙以外的小景点,可以选参加的。景点确实非常小,有几十个长颈族的部落成员,导游说以前他们是缅甸的,逃难到此,扎下根来,受泰国政府庇护,专门给他们开发了这块区域。
长颈族人民的生活状况

白庙的创始人,是一个当地的艺术家,前半生艺术成就很高,也买了很多画赚到不少钱,后半生开始参与公共事业,建设了这座庙。这座庙的艺术水准确实也非常高!非常地闪亮!
白庙

蓝庙就比较新了。建于2016年前后,由白庙的那个艺术家的学生打造,在旧庙遗址上重建,以深蓝象征智慧、金色象征佛光,融合现代艺术与传统佛教风格,成为清莱最具视觉冲击力的新地标之一。
蓝庙

蓝庙的冰激凌都是蓝色的
蓝庙的冰激凌都是蓝色的

黑庙,则另一个艺术家于20世纪后期逐步建成,它其实不是寺庙,而是一组以黑色木屋与动物骨骼、毛皮等艺术构成的博物馆,通过强烈的原始与暗黑风格表达生死、欲望与人性主题。
黑庙

黑庙其实占地面积挺大的,我们应该是逛了一个小时左右,还意犹未尽,这是部分展品:

以上就是一日游的所有景点了。

另外值得一提的,就是马杀鸡了,泰国的马杀鸡本身就很出名,清迈的马杀鸡店非常多,价格从便宜到中等都有(真的都不算贵),我们基本上从200多泰铢到700多泰铢的都体验了一下,怎么说呢?还是很解压的,基本上每个档位的服务也都对得起那个价格。所以,一般对着Google maps的评分做参考,就不会踩雷。当然,还是得体验一下贵一点的,毕竟换算一下还是很便宜。这个就不放图了。

还有就是,我们住在塔佩门附近,周日晚上的夜市(只有周日有,其他的都是小夜市),确实很热闹,可以逛逛。而且夜市里也有很多吃的小摊贩,品种很多,样式很齐,所以可以解决晚饭。但其他商品嘛,可能是因为逛过义务小商品市场了,又有万能的淘宝了,基本上也都不怎么会看得上。就看个热闹也挺好的。

自己玩的那天,我们去了素贴山徒步,行程一般,门票大人100,小孩50,会路过另外两个寺庙。而且当时空气质量还是有点堪忧(虽然山上比市区好多了),就不多说了吧。

就此,完毕!