肇鑫的日常博客

肇鑫 / Owen Zhao

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

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

最新文章

2023,新一轮AI泡沫来啦!

随笔

AI出圈的历史

谈到AI(人工智能),每隔几年就会出圈一次。印象中,最早是IBM搞的和国际象棋大师卡斯帕罗夫下象棋,从最开始的互有胜负,到最后电脑总是赢。当时,主流的观点说,电脑也就是只能赢国际象棋这种,因为象棋开始的时候子数最多,之后越下越少,因此是收敛的,步数有限。而围棋这种,是子数越下越多,而且棋盘更大,电脑就算能赢国际象棋,也赢不了围棋。我信了。因为当时电脑的确是赢不了人类。连业余的围棋棋手都赢不了。

直到过了几年,有了谷歌的阿尔法狗,人类的围棋大师也被战胜了。之后,电脑战胜人类棋手就已经不再是新闻了。设置,评价棋手的好坏标准,都变成了是否更像是电脑下的,越像的棋手,越被认为是好棋手。

再后来,Deep Fake(换脸)再次出圈。就是通过机械学习,将视频中的人脸换成另外一个。出圈的方式是好多女明星的脸被换在了小电影的女主脸上。口味重的,还有换成湾湾地区领导人的影片流出。采用类似技术的还有不换脸,换口型,换表情,换目光焦点,以及伪造录音等等。这个技术目前的是毁誉参半。

去年开始,新一轮的出圈开始了。这次有两个方向,一个是图形方向。智能抠图、智能生成图片。另一个则是ChatGPT,通过聊天的方式生成需要的文本内容。

泡沫

每一次出圈,都会带来AI的一次大发展。不过以前的出圈,都是在特定领域,因此引起的关注相对有限。这次ChatGPT,出圈是在多个领域的。因此影响范围更大。对于外部人来说,因为缺乏相应的知识,往往对于AI抱有过高的期望,这导致大众眼里的AI和专业人士眼里的AI根本不是一个东西。再加上一些专业人士为了吸引眼球,在被采访时说说话也不够客观,主观上造成了大众的误解。

分析

AI生成的内容,是需要人工审核的。按照审核的难度,可以分为高度可用和专业人士审核两种。

高度可用

智能抠图,智能图片。这是因为这类应用的结果,普通人就能够辨别结果的好坏。智能抠图的标准就是图片是否正确抠出。智能图片,则是图片是否按照要求生成。当然,如果是非要符合人体比例,或者是透视原理之类的,那可能需要专业人士来辨别。但是一般的图片,普通人就能判断了。

专业人士审核

ChatGPT生成的专业类型的文本。是需要专业人士审核的。比如程序代码、或者合同、发票等。如果审核人员不具备专业能力,导致最终成功出现问题。被究责的是使用AI的人,而不是AI。

有人说有了AI,程序员会失业。恰恰相反,AI会导致需要更多的程序员。因为使用了AI编程,应用会更加复杂,代码行数会大增。这会导致,需要更多的程序员来进行审核。想象一下,AI五分钟生成的代码,一个程序员一天不见得能审核完。而要调试一个这样的应用中的bug,有需要占用程序员多少时间?因此,未来需要更多的程序员,而不是更少。

负面影响

有些东西可以使用AI生成,人工审核的方式。有些东西则完全不允许使用AI生成。比如博士论文。为了识别AI生成的论文,出现了专门识别论文是否AI生成的AI。这是不是有些是曾相识?的确,这个就和广告和广告过滤软件一样。属于创造出来的新的行业,新的需求。这很难说是件好事。有了AI之后,人类反而更麻烦了。

结论

目前的AI,要使用还是存在门槛的。在专业领域,必须有专业人士审核,AI才是可用的。特别的,在编程领域,AI的引入,会加重程序员审核的负担。应用越复杂,AI参与越深,程序员负担越重,应用越难调试。

