編程開發

Kotlin/Android 偵測文字編碼

最近在做 Android的 版本的落格輸入法,在導入碼表的時候我犯了難。因為落格輸入法的碼表是支援 utf8 和 gb18030 兩種編碼格式的,甚至我自己內建的碼表也是混用這兩種格式的。在 Swift 或 Python 中,如果你使用錯誤的編碼去解碼文本,就會收到報錯。利用這個辦法,我可以輕鬆實現[……]

點擊跳轉以繼續閱讀

macOS 使用 atos 命令解析任意崩潰記錄和採樣數據

最近落格輸入法遇到了幾個比較難以復現的問題——關鍵是它不會導致崩潰。這就讓崩潰統計功能根本無效,具體表現為在某些情況下輸入法會突然卡住幾秒,叫人十分惱火。後來我想到,macOS自帶活動管理器中,有個“採樣”功能,可以看到對應進程當前的執行(調用)狀態,那我是不是可以用它來分析錯誤原因呢?

在日本[……]

點擊跳轉以繼續閱讀

clang: 警告: libstdc ++已棄用; 遷移到具有OS X最低部署目標的libc ++ 10.9

平時,你會在安裝某個 Python 包時遇到這個錯誤,這個包肯定是一個包含了 C++ 代碼的包。

這是由於 macOS 更新後出現的不兼容,一般來說,這個包的維護者應該已經對這個特殊情況做出了兼容:

這樣在 macOS 上就[……]

點擊跳轉以繼續閱讀

Python 實時檢測自身內存佔用

最近在做文本統計,用 Python 實現,遇到了一個比較有意思的難題——如何保存統計結果。

直接寫入內存實在是放不下,十幾個小時後內存耗盡,程序被迫關閉。如果直接寫入數據庫吧,每次寫入又太慢了,本來就十幾個小時了,這樣下去就要往星期上數了,也不是個辦法。

最後,我想到了一個兩者兼顧的方案[……]

點擊跳轉以繼續閱讀

Swift Python 互通 Json 數據簽名

最近很流行自簽證書進行 HTTPS 解密,然後就有不少人通過修改蘋果的內購回執實現對 App 的破解。實際上驗證購買應該是 App 連接服務器,服務器來和蘋果的服務器進行通信,然後將結果發送給 App 的——但不少開發者(包括個人開發者以及企業開發者)懶得去專門維護服務器,所以直接用 App 和蘋果[……]

點擊跳轉以繼續閱讀

正確使用 PIP 安裝 Python 包 避免 TypeError: “模塊’ 對象是不可調用

在此之前,我一直是這樣在 macOS 上安裝和使用 pip 的:

後來,這個方法失效了,變成了這樣:

終於有一天,pip 提示我它需要更新,於是:
[克雷[……]

點擊跳轉以繼續閱讀

從 cns11643 中文標準全字庫生成倉頡和速成官方碼表

一直以來,我對倉頡速成這對難兄難弟是很有意見的……網上流傳的碼表版本繁多,但名字都叫“倉頡”,和五筆對比起來,好歹五筆還分個 86 和 98,再新一點還有 新世紀 等等,但倉頡沒有,不論什麼版本的倉頡,都叫“倉頡”。

這就很尷尬,每個人用的倉頡碼表都不一樣,但不一樣在哪裡,他自己也不知道。

總[……]

點擊跳轉以繼續閱讀

落格輸入法是如何處理按鍵消息的

要做一款移動設備上的軟鍵盤,那麼怎麼處理用戶的點擊位置,就是你遇到的第一個難題,在這個問題上,我也走了很長的路。

我把落格輸入法開發以來的觸控邏輯大致分類為三個階段,現在分別來講講設計思路,希望能夠對你有所幫助。

第一代觸控引擎

顯然,對於一個初學者來說,沒什麼比系統控件更好用的了,功能全[……]

點擊跳轉以繼續閱讀

Swift 裡的數組去重方案

在使用 Swift 進行開發落格輸入法時,我遇到了一個很有意思的問題——去重

眾所周知,輸入法的候選在計算出來後總會有可能是重複的選項(比如碼表和詞庫中都有某個詞,也許他們編碼不同,但字是一樣的之類),這時候就需要去重,但又要保持候選的先後順序不變。

別人的解決方案

如果你去網上找,那麼[……]

點擊跳轉以繼續閱讀