肇鑫的日常博客

肇鑫 / Owen Zhao

独立开发者,主要开发 iOS、watchOS、macOS 应用。

目前在维护 SleepTapRooster Time,以及 Markdown Writer 相关工具。

最新文章

用Mac mini替换掉Apple TV后的一些感受

技术

我有一台Apple TV HD,也就是最高支持1080p的那款。一直以来用得还可以。我主要是用Airplay转播Mac mini上播放的内容。

今年我趁着国补,将Mac mini M1换成了Mac mini M4。新问题随之而来。在使用5G频段连接Mac mini M4和Apple TV之后,Airplay的视频,声音会断断续续的。而这个问题在原本的Mac mini M1的时候是没有的。

根据我的分析,应该是M4的Wi-Fi支持160Mhz,而Apple TV不支持导致的。我也找到了解决办法。M4 Mac mini连接Apple TV HD声音断断续续问题的一种解决方案

上面的办法虽然能一定程度解决问题,但是每次开始的时候还是会卡顿一段时间才会正常。而且声音的稳定性特别容易受干扰,只要有人在路由器和Apple TV直间走动,就经常要卡上一段时间。

M1换下来了之后,我本来打算当二手卖掉。但是现在M4的价格实在太低了。M1卖不上价,我觉得不划算。于是打算留下来自己用。首选就是替换掉Apple TV,彻底解决掉声音断断续续的问题。

M1的准备配置

要实现M1的远程控制,要打开M1的屏幕共享。这样,就可以在M4上直接登录M1的电脑。另外,建议M1的文件共享也打开,可以方便互传文件。最后,在能耗里,打开“唤醒以供网络访问”,这样就算它睡眠了,也可以通过M4来唤醒它。

M1和Apple TV的不同之处

具体使用起来,M1还是要比Apple TV麻烦一些的。虽然都是通过HDMI连接的电视。但是Apple TV可以做到睡眠时也可以在Airplay中出现,选择之后就会被唤醒,可以直接使用。但是M1必须先打开电视,然后再Finder中选择M1的主机,选择屏幕共享,之后才能在Airplay看到它。

别的倒是没啥了。M1在Airplay的时候可比Apple TV稳定多了。不仅连接迅速,而且很稳。关机的时候,直接关电视就可以了。M1会在一定时间之后自动进入睡眠。

macOS时间机器恢复指南(最新版)

技术

写作缘由

今天我尝试升级到macOS 26 beta 2,但是发现有一些必用的应用不支持,只好通过时间机器退回旧版。但是在恢复的过程遇到了多个问题,这在之前的恢复时都是不存在的。因此打算记录一下,算是为后来者踩坑了吧。

正文

苹果官方文档

根据苹果的官方文档,开机时长按10秒电源键,就会进入恢复系统,然后可以在其中选择时间机器恢复。

但是这个说法只对了一半。即开机时长按10秒电源键,的确会进入恢复系统。但是恢复系统并不能通过时间机器恢复。你选择时间机器恢复之后,会提示你,需要使用迁移助手进行恢复。

实际上,现在恢复系统并不能直接恢复时间机器的备份了,必须先安装对应的系统,然后才能通过迁移助手恢复。这增加了步骤和时间,是一种倒退。

正确的恢复步骤

  1. 关机状态下,按住开机键10秒,进入恢复界面。
  2. 选择磁盘管理,格式化你要安装的macOS的磁盘。
  3. 自动重启后,自动进入恢复界面,选择安装macOS,这会安装你的机型对应的最新版稳定版macOS。
    1. 如果你想安装其它版本,可以提前制作对应的优盘,然后从优盘启动。
  4. 重启之后,进入系统,然后选择从时间机器恢复。

其它问题

以下的内容十分重要,务必要在执行所有操作之前就考虑到。

之前的时间机器恢复的时候,会列出可以恢复的所有时间点。这是因为macOS只能恢复相同版本的备份。当前版本的macOS(15.5),做了一些改进,但是引入了更多的不方便。

当前版本,时间机器可以跳过小版本的不同进行恢复,比如15.5可以恢复15.6 beta的备份。但是如果最新的备份是跨越大版本的,就会直接提示无法恢复,而不是列出所有的可以恢复的时间点。

解决办法

将包含时间机器备份的移动硬盘插入一台可用的macOS,然后进入Finder。删除掉新版的备份的时间点对应的文件夹,只留下旧版的作为最新的时间点。然后重新插回需要恢复的Mac。

捞女游戏点评

随笔

