作者: Hui-Hong YOU

  • 接下來想做的事情

    卸下 “Professional Android App Development” 這虧錢又讓自己不愉快的定位後,我接下來想做的事情有:

    • 打造一個不被 Apple FindMy 或 Google Find Hub 特規綁死、開放規格的失智症患者協尋的無線電網路。
    • 承上,利用低功率長距離技術與感測器在容易塞車的點(平交道、百貨公司、夜市、風景區…)即時提供改道建議。
    • 先從打造一台多旋翼無人機開始,做 robotics 相關研發。
    • 學習自行車手編輪與氬焊,做個性化自行車改裝、維修。(這個到後來會需要有廠房)
    • 把 nostdlib.cc 做起來。(圖書館學、資訊社會學主題媒體)
    • 客製寵物傢俱。

    行有餘力的話:

    • 考日檢、領隊執照。
    • postmarketOS 上製作輸入法編輯器。
  • 釜石拉麵

    剛剛在 NHK World Premium 看到「ラーメン JAPAN」(拉麵日本)節目,這集介紹的是釜石拉麵(かまいしラーメン)。

    找了一下釜石拉麵的網上介紹,這樣的拉麵就是我想做的…很接近原始中華そば、醬油拉麵的調理方式。

    另外一種我想做的拉麵,是琉球新麺通堂的雞清湯底風味。

  • 樸實注音鍵盤 3.4.0 版釋出&調整開發步調

    3.4.0 版最大的更動,是把長期使用下來最後一個連自己也覺得困擾很顯著(特別是在輸入 TOTP 驗證碼時)的毛邊打磨掉:在輸入數字時,應該自動切換到英數鍵盤。

    至此我覺得我對樸實注音鍵盤沒有什麼需要再打磨的了。

    當然想提 issue 的人還是可以提 issue,但是我不會再像過去那般積極、燃燒熱血卻在「健康且有文化的最低限度生活」這點難以為繼,除非是影響可用性幅度極大的、或攸關資訊安全的 issue。

    且說到我這麼勤於更新,結果還有這麼多人死守在一個一季之前的舊版本,我是為誰辛苦為誰忙?其實在某個時間點,這個軟體的功能就已經能滿足很多人了,近期做的一些改動,甚至只是滿足單一用戶的特異環境需求,連我自己都用不到。

    看到這裡你可能會想問:「115 人很多?」是的,很多,因為我經營這個專案這麼久,也才 2,000 出頭的安裝數而已。

    如果不是手機王的那篇報導,樸實注音鍵盤的安裝數甚至是直接砍半的。

    不,我不是在抱怨說我的 App 沒人用,而是我拿出真本事、真工夫,努力了這麼久,卻也失業了這麼久,什麼六度分隔理論、社群的力量、talk is cheap, show me the code,好像對我都沒有了效力。

    所以我決定去做別的事情了。

    🔭聯邦宇宙對此表示:

  • 樸實注音鍵盤 3.3.1 版釋出

    上次寫釋出記事至今,已經隔了好多個版次。細數一下從 1.9.42 版之後有什麼變動:

    (閱讀全文…)

    🔭聯邦宇宙對此表示:

  • TensorFlow 使用 CPU 加速指令集 (e.g. AVX-512) 的自訂編譯

    This TensorFlow binary is optimized to use available CPU instructions in performance-critical operations.
    To enable the following instructions: SSE3 SSE4.1 SSE4.2 AVX AVX2 AVX512F AVX512_VNNI AVX512_BF16 FMA, in other operations, rebuild TensorFlow with the appropriate compiler flags.

    使用 pip 直接從 Python Package Index 安裝 TensorFlow,之後 import 時,會冒出上面這則提示。

    我目前使用的 CPU 是 AMD Ryzen 5 8500G,雖然內建的 GPU 不在 TensorFlow 支援之列(更嚴謹地說,是不在 AMD ROCm 框架支援之列),但是既然 CPU 有 AVX-512 指令集可用,那聊勝於無、不用白不用。

    但是為了要啟用 AVX-512,就得自己編譯 TensorFlow,並指定需要的編譯旗標。

    網上不少過時、無效的指引,這篇也不知道何時會過時、無效,純粹做個筆記。

    1. 用 virtualenv 安裝目前 TensorFlow 支援的 Python 3.12 版本(發文當下 Python 最新正式版是 3.13,不過 TensorFlow 還不支援)。裝好後,在 terminal 下啟用 (activate) 這個 virtualenv。
    2. 裝 LLVM & Clang 17(是的,發文當下 TensorFlow 也只支援 Clang 17 版)
    3. 裝 patchelf
    4. Bazelisk 這個 TensorFlow 使用的建置系統 Bazel 的版本管理器兼指令 wrapper(有點拗口?)
    5. 下載 TensorFlow 原始碼
    6. 找一處容量比 OS 預設的 /tmp(暫存檔專用目錄)更充裕的地方,建個目錄,設定 export TMPDIR=$PWD,不然最後在打包 wheel package 階段,會因為 /tmp 容量不足而失敗
    7. 進到 TensorFlow 目錄下,執行 ./configure 回答幾個配置問題,如果前面幾點都有妥當安裝配置好,應該是一路 Enter 使用偵測到的預設值即可
    8. 執行 bazelisk build //tensorflow/tools/pip_package:wheel --repo_env=WHEEL_NAME=tensorflow_cpu --copt="-march=native" 讓它建置出「偵測到可用、但預設未啟用」(如原始訊息所示)的那些 CPU 加速指令集的 TensorFlow,這步驟需要一點時間。
    9. 順道一提,如果好奇 -march=native 背後做了哪些工,可以跑 bash -c 'echo | clang-17 -E - -march=native -###'(如果缺乏這樣的好奇心,我覺得也…沒事)
    10. 先解除安裝既有的 TensorFlow,改安裝剛剛建置好、產出的 wheel package:pip install bazel-bin/tensorflow/tools/pip_package/wheel_house/tensorflow_cpu-2.20.0-cp312-cp312-linux_x86_64.whl

    之後 import tensorflow as tf 時,理應就不會看到最上面那段訊息了。

  • 樸實注音鍵盤新改動:將新酷音函式庫打包為 Android App Module (AAR)

    1.9.50 版開始,樸實注音鍵盤新酷音函式庫 (libchewing) 原本以 Git submodule 嵌合進專案目錄結構的作法,改成分離為獨立的 Android App Module (AAR) 專案:libchewingAndroidAppModule,再引入此專案建置出的 .aar 模組檔。

    初始動機是新酷音函式庫自 v0.8.0 開始,預設採用 Rust 版的程式碼來建置,樸實注音鍵盤這邊不想跟不上這個變革,這不是為做而做,初衷仍是為了 Rust 主打的 memory safety 特性,以及新語言較豐富的表現力。

    目前新酷音函式庫仍保持著 C & Rust 雙軌並行相容,所以 libchewingAndroidAppModule 暫時仍是拿 C 語言實作版本來建置,然後嘗試轉換至 Rust 語言實作版本。

    我預想這不是一件太容易的事。一來樸實注音鍵盤對於舊設備有「在能力範圍內盡力支援」的方針,所以至今仍至少支援 Android 6..0 (API Level 23);也因此樸實注音鍵盤為了已有些年代的設備,會盡力支援 Android(仍)支援的 4 種硬體平台架構:armeabi-v7a, arm64-v8a, x86, x86_64,而對應的 Rust 當前硬體平台架構支援程度 (tiers) 是略有紛歧的。

    就努力看看,行不通的話,變通方法還是很多啦(大概)。