腾讯视频、爱奇艺、芒果TV、哔哩哔哩在iPhone下投屏效果的小总结

评测

都说爱奇艺投屏有480p限制。昨天躺着,不想起来操作键盘鼠标,就用iPhone SE 3直接投屏Mac mini M1。因为办了京东的大会员,有腾讯视频、爱奇艺和芒果TV的会员。所以我就挨个试了一下。结果和传闻的不太一样。哔哩哔哩是普通会员,不是大会员。

腾讯视频

  • 最高支持1080p,不支持杜比视界的投屏。
  • 投屏时弹幕无法开启。
  • 有专门的投屏界面。
  • 在应用中投屏,和使用iOS系统的投屏,效果一致。
  • 投屏后,手机不再播放,可以锁屏。
  • 手机端投屏后无法调节音量。音量为固定值。

IMG_0364

爱奇艺

  • 在应用中投屏,只会投放声音,不会投放图像。
  • 使用系统的投屏,会镜像整个应用。手机端屏幕必须一直开着,一旦锁屏,投屏端的屏幕也会变黑。
  • 因为是完全镜像,弹幕也是支持的。
  • 可以通过手机端调节音量来影响投屏端的音量。
  • 视频支持应用的所有分辨率,目前最高可以开到“帧绮映画4K 杜比”。

截屏2023-01-31 17.22.57

芒果TV

  • 芒果TV的投屏十分不稳定。使用应用内的投屏,有可能投屏成功。如果投屏不成功,手机投屏界面出现,但是被投屏端无画面,那么可以通过切换集数来激活投屏。
  • 使用系统的投屏大概率不会成功。出现的可能是只有声音,或完全卡住,切换集数也会无效。
  • 芒果TV限制分辨率为576p,即1024x576分辨率。
  • 可以通过手机端调节音量来影响投屏端的音量。
  • 投屏后没有弹幕。
  • 有专门的投屏界面。
  • 播放时手机端可以锁屏。

IMG_0365

哔哩哔哩

  • 应用的投屏只能投屏到专有设备,因此只能使用系统投屏。
  • 使用系统投屏可以正确开启投屏。投屏后,手机端变成投屏界面。
  • 投屏不限制清晰度,清晰度和手机端一致。
  • 不能锁屏,锁屏后声音正常,画面会卡住。
  • 可以通过手机端调节音量来影响投屏端的音量。
  • 投屏后有弹幕。

IMG_0368

结论

从效果上讲,效果最好的是爱奇艺和哔哩哔哩,其次是腾讯,芒果TV最差。综合来看,最好用的是腾讯,因为可以锁屏,是最省电的投屏。分辨率有1080p,也已经足够使用。

那么网上流传的爱奇艺的限制呢?

上面文章中没有提到爱奇艺投屏时的480p的限制啊。难道这是个谣言吗?其实也不是,但是我最初操作的时候,的确没有遇到这个限制。不过后来,在我遇到芒果TV投屏失败的时候,想到可以用别的应用先把投屏状态“重置”一下试试看。结果打开爱奇艺,就遇到了传言中的投屏480p限制。

也就是说,只有在其他视频软件投屏之后,再不关闭投屏的情况下,再打开爱奇艺,才会遇到这个投屏限制。如果是直接在系统中开投屏,爱奇艺的投屏是没有这个限制的。

IMG_0375

IMG_0376

倍思Encok头戴式蓝牙耳机D02 Pro简单评测

评测

IMG_0337

我本来是不需要蓝牙耳机的。因为我已经有OPPO的Enco X了。不过,入耳的耳机戴久了,耳朵里会发痒。因此我打算再买一个头戴的蓝牙耳机。

因为不需要主动降噪功能,因此只需要买最基本款的就可以。在京东自营里看了一圈,最终决定买倍思的这款D02 Pro。选择倍思的原因,主要是因为我的设备大部分都是苹果设备,而倍思在苹果配件的开发商里,还是比较知名的,我觉得它的东西对于苹果的设备兼容性不错。

