macOS application 的三種運行模式

平時,你不會遇到這個問題,直到你需要寫一個後台程序……

我們都知道 macOS 有一個全局的 Dock,這個東西上會顯示所有正在運行的程序,但如果你的程序是一個菜單欄小程序,或者是一個……輸入法,那你肯定不想讓這個 app 的圖標顯示的 Dock 上,因為這類 app 是要持續在後台運行的。

這時候我們就可以在 Info.plist 中寫 [crayon-6622b491bfec755[……]

點擊跳轉以繼續閱讀

升級 macOS Monterey 後設備休眠半夜頻繁喚醒問題

最近更新到了 macOS Monterey, 半夜總會被屏幕照醒,就覺得很詭異,以前也有過,但都是有通知的時候才會點亮屏幕,現在是沒有任何理由的自己點亮,硬件還是那個硬件,那就應該是軟件的鍋了。

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

寫的很詳細,但顯然是沒有任何[……]

點擊跳轉以繼續閱讀

更新 Ruby 後 gem install 找不到 binary

我一直是用 rbenv 的,直到這次更新了 cocoapods 後,執行報錯了,當然,目測應該是我的 ruby 環境太舊導致的,於是我嘗試 環境 安裝 3.0.2 ,但很遺憾,報錯了,去 rbenv 的官方倉庫看了看,上一個版本還是 2019年……好吧,放棄它,刪掉所有的版本後,我發現其實我一直用 brew 裝了最新版的 ruby,就直接用起來了。[……]

點擊跳轉以繼續閱讀

避免網站被惡意域名劫持

落格博客的服務器拒絕了該網站的內嵌

今天無意間發現了一批網站,如 http://b6x.net/ 現在你點開這個網站會顯示“www.logcg.com 拒絕連接。”,當我第一次點開的時候我驚呆了……他竟然抄了我整個網站? !

這是一系列三位數域名網站,都是類似的操作。

等等,我發現了一點不對勁,首先這個網站外邊有我博客本身並沒有的白框……也就是說,這可能是個反代(反向代理)。

如果你還[……]

點擊跳轉以繼續閱讀

zsh 啟用 bash * 星號通配符功能

最近發現服務器每次 apt upgrade 都非常慢,究其原因,還是一大堆不用的內核每次都要重新生成,清理的時候遇到一個問題,*號匹配不生效,每次都必須手動輸入完整的內核名稱才能將其卸載。

一通踩坑後發現,原來是因為我用了 zsh,而 zsh的 默認是不支持 * 號通配的!要開啟這個功能也很簡單,找到你的 zsh 配置文件 我們 /.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-6622b491c224511829[……]

點擊跳轉以繼續閱讀