macOS application 的三种运行模式

通常,你不会遇到这个问题,直到你需要写一个后台程序……

我们都知道 macOS 有一个全局的 Dock,这个东西上会显示所有正在运行的程序,但如果你的程序是一个菜单栏小程序,或者是一个……输入法,那你肯定不想让这个 app 的图标显示的 Dock 上,因为这类 app 是要持续在后台运行的。

这时候我们就可以在 Info.plist 中写 [crayon-6629d5eaaa53597[……]

点击跳转以继续阅读

升级 macOS Monterey 后设备休眠半夜频繁唤醒问题

最近更新到了 macOS Monterey, 半夜总会被屏幕照醒,就觉得很诡异,以前也有过,但都是有通知的时候才会点亮屏幕,现在是没有任何理由的自己点亮,硬件还是那个硬件,那就应该是软件的锅了。

在网上查了一圈,先是找到了苹果官方的教程:https://support.apple.com/zh-cn/guide/mac-help/mchlp2995/mac

写的很详细,但显然是没有任何[……]

点击跳转以继续阅读

更新 Ruby 后 gem install 找不到 binary

我一直是用 rbenv 的,直到这次更新了 cocoapods 后,执行报错了,当然,目测应该是我的 ruby 环境太旧导致的,于是我尝试 rbenv install 3.0.2 ,但很遗憾,报错了,去 rbenv 的官方仓库看了看,上一个版本还是 2019年……好吧,放弃它,删掉所有的版本后,我发现其实我一直用 brew 装了最新版的 ruby,就直接用起来了。[……]

点击跳转以继续阅读

避免网站被恶意域名劫持

落格博客的服务器拒绝了该网站的内嵌

今天无意间发现了一批网站,如 http://b6x.net/ 现在你点开这个网站会显示“www.logcg.com refused to connect.”,当我第一次点开的时候我惊呆了……他竟然抄了我整个网站?!

这是一系列三位数域名网站,都是类似的操作。

等等,我发现了一点不对劲,首先这个网站外边有我博客本身并没有的白框……也就是说,这可能是个反代(反向代理)。

如果你还[……]

点击跳转以继续阅读

zsh 启用 bash * 星号通配符功能

最近发现服务器每次 apt upgrade 都非常慢,究其原因,还是一大堆不用的内核每次都要重新生成,清理的时候遇到一个问题,*号匹配不生效,每次都必须手动输入完整的内核名称才能将其卸载。

一通踩坑后发现,原来是因为我用了 zsh,而 zsh 默认是不支持 * 号通配的!要开启这个功能也很简单,找到你的 zsh 配置文件 vi ~/.zshrc [……]

点击跳转以继续阅读

为 UIKit 开启 Xcode Live Preview

使用 SwiftUI 的一大收益就是可以像 Flutter 那样对 App 进行热更新,改动了UI的代码,会直接反映在模拟器或者是真机中,大大提升了编写用户界面的效率,不用改1px,运行,各种点击,然后查看效果的循环往复。但现在使用 SwiftUI 还为时过早,毕竟还是有大量 iOS 12 设备在运行,想要做大众软件,那还是要支持的。

那么,有没有办法能让 UIKit 编写的软件也能用上实时[……]

点击跳转以继续阅读

macOS 运行和训练 Moses

Moses 官网其实是有 macOS 二进制包的,你不需要从源代码编译它们。但总之,由于 Moses 开发者已经不再用 Mac,所以他没办法更新,这导致了目前最新版(4.0)的代码中有一个bug,使得二进制文件不能直接使用,作者说“反正从源码编译也不是很难……”但总之,从 BigSur 上编译 Moses 已经几乎是不可能的了,各种奇怪的报错,令人头疼。

其实,我们是可以直接修正二进制文件中[……]

点击跳转以继续阅读

使用 Packages 创建支持 Apple M1 芯片的 pkg 安装包

使用高级设置修改 Packages 默认参数

苹果发布 M1 芯片设备已经有一段时间了,虽然我当时第一时间申请了 DTK 设备,但由于一些原因,直到苹果回收设备,我也没能亲手摸到。总之,落格输入法 macOS 还是成功靠盲打支持了 Apple 架构,即 arm64,根据用户反馈,效果还行。

直到有用户说虽然 app 是支持 m1 芯片的,但安装包不行——当运行 pkg 安装包时,系统弹出了 Rosetta 2……

虽然其实并不影响[……]

点击跳转以继续阅读

macOS 使用 atos 命令解析任意崩溃记录和采样数据

最近落格输入法遇到了几个比较难以复现的问题——关键是它不会导致崩溃。这就让崩溃统计功能根本无效,具体表现为在某些情况下输入法会突然卡住几秒,叫人十分恼火。后来我想到,macOS自带活动管理器中,有个“采样”功能,可以看到对应进程当前的执行(调用)状态,那我是不是可以用它来分析错误原因呢?

在和用户沟通后,我得到了一个类似这样的采样报告:
[crayon-6629d5eaaca5333865[……]

点击跳转以继续阅读