肇鑫的日常博客

肇鑫 / Owen Zhao

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

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

最新文章

iPad Pro维修篇

今天是12月2号。11月6号,我的iPad Pro 9.7突然无法充电了。

早上醒了,看到iPad的电量有些低,于是用小米移动电源2充电。结果没有熟悉的充电音,我以为是移动电源没电了,拿起来一看,满电。重新插拔,iPad没反应。这肯定是哪个坏了。

起床,用充电器充,没反应,连iMac 5K充,没反应。换线充。连iMac没反应,连移动电源没反应。连充电器,iPad噔的一声,然后提示“不在充电”。

等了几个小时,从不到10%,充到44%。这速度,聊胜于无。

这台iPad Pro是闲鱼上收的二手,用了也有几年了。屏幕左侧下部有斑,但是不明显。安装了最新的系统,速度还是很快的。我打算再用两年。

我最初怀疑是软件的问题,因为前一天刚好升级到了iOS 13.3 beta。用网上提供的办法,重启,强制关机,恢复设置,都没管用。后来我还从iOS 11.3 beta降回11.2正式版,还是不行。看来只能去维修了。

因为早就过保了,找苹果太贵,上网上查第三方。怀疑是尾插有问题,淘宝上有邮寄维修的,但是觉得不安全。于是按照配件搜,找到一个本地的维修商,叫什么苹果之家之类的吧。

第二天去百脑汇维修。到了之后,略微检测了一下,说可能是尾插的问题,但是没货。于是签了单子,把机器留下了。

第三天上午,接到电话,说是修好了。让我带着我自己的电源和线去试试。我带了两个充电器(一个小米18w,一个苹果12w)。结果到那里,两根线和2个充电器,无论如何排列组合,都是没反应。维修的工作人员都急了,说:“我的确换了尾插啊。不信你看换下来的还在那里呢。”然后又用他的充电器试,结果的确能充。然后我用我的线连他的充电器测试,也能充。但是我质疑说:“我带了两个充电器,也不能都坏了吧?”不过没办法,既然他的充电器能充,我决定按照他的建议去买一个充电器。

到了楼下的品胜,买了一个10瓦的充电器。这个充电器其实不适合苹果,后面我会说。

回到家,开始琢磨充电器和线的匹配。目前手上有3个充电器,紫米18w、苹果12w、品胜10w,小米移动电源1个,而之前我常用的有3根线,都是苹果原装线。但是这三根线,只有1根可以连品胜的充电器给iPad充电。我翻箱倒柜又找出来一根外皮破掉的原装线,这个线虽然破了,但是充电是正常的。还找到一根当初买小米移动电源时送的线,这个线也能充电,但是发热很大。

综合结论:就是好用的完整的线太少了。需要买线。于是我从京东买了两根标注为MFI的Anker线。

11月9号一大早,京东把我的线送来了。一个惊喜,一个失望。

惊喜是新买的Anker的线,不仅可以连品胜充电器给iPad充电,另外,连另外两个之前无法充电的充电器,也能给iPad充电了。我特意测试在电量不足50%的情况下,不同的线连接不同的设备的充电情况。结果发现,紫米18w,小米移动电源10分钟能充6%,iMac 5K和苹果12w能充5%,但是品胜10w只能充2%。后来我发现,原来可能品胜10w只能按照5w给iPad充电。

失望是,这两根线只有一根好用。另外一根,和我其它的现在不好用的原装线一样,只能给iPhone充电,连iPad没有反应。

于是我申请京东售后,要求换货。结果京东换货了来了。却没有带着线来。我联系京东客服,客服说,苹果的线材需要返回检测后才能换货。我说,那我还不如退货再买一个呢。你这个规定有问题。于是换货变成了退货。我手里完全好用的线只有Anker这么一根。

一根线还是勉强够用的。但是我如果想用移动电源充电,就需要把线从充电器上拿下来。这有些不方便。

11月19号,我看到京东有促销Ecclus牌MFi的线,于是买了两根。结果这两根线完全失败。都是iPhone能充,iPad没反应。我开始觉得,可能是我的iPad现在对于A口转L口的线非常挑剔了。

11月21号,从京东买了瓦力18w套装,匹配的是C转L的线。这个充电器倒是可以给iPad充电,不过遗憾的是,它充电的速度太慢了,和品胜10w差不多,10分钟2%。好消息是,这证实了PD快充+C转L的线可以给iPad Pro 9.7充电。这个我之前在网上搜,都没人提过。

于是我上充电头网上看文章,发现要想给苹果设备快速充电,需要设备支持Apple 2.4A的协议。品胜和瓦力的充电器,应该都是不支持这个协议,才只能按照5w给苹果设备充电的。