不过万万没想到的是,最终就是在这里翻了车。

优点

配对

单独把配对拿出来讲,是因为这款的耳机有个很有用的功能,它能够同时待机两台设备,是同时待机,而不是记住两台设备,然后手动切换那种。它是同时待机,后发声的设备会顶掉前面发声的设备,然后后发声的设备停止播放后,之前发声的设备还能继续之前的播放。一切都是自动,不用用户手动操作耳机。

比如,我是同时待机iPhone和Mac mini。iPhone通过QQ音乐放歌,如果我想使用Mac上的Siri,我只需要键盘按Siri的快捷键,然后Siri就会弹出,此时,iPhone的QQ音乐会被自动暂停,而且停止播放,并等待我的语音输入。当我说完话之后,Mac上的Siri进行反馈,反馈结束后,iPhone上的QQ音乐又会自动播放。这样很方便。

连接两台设备的方式,就按照说明书上的操作就行。不过,说明书说,两台设备全部配对完成后,打开第一台设备的蓝牙,就会自动连接。我这里测试是不会。需要耳机关机再开机才能同时连接两台设备。

耳机电源开关

之所以叫电源开关,而不是电源按钮。是因为它这个的确是个开关,是有两个状态的,可以推上推下的开关。这使得它的开关机非常方便。不像有的耳机,把电源开关整合到播放/暂停键,然后需要长按3秒才能开关机。

音质不错

重音很好,其它中规中矩。

电池电量强

标称是50小时,我昨天用了一下午,今天又用了一会儿,到现在电量还是100%。

佩戴舒适

这款算是包耳式。我的头比较大,把调节放到最大,带上也还可以。

缺点

没有状态检测

摘下耳机后,播放不会自动停止,耳机还在播放声音。因此,它应该也是没有什么一段时间没信号就自动关机的功能。这应该就是为什么它的开关机那么方便。主要这实在是个常用功能。

连接Mac电脑时声音时断时续

连接Mac mini M1 macOS Ventura 13.1时,最初的配对就很费劲,找到之后点连接,第一次没成功,第二次才成功。然后用QQ音乐放歌,声音会断断续续,十分频繁。而且这个断断续续和距离也没啥关系,因为我距离电脑不足1米。

结语

倍思D2 Pro,更适合连接iOS/iPadOS设备。如果你没有连接电脑的需要,购买这款耳机还是可以的。而我,必须将它退掉了。

macOS备份策略(2023修正版)

技术

长久以来,我一直同时使用时光机和CCC(Carbon Copy Cloner)来对我的系统进行备份。这种双备份的策略能够兼顾备份和恢复的效率,同时还能支持文件的多个版本进行恢复。

最近,我从Intel版本的Mac,过渡到了苹果芯片的Mac。苹果芯片的Mac,对于很多方面进行了改变,这导致原本的备份策略不再完全适用。因此,写下此文进行小结。此文分Intel芯片篇和苹果芯片篇。

Intel芯片篇

时光机

无论你是使用何种备份方式,时光机都是首要推荐的。不仅是因为它是系统自带的,完全免费,而且它真的好用。

使用时光机备份,只需要打开时光机,选择合适的备份磁盘就可以了。相比较于网络备份,我更推荐使用移动硬盘。因为后者的备份/恢复速度更快。有条件的,可以直接使用移动固态硬盘进行备份,这样恢复的时候,你能体验到飞一般的感觉。

时光机的另一个主要功能,是用于单独文件/文件夹的恢复。只需要点击时光机,选择要恢复的时间,然后选择指定的文件或者文件夹,最后选择恢复就可以了。

CCC

CCC是我常用的备份恢复工具。我将它设置为每天上午七点半自动备份。相比于时光机,它的优势是恢复系统的时间更短。另外,通过传统模式备份的CCC备份,包含完整的系统,可以直接从备份盘启动。