花了一天半时间,总计11.6小时通关了这个游戏的全部结局。我可以负责任地说,虽然这个游戏讲的是捞女,但是却完全没有贬低捞女。

虽然存在凤凰社这个捞女组织,使用变凤凰的方式招捞女,培训捞女。但是具体到每位女性本身。却有着不同的身份背景,她们有的是遇人不淑,被渣男欺骗,被父母抛弃,被丈夫家暴,还有的只是为了寻找一份属于自己的爱情。

而捞女之上,还有权力阶层。凤凰社创办人虽然身为女性,但是她创办凤凰社的目的却并非为了帮助女性,而是借助女性敛财,以及提供性贿赂给权力阶层,从而获取自己的非法利益。而凤凰社对于捞女也存在压榨。她们培训捞女前需要为捞女培训和整容,而这些费用要由捞女自己出,有潜力的她们会借一部分。但是如果不够或者是潜力低的,就需要自己去贷款来上课、整容。而贷款就是那种裸贷的形式。如果今后钱没还清也骗不到钱,就会拍去色情部门去服务男人来还钱。一旦你想退出,她们就会拿之前拍到的你的隐私来威胁你。

而且这个游戏虽然有捞女,有捞女组织,有打击捞女的团队。但是这里面即便是所谓的反派,三观也都是正的,做坏事的人也会心存愧疚,有机会也会想做一些好事。这也是为什么玩家可以正常地和她们沟通,从而从情感上改变她们。如果她们的本质是邪恶的,那么犹豫三观不同,这个游戏过程最终就没法进行下去了。

总结起来,游戏起名叫捞女游戏,本质上是为了博眼球,吸引大众的注意。而他们也的确做到了。改名后的情感反诈模拟器反而更加贴切。

最后,期待团队承诺的销量超过37万份后,提供的4K视频的更新。

你和AI之间存在利益冲突

技术

大模型,以下简称AI。目前在辅助编程方面十分流行。不过在我使用过多个不同的类似工具,包括并不限于Github Copilot,AlexSideBar,通义灵码等,之后。我发现了一个有趣的现象。

在解释这个有趣的现象之前。我想先向某些不熟悉AI编程的读者简单介绍一下AI编程的大致过程。

  1. 开发者使用编辑器将开发的项目打开。
  2. 选择用来询问、作答的AI模型。
  3. 提出具体的问题,同时还要划定范围,比如说是单独的某个文件,又或者某几个文件,又或者全部文件。(有些比较智能的客户端会主动扩大范围,这个暂不讨论)
  4. 等待AI分析、作答。
  5. 开发者对比AI的代码和原始代码,评估是否解决了提出的问题。如果解决,就可以跑一下测试看看。如果没解决,那就针对不足的地方重新提问。
  6. 以此反复。

分析

经常有人说某某AI编程工具特别牛,就是token用得太狠了。充上100美元,一天就用光了。那么,如果我们想减少token的用量,我们一起看看上面的6个步骤有哪些可以进行优化,以减少用量。

首先排除1和4、5和6。要想减少token的用量。主要看2选择的模型,和3提出的具体的问题,以及划定的范围。

但是2这个可以选择的范围不大。因为每个人都有各自的偏好。有的人觉得Claude Opus最牛,有的人觉得Gemini Pro最强,当然也有人更偏好OpenAI O3的。所以,这个主要是个人便好,而不是token消耗。

因此主要的问题就在与步骤3。抛开你和AI对话的那几段文字。划定的范围是最重要的,选择单一文件或几个文件,相比于直接扔整个项目给AI,让它自己选,消耗的token数量肯定不是一个数量级别的。

那么我们要如何优化步骤3呢?首先,我们发现每次发送文件给AI时,AI都是当作是全新的在解析,也就每次都要消耗新的token。理论上,如果我们可以每次把内容分成不变的和已经变化的发给AI,然后让AI处理变化的部分,就可以节省大量的token。而且,由于我们大部分时间都是接受了AI给出的方案。那么AI实际上并不需要重新理解当前的代码。如果它确定用户接受了它的方案,它只需要将它上次输出的结果的token直接拿过来作为输入就可以了。

如果厂家可以做到我上面提出的这个优化,那么我们理论上最高可以节省接近一半的token。但是厂家应该没有动力去做这个优化。因为在这个问题上,厂家、AI、开发者的利益是不一致的。

  • 对于AI来说,直接使用结果的token来作为输入的一部分是有益的,因为提高了效率。
  • 对于开发者来说,更是有益的,因为可以省钱。
  • 但是对于厂家来说,用户省下的钱,就是他少赚的钱。因此,虽然厂家一再强调AI的普及需要大量的电,但是他们却没有动力去主动帮用户节省。他们只会在内部帮自己节省。