11月22号,看到充电头有团购,买了绿巨能的1C2A的63w充电器。这个是支持Apple 2.4A协议的。26号到货后,发现一切都很美好,3个口都能给iPad快速充电。这个后面还是发生的新的问题,今天已经退货了。后面单独谈。

12月2号,退货绿巨能1C2A充电器,购买omthing PD 30W 1A1C充电器+C转L线套装。这个也是充电头的团购,

12月6号,到货了,结果充电器无法充电。线倒是能用。选择换货。

12月13号,收到新换的充电器。但是又有新问题,它的充电器支持Apple 2.4A协议。但是配和它送的C转L线却不支持(使用我自己的另一根线却可以,就是瓦力套装里的那根)。这个很让我诧异,之前我一直以为和线没有关系。

12月14号,退货omthing套装。

12月15号,闲鱼收了一个全新的京东京造65W单口充电器。

12月21号,收到了货。这次一切都好。这件事终于可以告一段落了。

维修后的其它问题

11月7号维修的,8号完成拿回来,晚上到家,发现屏幕翘起来了。9号又跑去,让维修的重新粘了屏幕。还特意放了一块胶。

但是回来没几天,还是有些翘。我上网查了一下,iPad更换屏幕之后,应该使用专门的双面胶封装,而不应该使用胶水。这个双面胶,就算在淘宝上单独买,也只要15元。我维修尾插花了300元,但是维修人员居然连双面胶都不给我用,估计也不完全是因为他小气,而是因为他干脆没有。因为据我的观察,来他家的,大部分都是iPhone换电池的和扩容的,修iPad的极少。

最后我11块9从淘宝上买了一个全包的硅胶壳,把整个屏幕套起来了。因为来回一趟要3小时,太麻烦。眼不见心不烦,我也懒得去了。

小事记

日期 事件
11.6 iPad Pro 9.7无法充电。
11.7 第一次维修。
11.8 修好了,取货。买了品胜的充电器。回来后发现线不行,买了两个Anker线。
11.9 收到Anker线,只有一根线好用。退掉一根线。再次去维修,因为屏幕没有粘牢。
11.19 买了两根Ecclus MFi认证线,均不好用。
11.21 购买瓦力18w充电套装。
11.22 瓦力18w能充电,但速度很慢。充电头团购绿巨能63w 2A1C充电器
11.23 退货Ecclus的线。
11.26 到货绿巨能充电器,当时很满意。发现A口在设备快充满时会断流。但是间隔较长,认为问题不大。
12.1 双口同时充电时,A口断流现象由几十分钟一次变成了几分钟一次。联系客服换货。售后客服已下班。
12.2 与客服沟通1个多小时,遭遇多个套路,最终由换货变成了退货。晚上,登上充电头团购新车,购买omthing套装
12.6 到货,充电器不能用,线能用,换货
12.13 换货完成,充电器配合送的线不能实现苹果2.4A快充
12.14 退货omthing
12.15 闲鱼收全新京东京造65W单口充电器
12.21 一切都好。这件事告一段落。

相关

iOS/iPadOS设备充电全面总结

绿巨能1C2A 63w充电器退货历险记,淘宝客服的套路与解法

Ubuntu 18.04下将Apache2多站点改为Nginx多站点,同时开启Trojan

技术

最近SSR实在太不稳定了。断断续续的十分难受。于是,趁着还能上的时间,查询新的翻墙方法。经过测试,决定使用Trojan的方式。

原理

Trojan原理

trojan原理

Trojan服务器获得HTTP请求,如果请求的格式正确,就返回代理的数据,否则就返回HTTP网页,这样在第三方看来Trojan就和一台HTTP服务器没区别。

虽然Trojan可以伪装为HTTP服务器,但是它的服务很基本,比如根本不支持虚拟多站点,只能伪装成一个站点。

因此,(为了省钱,)我们还需要另外搭配Nginx来使用。

Trojan+Nginx多站点原理

Trojan+Nginx多站点原理

HTTP访问Nginx,开启了预读模块的Nginx,会对数据流进行分析,如果访问的域名是Trojan预先定义的域名,就访问内部的Trojan端口。否则则访问Nginx的端口。有以下几点需要注意:

  1. Nginx的预读模块本身使用的是443端口,而Nginx模块的HTTP服务使用是4443端口。这是因为,我们需要外部访问服务器时,统一使用443端口,而在服务器内部,通过内部的端口进行中转。
    1. 对于外部(比如防火墙或其它类似设置),理论上我们只需要开启443端口。但是在实际使用中,我发现有些域名会自动跳转到4443端口,因此如果你遇到外部无法访问特定域名的问题,可以开放4443端口试试。
  2. Trojan默认跑在443端口,但是为了配合Nginx使用,需要修改到其它端口,我这里选的是4433端口。
  3. 这个原理,整体来说,就是在外部看来,统一访问443端口。然后Nginx的预读,会分流转发到Trojan和Nginx。