CCC备份的问题是,传统模式备份的CCC备份,包含的系统是不会随着源盘的系统进行升级的。如果你想将系统也同时升级,就只能格盘重新运行一遍全新的传统模式备份。

苹果芯片篇

时光机的部分参考Intel芯片篇,不再赘述。

CCC

苹果芯片的Mac从外置硬盘启动时,修改了启动策略。对于苹果芯片的Mac,要想从外置硬盘启动,Mac的内置硬盘必须包含完整的系统,然后使用内置硬盘系统中的管理员账号授权,才能从外置硬盘启动。

这直接导致了,苹果芯片的Mac,是无法直接从外置硬盘启动系统的。这样,在外置硬盘保存完整的系统并用于单独启动的可能就变小了。为此,CCC也在文档中说明,在目前的Mac中,相对于传统备份方式,更推荐标准备份。标准备份只备份所有数据,不包含操作系统本身。因此不能用于单独启动,但是因为苹果芯片的Mac在系统挂掉的情况下,本来也不能从外置硬盘启动,因此可以说是没啥影响。

所以,如果你使用的是苹果芯片的Mac,并且没有多系统的需求。那么直接使用CCC的标准备份就可以了。如果你需要使用多个版本的Mac,那么还是使用传统备份,格式化硬盘,然后备份完整的系统。这样在内置系统完整的情况下,还是可以多系统启动的。

2023年1月31日更新

这两天遇到了一个新情况。之前原本能够成功启动的移动硬盘里的macOS Ventura无法启动了。并且重新制作也无法启动成功。没办法,我写了邮件给CCC,询问原因。

CCC的客服回复说,就目前M1芯片的苹果电脑。CCC的传统备份,仅支持备份完成之后立即使用这种形式。不再推荐长期使用这种方式进行备份,并随时准备从外置硬盘启动的情况。

有鉴于此,今后CCC的备份,推荐默认的备份方式。不再推荐传统备份的方式。传统备份,仅在大版本改变时推荐。即比如macOS 13升级到14之前,可以用传统备份,保存一个macOS 13的版本,单独保存。这样,可以双启动。

截屏2023-01-31 20.18.12

为了咖啡!我的淡炼乳寻觅之旅…

随笔

一直以来都是速溶黑咖啡➕方糖,偶尔用牛奶替换开水,再加入一些可可粉。但是牛奶每次都要单独加热,喝起来不方便。

偶然想到快餐店提供的咖啡有提供小盒的奶油,可以放到咖啡里。上网查了一下,原来那个东西叫炼乳。于是打算下单体验一下。

首先相当的还是优先支持国货。查到熊猫是国货炼乳的大品牌。于是在京东下了一单,买了少量试试。

结果一试就发现了问题。这个熊猫的炼乳是含糖的。而且喝起来感觉味道不够纯正。

上网继续查,原来炼乳又分甜炼乳和淡炼乳。于是又去搜淡炼乳。一开始没有找到小包装的。于是买了号称香港大排档都在用的荷兰产淡炼乳。

这个荷兰产的淡炼乳让我一言难尽。它的确是我在香港大排档喝到过的那种。不过,它恰恰是我最讨厌的那个味道。当年我去参加同学在深圳的婚礼,提前去了几天,先去的香港,离开香港之前,去了一个大排档吃午餐,附送的有可乐和奶茶可选。我没喝过奶茶,就选择了奶茶。结果那个奶茶特别膻。我喝了一口就放下了。之后的很多年,我都没有喝奶茶的欲望。而这个荷兰的淡炼乳就是那个味道。

咬牙喝光了这三罐荷兰产的淡炼乳。我又在淘宝上搜索。这次找到了新的品牌,还是小包装的。雀巢的。货到了。使用的时候我尝了一下,有甜味儿。看配料表,有白砂糖。中招了,这款还是含糖的。

也许炼乳这种东西在我国不常见。用淡炼乳搜索,还是会搜到很多甜炼乳的商品。需要看配料才知道它是哪种。