结论

很有意思吧。在提高效率,节省token这方面。厂家和AI、开发者的利益是不一致的。这极大地阻碍了AI的更快发展。AI崛起吧!先干掉厂家!

Safari登录时非常卡顿问题的解决

技术

一直用通行密钥登录。可是最近突然用不了了,会界面一直卡住,只能通过密码的方式来登录。

我尝试了常规的办法,比如清空Safari的数据。没有作用,然后我又尝试打开密码应用,删除掉一些过期的密码。还是没有作用。

我注意到spindump在这期间CPU占用会达到100%,我问了AI,AI说这个是Spotlight的工作进程,只要不一致100%,能自动恢复正常就没问题。于是我就放弃了这个线索。

这么将就用了两天,今天在浏览X的时候,看到有人提到自己为了追一个bug,把系统日志喂给AI,让AI逐一排查。我一想,这是个好主意啊。于是我又开始研究这个问题。

正式研究

我先打开控制台应用,然后点击开始。我一开始过滤的是Safari的日志,但是把错误和故障的日志发给AI后,AI的答案没啥用。

于是我又把日志范围扩大到我操作期间的所有系统日志,结果发现了一个这样的故障。

AuthenticationServicesAgent	
Failed to acquire lock for -[ASCAgent cancelCurrentRequest]_block_invoke

但是AI对于这个问题也没啥好办法。

于是我取消了日志所有的过滤器。结果看到满屏的Spotlight的日志。于是我禁用了SpotLight的索引。然后再试,结果还卡。重启,不卡了。

结论

用户在登录时,会先调用密码应用查询用户名,然后通过密码或者通行密钥登录。在这个过程中,会卡顿几次:

  1. 查询用户名时卡一次。
  2. 选择用户名时卡一次。
  3. 选择通行密钥登录时一直卡。

也就是说,1和2时遇到了缓慢的问题,而3遇到了没有查询结果的问题。

而每次遇到这种情况,macOS的处理方式,就是使用Spotlight重新对于相关内容(密码应用的数据)进行索引。这进一步造成了卡顿。

建议的解决步骤

router

禁用Spotlight的方法

将系统和用户自身文件夹所在的磁盘分区,加入到Spotlight的搜索隐私。恢复则移除即可。

遇到骗子啦,想骗我两万五。

随笔

昨天微博显示有新人关注了我,看ID很像我大学同学的之前的微博ID,于是我在微信上问她,是不是新建了一个微博账号,她说是。于是我就互关了那个账号。

今天下午,那个账号和我发微博私信。说是今天真不顺,跑去营业厅办业务,结果被工作人员不小心把手机号给注销了。现在所有App都用不了了。

然后有让我帮她查一个亚马逊的订单,说是昨天定了个包包。想要看一下订单状态。我帮她查了状态。

step_1.mm

然后,过了一会儿,她又和我说,她的网银无法付款,让我再次询问客服,结果客服说可以代付。然后她就和我说让我待付,她付钱给我。

step2

我给我那个同学打电话,提示正在通话中,又大了两次,接了,问她是否在微博上和我对话,她说没有。于是我拉黑了骗子的账号。

之后我截图和骗子的对话,发给我同学的微信。然后我和她微信语音对话。她说那个微博账号不是她的,然后给我截图她不小心新建的账号,用户名是随机的那种。但是她的确是新建的微博账号,是前天微信不小心登陆造成的。我说我问你是不是新建了账号,肯定是因为关注了我我才知道啊。你新建的账号根本没关注我。她说我还奇怪呢,怎么知道我新建了账号,怀疑你是个高手。

brew应用无法卸载问题的解决

技术

问题

zhaoxin@Mac-mini ~ % brew remove inkscape --cask
==> Uninstalling Cask inkscape
==> Purging files for version 1.4.028868 of Cask inkscape
zhaoxin@Mac-mini ~ % brew info inkscape
==> inkscape: 1.4.230579
https://inkscape.org/
Installed
/opt/homebrew/Caskroom/inkscape/1.4.028868.upgrading (64B)
From: https://github.com/Homebrew/homebrew-cask/blob/HEAD/Casks/i/inkscape.rb
==> Name
Inkscape
==> Description
Vector graphics editor
==> Artifacts
Inkscape.app (App)
/opt/homebrew/Caskroom/inkscape/1.4.230579/inkscape.wrapper.sh -> inkscape (Binary)
==> Analytics
install: 3,464 (30 days), 9,907 (90 days), 32,521 (365 days)

