• 週末去宜蘭

    都說宜蘭是天龍國人的後花園,確實花園,有很多的花花草草,路邊的花都有香。

    即使是市區也沒什麼人,有點像旅遊淡季的花蓮,但是Miley 說剛才泡冷泉的時候外面兩個阿公說禮拜六禮拜天才會有台北人來。不是很明白冷泉這種東西,感覺泡多了會生病。

    因為我們來的時候是平日,所以人煙稀少。建倫兄帶著吃了有名的羊排麵,味道是很不錯,只不過因為台灣都是太監羊,沒有羶味,還是差強人意,隨後去他宜蘭的家中小坐了一會兒,他在帝都中日友好醫院工作的老婆沒有跟著回來,只有他的女兒跟著回來了,我看他是回不了台灣的,文科生很難在台灣找到薪水高的工作,何況他老婆是醫師,中國的醫師資質,台灣是不承認的,他這輩子只能留在中國了。

    玉珍之前在鬧的不就是試圖提出法案開放中國醫師到金門執業,雖然玉珍辯解說沒有明確是開放中國醫師而是國際醫師,但是她也沒明確排除中國醫師。

    羅東夜市的品類很豐富啊,比台北的幾個夜市看起來豐富多了,也許是因為地廣人稀?

    從台北可以坐區間車到宜蘭,但是不能到蘇澳,蘇澳是所謂區間車的支線,然後宜蘭車站的站牌上,不到蘇澳的車次寫著停靠沿途各站,他指的沿途各站是到花蓮的沿途各站,他並不會到蘇澳。

    所以鄉下人就該坐錯車是嗎?

    當然,要相信台鐵app 的車次查詢,是準確的。

    在蘇澳的民宿睡得還不錯,看起來像是青旅的一間,除了有一點裝修的味道,環境,衛生,噪音控制都不錯,雖然臨馬路,但是平日的時候蘇澳看起來就是沒有人。老闆在二樓擺放了很多當地特產售賣,但是他們似乎並不熱衷於此,前台常常沒人,因此我臨走也沒有買成。

    租了兩台電動腳踏車,在四周晃了晃,豆腐岬就是The Croods 裡面的那個Windows 啊!豆腐岬的碉堡很不錯,能保持在一個較低的溫度,即使外面太陽下已經四十度了,裡面還是不熱,可以在碉堡裡面靜靜的看海很長時間。

    第二天的海鮮吃了白蝦,曼波魚,海瓜子,沒想到曼波魚主要是吃魚皮,膠原蛋白一塊一塊的,吃起來像蒟蒻。

    蘇澳是一個適合看海的好地方,安靜,人少,我們從蘇澳車站走去民宿的三公里路上,只有兩台腳踏車經過。

  • 故宮南院的寶貝

    故宮南院很偏僻,但台灣的鄉下應該都這樣,南院最近的展品有點意思,有一個乾隆皇帝的收藏,大多數是玉器,玉壺,玉杯,玉珮,等等。

    還有一些字畫,不過我看不懂。

    乾隆帝的收藏感覺也不過如此,就是很大一塊玉的樣式,比如平時我們見到的玉壺可能比較小,乾隆帝這個就比較大。

    不過故宮南院佔地面積看起來很大,修葺得有湖有橋,感覺可以展出很多寶貝。

    Fuyuan 家就在南院旁邊不遠,但是他正經歷喪父之痛,不便去打擾他。

    我比較喜歡這條魚。

    台南的氣候真熱,溫體牛肉似乎是台南的特色,到民宿就開始下雨,但稀稀落落一陣就沒了。

    最近一段時間睡眠突然變差,不知道是天氣的原因還是什麼問題,姊姊從日本帶了新版本的芝麻明,吃了有時候有效,有時候沒效,那不就跟安慰劑差不多。

    在Amazon 上買了褪黑素,因為這東西在台灣居然是處方藥,但是我買完看了看,似乎也不對症,也不能隨便亂吃的樣子。

    很久沒出現在公司, Jess,Alger,Leo 碰見我都分別表達了關切,Alger 做了個新髮型,全卷毛。

  • WordPress iOS app 老用戶的bug

    其實Wordpress 的iOS app 我用得不多,但偶爾會用一下,有時候想到什麼先寫下來,整理了再發出來,但是最近iOS app 更新後我發現登錄不上。

    經過我和AI 對source code 的分析,最終定位到問題所在,去github 提了個issue,很快就被合併提交,既然他們動作這麼快,為什麼之前都沒人提?

    因為這是一個老用戶才會卡到的bug, 新用戶不存在,我直接修改了database 來匹配新版的app。

    以下為AI 整理:


    問題

    WordPress iOS app (26.8) 登入自架站 時,瀏覽器 2FA 認證成功、產生 Application Password 也成功,但最後顯示「Site details cannot be loaded」。

    根本原因

    WordPress iOS app 新的 Rust-based HTTP client (wordpress-rs 0.1.0) 在 wp_api/src/users.rs 裡,把 extra_capabilities 宣告成:

    pub extra_capabilities: Option<HashMap<String, bool>>,

    值必須是 boolean。但 2011 年建立的老 admin 帳號,資料庫 wp_usermeta.wp_capabilities 裡存的是:

    array('administrator' => '1')  // string

    Rust serde deserializer 遇到 string "1" 無法轉成 bool,整個 User 物件 parse 失敗 → iOS app 回報「Site details cannot be loaded」。

    新註冊的使用者沒問題,因為 WordPress 核心 set_role() 寫入的是 true(boolean)。

    解法

    直接改資料庫:

    update_user_meta(1, 'wp_capabilities', array('administrator' => true));

    Debug 過程的收穫

    1. 證實不是 server 設定問題:Nginx、CloudFront、REST API、Application Password 全部正常
    2. 排除了 Two Factor / WP-WebAuthn / Jetpack 404 等假設
    3. PHP-FPM 的 php_admin_value[error_log] 會強制覆蓋 WP_DEBUG_LOG,導致 WordPress debug log 無法運作
    4. systemd PrivateTmp 會讓 /tmp 變成 service 專屬,外部看不到
    5. Android app 能過但 iOS 不行 是因為 iOS 改用 wordpress-rs,Android 還在用舊 client(type 較寬鬆)
    6. 當 server 端所有回應看起來都正常,而錯誤發生在 client 端時,直接看 client 的原始碼是最直接的 debug 方式(最後一步靠 clone wordpress-rs 找出答案)

    建議

    這是 wordpress-rs 的 bug,應該寬容處理 "1"true。可以到 https://github.com/Automattic/wordpress-rs/issues 報告,幫其他老站使用者。