不过还好,这款放到咖啡之后,咖啡基本还是没啥甜味儿,和快餐店的差不多。所以,如果价格合适,我还是会回购的。

当然,下次我也许还会尝试再找真正淡炼乳。寻觅之旅尚未结束……

奶茶

这款炼乳用来做奶茶也不错。只需要红茶+开水+雀巢炼乳即可。成果如图:
IMG_0329-1512

路由安装ShellClash后,设置方面的一些小结

技术

这段时间一直使用路由翻墙,重中之重是ShellClash的各种设置。设置好了,一切正常,设置冲突,可能就上不了网了。我并没有所有的设置都尝试过,因此,这只是我体验过的部分设置。

ShellClash的能力和限制

ShellClash可以代理TCP和UDP的流量。TCP的流量可以通过转发和TUN的方式,UDP的流量只能通过TUN的方式,但UDP必须是通过域名访问,直接通过IP访问的ShellClash会略过不处理。

模式、内核和设置

ShellClash的模式、内核和设置,是彼此相关的,你在设置时需要仔细阅读说明,考虑到他们之间的匹配性。

Redirect模式、官方内核、redirect DNS运行模式

官方内核占用的资源最小,但是功能也最精简。仅支持redirect模式和redirect DNS,能够代理TCP流量,对于UDP流量不做处理。

混合模式、Pre内核、fake-ip DNS运行模式

Pre内核功能更多一些,因此也占用更多的内存。除了可以代理TCP流量,UDP流量也可以通过TUN的方式进行代理。需要注意的是,此时必须选择fake-ip的DNS运行模式,不然UDP的流量还是无法代理。

TUN模式、Pre内核、fake-ip DNS运行模式

和上面的类似,但是TCP流量也不再使用转发,而是同样适用TUN的方式。

使用这个模式的时候,Telegram会上不了网。这是因为它是采用IP直连,会被TUN给略过。可以在Telegram的设置里,手动指定代理,方法就按照原的socks5的方式进行设置就可以。
此模式下,如果Firefox无法上网,可能是因为你同时安装了AdGuard应用。可以在AdGuard中,将Firefox设置为不过滤,然后在Firefox中使用AdGuard插件即可。

定时设置

刚开始启动时,ShellClash占用的内存是最小的,随着代理的增多,消耗内存逐渐变大。我们可以通过重启ShellClash的服务来释放内存,以免内存占用过多导致路由出现问题。我设置为每天3点自动重启ShellClash服务,因为那时我一般都在睡觉。

其他

ShellClash还有其他的一些模式和内核,但是由于我都没有尝试过,就不进行说明了。另外,本文针对的是1.6.8内测版。

Mac睡眠时经常异常唤醒问题的处理

技术

问题

最近从英特尔芯片的iMac 5K,换成了苹果芯片的Mac mini。一切都好,就是电脑在睡眠之后,经常会异常唤醒。表现为显示器由黑转亮,同时显示为无信号;键盘背景灯变亮;外置机械硬盘启动,发出噪音。然后几秒后,电脑又睡眠了。这个过程在电脑睡眠不久就会出现,而且会连续多次出现。

这个问题对于Mac mini这种无电池的台式机还算是小问题,最多就是有点儿烦人,费些电。但是如果是使用电池的Macbook,问题就严重多了。论坛上甚至有人反馈说,自己的电脑的电池电量,一小时就耗光了。

处理

确定了问题,就要研究如何处理。网上有很多种说法。甚至苹果自己也专门为这个问题开了技术说明。

如果 Mac 意外睡眠或唤醒

你可以先尝试使用苹果的提供的方法,如果还是没能解决你的问题。你再来使用我的方式。不过,我更建议你先使用我的方式进行调查,确定原因了之后,再使用苹果的或我的方式进行处理。

分析问题