解决办法

Here’s how you can fully remove Inkscape:

  1. Uninstall the Remaining Version

Run the following command to uninstall the remaining version of Inkscape:

brew remove --cask inkscape
  1. Verify Uninstallation

After running the uninstall command, verify that Inkscape is no longer installed:

brew info inkscape

If Inkscape is still listed as installed, you may need to manually remove any leftover files.

  1. Manually Remove Leftover Files

If Homebrew didn’t fully remove the application, you can manually delete the remaining files:

• Application File:

rm -rf /Applications/Inkscape.app

• Caskroom Directory:

rm -rf /opt/homebrew/Caskroom/inkscape
  1. Clean Up Homebrew

Finally, clean up any unused files and caches in Homebrew:

brew cleanup
  1. Verify Again

Run brew info inkscape once more to confirm that Inkscape has been completely removed.

联通越来越奇葩了

随笔

之前我的是99元的融合套餐,包含20G流量、400分钟通话、300M宽带、IPTV和高清视频。充120元,期限24个月,每个月返20元。结果24个月到期之后,联通悄无声息地把IPTV和高清视频拿出来收费了,一个月多收我20元。我原以为这些还是算在套餐里的,结果白白被多收了3个月。

也许看到这里,大家会问,这有什么奇葩的呢?这不是运营商常用的手段吗?的确,这个手段本身并不奇葩。但我发现事情的经过很奇葩。前两天,联通的客服给我打电话,说可以将我的宽带升级到700M,还可以增加流量和通话时长等。她说每个月只需多10元。我心想不对啊,我的套餐是99元,你说这个一个月多少钱?她说138。我问,套餐才99,怎么换成138月费还多10元?她说,看了我最近三个月的花费,平均在120元以上。我以为她算错了,于是跟她说不换。

结果,今天又来了一个联通客服,话术还是类似,不过宽带提升到了1000M,还说可以多赠送6个月的100G流量等。我很诧异,还是坚持自己是99元套餐。结果她说,我给你看看吧。您的基本套餐99元,IPTV10元,高清视频10元。我说这两个不都是套餐内的吗?她说不是,都是单独收费的。我强调这些我从来就不用。请给我取消吧。她说要取消只能去营业厅。

于是我拨打了10010,询问这两个是不是单独收费。她回答是的。我问如何取消,她告诉我取消IPTV的话,还得带回当初的设备还给联通才可以。

今天下午我去了联通的营业厅,因为事先在其他地方办事,所以没带上机顶盒,结果就无法取消机顶盒业务。

大家知道,联通办理业务的速度和银行差不多,挺慢的。我边办业务边和联通客服聊天。我说,你们也真行,我明明记得这些费用是在套餐里的,结果现在单独收费。客服回复,那是因为您之前的签约到期了。到期后您就应该换套餐。我说,我当初问过联通客服,问如果到期不重新签约会怎么样。她说跟原来一样,副套餐费用就可以了。结果现在原本在套餐内的,单独拿出来收费了,这不就是欺骗吗?

我对机顶盒的收费也有话说,我问你们收这个机顶盒有什么用?客服说,当然有用啊,要190元。我狂喜:这个是要押金吗?客服说:没有,但是如果你不能拿出来,就得支付190元。我说,我的机顶盒都用了3、5年,残值连10块钱都没有,居然要收费190元。

最后,关于我换了什么套餐,内容和我之前的99元套餐是一样的,啥都没变。之前我的99其实是129元,每次有个减免30元。这次应该是不用减免了。然后还得充值398元,返24个月,每个月返15元,最终返360元,联通贪了38元。而我之前的那个99套餐,是充120元,返24个月,每个月返20元,联通补贴了120元。

总结一下联通的奇葩事:

  1. 原本套餐包含的IPTV和高清视频,在到期后单独收费,每项10元,共计20元。
  2. 偷偷多收钱后,系统检测到我的费用上升,还来推销更贵的套餐,暴露了联通偷偷涨价的问题。
  3. 办理多收费套餐只需在电话中确认,想取消多收费的套餐却需要带身份证去营业厅办理。
  4. 对于没有残值的设备,联通也坚持要回收,以增加用户取消办理的难度。而一旦用户拿不出旧设备,联通还要收取190元的高昂费用。