安装

卸载Apache2

sudo apt remove apache2
sudo apt autoremove

删除apache2,之后删除掉不再需要的依赖。

安装Nginx

Ubuntu 18.04自带的Nginx本身没有开启ngx_stream_ssl_preread_module。我们安装Nginx官方提供的版本,这个版本开启了所有的可开启扩展。

sudo vi /etc/apt/sources.list

在文件最下面添加并保存

# for latest nginx
deb http://nginx.org/packages/mainline/ubuntu/ bionic nginx
deb-src http://nginx.org/packages/mainline/ubuntu/ bionic nginx

添加服务器签名,签名在这里nginx_signing.key。点开前面的网页,复制里面的文本内容,保存到nginx_signing.key。不要直接下载。因为是网页,不是纯文本。

sudo apt-key add nginx_signing.key

安装Nginx并开启防火墙端口

sudo apt update
sudo apt install nginx
sudo ufw allow 'Nginx Full'

你现在可以打开浏览器,然后输入vps的ip地址,如果看到了nginx的欢迎界面,就代表nginx配置成功了。

nginx: Linux packages

配置Nginx多站点

假设你有一个网站叫example.com,网页位置在/var/www/html/example.com/html。新建一个配置文件。

sudo vi /etc/nginx/sites-available/example.com

内容如下