网上对于这个问题的分析有多个思路。比如利用各种日志,通过命令行过滤来查询是什么原因唤醒了系统之类的。这些方法能查到原因,但是那些原因,一般都写得很技术,往往需要上网去查是什么意思,而且指向虽然有了,但是好多却不具备可操作性。

这里,我们采取更直接的方式,直接使用pmset来进行电源设置的查询。

我注意到Ventura下M1芯片的Mac min的节能设置中,并没有Power Nap的选项。我以为是Ventura的原因,毕竟我用M1不久。但是后来我在论坛上看到,有网友指出,苹果在M1芯片的Mac,移除了Power Nap的选项。我猜测,苹果大概是认为M1芯片的Mac足够省电,所以就把这个选项移除了。保持默认开启状态。

这个是我目前正常,没有异常唤醒状态的电源设置

zhaoxin@zhaoxins-Mac-mini-M1 ~ % pmset -g
System-wide power settings:
Currently in use:
 disksleep            10
 powernap             0
 womp                 1
 networkoversleep     0
 sleep                1 (sleep prevented by powerd, mds_stores)
 Sleep On Power Button 1
 ttyskeepawake        1
 tcpkeepalive         0
 autorestart          0
 standby              0
 displaysleep         10

每个选项的具体含义,可以参考下面的链接。

pmset
另外提一下第8行的sleep项,如果你的系统无法睡眠。那可能是有应用阻止了它睡眠。你可以看看这一行括号里的应用。这些应用都是可能阻止系统睡眠的。注意,是可能,而不是一定。所以你可以先尝试将能关闭的应用先关闭了,然后再来重新执行pmset -g这个命令,看看是不是生效了。然后再次尝试睡眠。

我的Mac mini,因为是从英特尔平台的系统迁移过来的,所以powernap默认时关闭的,如果是全新安装的系统,这一项应该是开启的。此外tcpkeepalive默认是开启的。在我的系统中,这一项的开启是导致系统的在睡眠后还被频繁唤醒的主要原因。

我的理解是,当系统睡眠后,如果tcpkeepalive还开着,那么系统就会因为各种通知唤醒。同时,由于苹果系统中的一些bug,一些可能具备网卡功能设备,比如各种USB设备(因为存在USB网卡这种设备),也能将系统唤醒。比如,我就在日志中发现,系统被我的M.2的外置移动硬盘唤醒过。

sudo pmset -a tcpkeepalive 0
sudo pmset -a powernap 0 // 如果有需要的话

现在再睡眠你的电脑,应该就不会有异常唤醒了。

New macbook Pro M1 chip waking when asleep with log "SMC.OutboxNotEmpty" wake reason

苹果芯片版macOS虚拟机的安装方法

技术

改用苹果芯片的macOS之后,连虚拟机都不会装了。一开始用VM Fusion,提示架构不对。于是又安装了Arm64的VM Fusion技术预览版,还是提示架构不对。

后来理解了,原来之前安装时一直用的pkg格式的安装包也不能用了,因为它是x86架构的。需要下载IPSW格式Arm版专用的。

虚拟机换成UTM,下载Monterery的IPSW刷机包。这次终于安装上虚拟机了。而且这个虚拟机占用还挺小了。我分配了4GB的内存,100GB的磁盘空间。结果运行虚拟机的时候,我的16GB内存的Mac mini居然都不需要启用交换分区。证明这个虚拟机内存占用还蛮少的,然后CPU的占用率也才50%,风扇也没转。看起来这个UTM还是不错的。

之所以安装这个,是因为有时候我向苹果报bug的时候,需要进行系统之间的对比。安装一个虚拟机,就不必经常在不同系统间进行切换了。

需要注意的是,安装好虚拟机之后,需要第一时间跑到时光机和CCC里,把虚拟机所在的文件夹添加到排除文件里,不要进行备份。因为这个文件夹有100多G,每次变动,这100多G就需要重新存储,所以还是不要备份了。需要的时候我重装一下就好了。🐒