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

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

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

第一代觸控引擎

顯然,對於一個初學者來說,沒什麼比系統控件更好用的了,功能全,速度也不慢,業務邏輯完善,所以,落格輸入法的第一代消息處理就是用的[crayon-67930ad8[……]

點擊跳轉以繼續閱讀

DF-dferh-01 中國區 Android 安裝 Google Play Store 後報錯 的 解決辦法

在使用 Android 設備時,如果你購買的是一台中國區單獨發行的定製版本 Android 設備,那麼很有可能你的設備中並不內置谷歌套件,比如 Play Store。

這時候我們就需要自己安裝它,安裝的辦法有很多,這裡不再贅述。總之,一但你安裝好,就會發現,即使開了代理,Play Store 也有可能在登錄後無法正常加載內容(登錄是正常的)。

此時會顯示錯誤:DF-dferh-01[……]

點擊跳轉以繼續閱讀

Ubuntu 超快部署 wireguard 服務端

新出的 Wireguard 很多人都想嘗試,這裡 VPN 到底適不適合用來翻牆我們先不討論,先來看看怎麼快速在 vps 上起一個 wireguard 服務。很多人聽說這個服務配置起來特別複雜,所以望而卻步,實際上很簡單。

環境

這裡我用最新的 ubuntu 18.04.2 來配置,首先你得有一個 vps,創建好後最好按照我的 購買了VPS之後你應該做足的安全措施裡配置ssh的證書訪問。

安裝[……]

點擊跳轉以繼續閱讀

讓 iOS macOS 中文字體實現視覺垂直居中

在開發落格輸入法 macOS 的時候,我遇到了一個比較奇葩的問題,這個問題一直困擾我到現在——當有些地方需要垂直居中顯示一排文字的時候,如何讓這些字真正的“居中”?

 

乍看之下這似乎沒什麼道理,垂直居中嘛……等等,macOS 上的 的NSTextField 還真沒有辦法讓你的一行文字垂直居中……🤷‍♂️

第一代方案

後來,我[……]

點擊跳轉以繼續閱讀

iOS 獨立開發:管理你的兌換碼

作為 iOS 開發者的你,肯定是知道 Promo codes 這個東西的,也就是我們常說的兌換碼。(當然,作為 iOS 用戶興許你也對此不陌生)

這次,我們就來看看,這個看似無窮無盡的兌換碼,到底有哪些限制。

有效期

蘋果後台生成的兌換碼有效期一直是一個謎,雖然官方的說法的 4 週,也就是 28 天,但實際上如果這期間你的 app 更新了,那麼兌換碼很可能就會失效[1]。

&國家統計局[……]

點擊跳轉以繼續閱讀

Swift 裡的數組去重方案

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

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

別人的解決方案

如果你去網上找,那麼你可能找到的是這樣的:

來源:[……]

點擊跳轉以繼續閱讀

辦公軟件好,人人少不了。辦公室 365,走你!

辦公軟件這東西,文字處理、表格編輯、還有著名的“ppt”幻燈片,畢業後我幾乎就沒再碰過微軟係了,偶爾需要文字編輯用的也是蘋果的 iWork 系列(當然寫論文什麼的就別想了),總之,這次我要軟一次,推一下 Office 365.

其實就是微軟的辦公套件,各位可能還在用盜版——這次是絕佳的機會把它洗白——價格足夠便宜。

 

利益相關

我的 落格輸入法 macOS 2 的中國區[……]

點擊跳轉以繼續閱讀

落格輸入法 macOS 2 是如何為 VoiceOver 進行優化的

在兩年前,我曾寫過一篇名為《ios 為視障用戶支持 VoiceOver》的文章,裡邊主要介紹了 iOS 端該如何為 VoiceOver 進行必要的支持,後來我又開發了 macOS 端的落格輸入法,但很遺憾由於 macOS 自身系統 bug,第三方輸入法根本無法獲得 VoiceOver 焦點(主要是 10.13 及以下版本),所以我也就沒有過多關注——甚至直到這款輸入法整個生命週期結束也沒能實現 V[……]

點擊跳轉以繼續閱讀

和: 1: “......”: 無效的命令代碼

Linux 的朋友可能會對這個命令比較熟悉,它可以在腳本里快速和批量地對文本文檔進行操作,比如改動某一行或者替換具體內容……

MACOS 自然也是有這個命令的,但有一點不太一樣,如果你執行 -一世 ,那麼多半你會得到一個奇怪的報錯 : 1: “......”: 無效 command

 [……]

點擊跳轉以繼續閱讀