server {
	listen 80;
	listen [::]:80;

	server_name example.com www.example.com;

	root `/var/www/html/example.com/html;
	index index.html;

	location / {
		try_files ``uri ``uri/ =404;
	}
}

我们不用添加443端口,因为等下添加证书的时候,Certbot会帮我们自动生成新的配置文件。

将网站配置生效

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enable
sudo systemctl reload nginx

参考上面的步骤,添加你所有的站点。之后,再额外添加一个站点,用于Trojan的识别。

最后添加的站点,一定要是一个不需要用的二级域名,而不要使用一级域名。因为我发现Nginx的预读有bug。如果你使用了一级域名,那么它的二级域名也都会匹配。这将导致错误。
一级域名指的是example.com这种,二级指的是mail.example.com这种。

这里我们假设额外配置一个叫tro.example.com的二级域名站点。

为Nginx添加SSL证书

通过浏览器访问网站https://certbot.eff.org,选择Nginx和Ubuntu 18.04,安照网站的提示安装certbot。

sudo apt-get update
sudo apt-get install software-properties-common
sudo add-apt-repository universe
sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update
sudo apt-get install certbot python3-certbot-nginx

申请证书

sudo certbot --nginx

按照提示进行操作。完成之后,你再通过浏览器访问网站,你会发现已经是https的了。

安装Trojan

sudo bash -c "$(curl -fsSL https://raw.githubusercontent.com/trojan-gfw/trojan-quickstart/master/trojan-quickstart.sh)"

修改Trojan配置

sudo vi /usr/local/etc/trojan/config.json

找到"local_port",将443,改成4433或者你希望的端口。
找到"password",修改为你想要设置的密码。
找到"ssl",将"cert"设置为“/etc/letsencrypt/live/example.com/fullchain.pem"。将"key"设置为"/etc/letsencrypt/live/example.com/privkey.pem"。

保存并退出。运行Trojan。设置为开机启动。

sudo systemctl start trojan
sudo systemctl enable trojan

配置Trojan+Nginx共存

sudo vi /etc/nginx/nginx.conf

在events和http两段之间,插入

stream {
    map ``ssl_preread_server_name ``name {
        tro.example.com trojan;
        default nginx;
    }
    upstream trojan {
        server 127.0.0.1:4433;
    }
    upstream nginx {
        server 127.0.0.1:4443;
    }
    server {
        listen 443;
        listen [::]:443;
        proxy_pass $name;
        ssl_preread on;
    }
}

保存,修改之前设置的所有网站的设置。打开/etc/nginx/sites-enable/中所有的网站的配置,将所有的443端口,改成4443端口,然后保存。

sudo systemctl reload nginx

在好多支持Trojan的客户端中,域名是可选的。但是由于我们需要使用域名来进行跳转,所以在设置客户端时,域名是必填的,必须填写为tro.example.com
Module ngx_stream_ssl_preread_module

开启BBR

sudo echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
sudo echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
sysctl -p

Ubuntu 18.04/18.10快速开启Google BBR的方法
19.04开始,BBR是默认开启的,不用单独开。

其它

Ubuntu 20.04下安装Nginx与Trojan

ClashXR配置Trojan

macOS Sonoma默认开启磁盘静态加密

技术

昨天将主力系统从macOS Ventura升级到了Sonoma beta 5。今天时光机备份的时候,弹出了一个通知,提示:正在将加密磁盘备份到非加密磁盘。

我很诧异。很多年前,我因为好奇,开启过macOS的磁盘加密功能。后来系统坏掉了,加密的磁盘怎么也进不去,丢了不少资料。打那个时候起,我就不再使用磁盘加密功能了。因为在我看来,加密磁盘对我自身造成的麻烦,大于它给的收益。

所以,我的磁盘是没有使用加密的。难道是升级到新系统之后的那些设置里,有有关磁盘加密的,我没注意就激活了吗?带着这个疑问,我打开设置进行查找。结果“文件保险箱”功能并没有打开,所以我的磁盘并没有全盘加密。

然后我又查看磁盘状态,结果看到了这个:已加密的设置是“否(已静态加密)”。

disk_encryption

我不懂什么是静态加密,于是查询了一下。按照我的理解,这个静态加密,比较类似iPhone上的默认加密。就是当用户没有登录的情况下,磁盘数据是被保护的。只有登录之后,磁盘上的数据才被解锁,才可以访问。

作为对比,我又看了我另外一台还停留在Ventura下的Mac。它的磁盘状态对应的已加密,只有一个简单的“否”。

结论:macOS Sonoma增加了磁盘的安全性。除了以前的文件保险箱功能之外,还提供了默认的静态加密。当然,我不清楚这个特性是不是苹果芯片的Mac独占的,还是英特尔芯片的Mac也有。

macOS Sonoma 14 beta 安装在外置硬盘的方法

技术

WWDC2023来了,新系统也来了。不过安装新系统到外置硬盘却出了问题。经过一天的尝试,我终于解决这个问题。如果你有幸看到这个文章,你也许可以节省掉一个购买雷电3硬盘盒的钱。

安装方法

  1. 下载macOS 14的安装包。
  2. 解包,来到应用程序,找到installer,双击安装。
  3. 选择预先格式化好的磁盘分区进行安装。

这里第一个问题就是苹果并没有提供installer的安装地址。苹果官网只提供了恢复固件。我们可以从这里下载:

https://mrmacintosh.com/macos-sonoma-full-installer-database-download-directly-from-apple/

如果你使用的是usb-c的硬盘盒,一定要看这个!

macOS在使用外置的usb-c的硬盘盒时,如果你同时连接的Mac的usb-c接口,那么有概率安装系统之后,却没法从外置硬盘启动。解决办法是,换线,连接Mac的usb-a接口,然后重装外置硬盘的系统。

  • 如果是usb-c的外置硬盘
    • 连接type-c接口的Mac出现问题
    • 更换type-a接口的Mac,重新装macOS,问题解决
    • 如果是没有type-a的Mac,那么只能使用雷电3接口的硬盘盒。

最后的最后

虽然usb-a的兼容性更好,但是usb-a接口在Mac下的速率只有5Gbps,所以,在发现macOS可以正常启动之后,我尝试将线换回去,重新连到usb-c接口。结果这次,还是能正常启动。而且速度是10Gbps的。

虽然理论上10Gbps是5Gbps的二倍,但是实际使用中,是接近3倍。900MB/s和不到350MB/s。因此强烈建议macOS安装好之后,将线换回去c2c的。

How to install macOS on an external drive

《漫长的季节》,全员演技在线

今天终于把《漫长的季节》看完了。虽说只有12集,除了第10集只有45分钟,剩下的每集都在1小时以上。所以这12集,实际上有20集以上的时长。

看完最后一集,了解了全部的故事。我可以站在更高的角度,来统揽全局。我思考,如果我是剧中的某个人物,是否能够改变他或她的命运。沈墨、王洋,年纪轻,不够成熟,他们的命运很难改变。但是王响,他其实是可以改变其它人的命运的。

比如当他发现厂长的生活作风问题时,如果能举报,厂长也许就会被早日拿下,这样剩下的悲剧就都可能避免了。

人物的命运,是由人物的性格决定的。《漫长的季节》整部剧,演员演技在线,剧情合理,全剧看下来,让人感觉到深深的遗憾。虽然坏人死得是罪有应得,但一些普通人的生活总是充满了艰辛。

《人生路不熟》简评(有剧透)

电影

想看一部轻松搞笑的电影,于是从五一的电影里选择了这部。结果超乎意料的好看。😄

原本以为乔杉的演技这次砸锅了。因为他演的女方的岳父,自私、市侩,也没有表现出对于女儿的慈爱,感觉像是喜剧演员努力想演一个严肃的人物,结果既不搞笑,又别扭。但是后面的情节,才知道,原来是他年轻的时候被油耗子打怕了,所以才变得自私、市侩,如果从这个角度看,那么这个人物的表演还算是到位的。

别的就不多说了。整体的感觉和你好李焕英比较像,但是片长比较短,只有100分钟。

简单比较一下Mac mini M1的视频转码方案

评测

今天好奇,尝试了一下Mac mini M1的视频转码。将纪录片《60分钟》从MPEG2的ts文件,转换为H264或者HEVC的mp4。分辨率都是1080p不变。看看哪种方法最有优势。配置:M1,内存16GB,512G固态硬盘。

总结表格如下

应用 转换为 转换使用 CPU空闲 GPU占用 转换后大小 用时
Finder H264 CPU+GPU 70%-75% 35% 3.52G 8分钟
Finder HEVC CPU+GPU 74%-80% 37% 2.95G 7分钟
HandBrake H264 CPU,Fast 低于5% 0% 0.99G 17分钟
HandBrake H264 CPU+媒体引擎,CQ 22 5%-45% 0% 0.21G 7分钟
HandBrake H264 CPU+媒体引擎,CQ 73 7%-53% 0% 3.21G 7分钟
HandBrake H265 CPU,Fast 低于5% 0% 0.59G 37分钟
HandBrake H265 CPU+媒体引擎,CQ 22 5%-45% 0% 0.29G 7分钟
HandBrake H265 CPU+媒体引擎,CQ 73 5%-45% 0% 2.85G 6分钟

结论

  • 苹果自带的转换对于系统的影响最小。如果你想在处理其他事情时,同时进行转码,就采用这种方式。因为对于CPU和GPU都有很多剩余,其它的事情也会很流畅。缺点就是选项太少,不能定制。
  • 如果你需要更快速的编码。那么就使用HandBrake的CPU+媒体引擎转码的方式,它的速度是最快的。而且还有多种格式和质量可选。缺点是CPU占用很高,并且没有利用GPU,你最好停下来,让它单独完成转码。
  • 如果你需要更为细腻的调节和效果。那么可以使用HandBrake的CPU转码。它最慢,不过理论上效果应该是最好的。缺点就是慢啦。

一点疑惑

都说M1没有媒体引擎,但是HandBrake用VideoToolBox编码的时候,CPU不满载,GPU负载为0,并且编码的确比CPU单独编码更快的情况要如何解释呢?我没法解释,只能认为M1同样存在媒体引擎。

苹果芯片Mac系统降级避坑指南

技术

两天重装了4次macOS,终于搞定了苹果芯片Mac的降级。

起因

升级到macOS 13.3之后,蓝牙相关的好多写作功能都失灵了。比如iPhone热点、接力、手表解锁Mac等。于是想要降级会13.2。

过程

最初的想法很简单。下载macOS 13.2.1安装包,制作安装优盘,然后覆盖安装即可。不过,覆盖安装的时候,提示不能降级。想使用时光机的时候,则提示,时光机不能直接降级,只能用于融合助手。于是只好格盘安装。格盘提示格盘之后会重启系统。

格盘之后的重启是个大坑

我跌进去了三次才最终发现这个坑。一开始,每次融合之后系统都是13.3,而不是13.2.1,我反复核对,发现我的安装盘没问题,选择的时光机镜像也是正确的日期。难道是苹果在后台自动升级了?

结果不是。原因是这个格盘之后的重启。虽然使用的优盘的恢复系统格式化的磁盘,但是重启后自动引导,不是优盘,而是系统默认的恢复。

与英特尔的Mac不同,苹果芯片的Mac不能通过长按键盘快捷键选择启动磁盘,而必须使用长按电源按钮的方式。
因为重启之后我没有长按电源按钮,所以就进入了Mac内置的恢复功能。
但是如果我长按了电源按钮,因为是重启而不是冷启动。电脑会在几秒后强制关机。然后需要再次长按,直到进入选择启动磁盘,然后选择优盘安装即可。

如何分辨是系统启动磁盘安装,还是优盘安装

最明显的是,系统启动磁盘安装是英文版,安装一开始提示还有2个多小时。而如果是优盘安装,安装界面是中文的,而且一开始提示的安装时间不到1小时。

后面就都一样了,不再赘述。