翻舊帳

2024年4月30日 星期二

Linux 的 timezone 設定問題

 昨天遇到一個謎團.

系統開機, 會先以正常的方式同步網路時間:
1. 使用 zoneinfo 的檔案更換 /etc/localtime
2. NTP client sync

接著詢問私網的 server, 獲得特定時區的差, 重新同步一次時間
3. 詢問時間差
4. 把 /etc/localtime 換回 UTC
5. NTP client sync, 另外加上時間差

謎團在於, 系統看到的時間, 與 daemon 裡看到的時間不同步.

舉例, #1 把時區設定為 Asia/Taipei, 做完 #5 之後, 會發現, Linux 系統跟 state machine daemon 的時間會差 8 個小時. Linux 系統使用 date, 會看到時區是 UTC, daemon 裡看到的時區應該是 CST(GMT+8).

很明顯, daemon 在 #4 之後沒有跟著變為 UTC.

如果在 #1, #4 變動 timezone 之後, 使用 setenv("TZ", timezone string, 1) 呢?

1. 使用 zoneinfo 的檔案更換 /etc/localtime, setenv("TZ", timezone string, 1)
2. NTP client sync
3. 詢問時間差
4. 把 /etc/localtime 換回 UTC, setenv("TZ", "UTC", 1)
5. NTP client sync, 另外加上時間差

則會出現另一個問題: daemon 裡看到的時區會回到 UTC, 但 Linux 系統裡面看到的時區則停在 CST(GMT+8). 此時回到 Linux 系統, 使用 "set" command 查詢系統參數, 會看到 TZ='Asia/Taipei'.

也就是說, #4 即使 setenv(), 也僅作用於 deamon, Linux 系統卻沒有跟著變動.
怪異的是, #1 的 setenv(), 則會作用在 Linux 系統. 因為當我把 setenv() 拿掉的時候, Linux 系統中的 TZ, 就都不會存在.

我的猜測是, 系統設定值在每個 process 應該是獨立的? 可是這樣無法說明為什麼 #1 的 setenv() 會波及 Linux 系統.

2024年4月20日 星期六

Toyota Collora Cross Hybrid 油耗紀錄

2024/3/17 牽車

2024/4/20 油耗 21.2KM/L, 市區高速各約佔一半。


2024/5/4 油耗 21.4KM/L



2024/5/14 油耗 21.5KM/L




2024年4月1日 星期一

DIY -- Cross 加裝胎壓顯示器

新一代的車子都取消了備胎, 為了因應這問題, 胎壓偵測就顯得重要了. 在輪胎的氣漏光之前發現問題, 及早處理, 應該能避免動用到備胎.

政府目前的法規有規定, 新車的車胎都要加裝胎壓偵測器, 老婆那台 Swift 就有內建, 而且每隔一段時間, 就會被胎壓過低的嗶嗶聲所困擾, 每次都只能回廠處理. 我到現在還是沒搞懂 Swift 的胎壓要怎麼重置, 它的人機介面真的不友善.

新車 Cross 當然有偵測器, 不過, 和泰把每個輪胎胎壓的解碼顯示器當成選配...我原本打算抝業務送我, 但沒成功. 沒關係, 蝦皮買得到, 店家還提供 DIY 的影片, 我們自己來就好.




星期日一大早, 把車開到路邊, 依樣畫葫蘆. 結果出師不利, 第二顆卡扣卡在鈑金上面沒有跟著車身飾板起來...囧


接下來卡關的, 就是拆下原本的排線. 原廠的排線接頭, 在卡榫上方有一個橫條機構, 讓人很難按下去. 我最後是拿拆手機的塑膠工具協助才拆下來的.




裝好之後還要歸零重置, 很幸運地, 每顆輪胎都在該在的位置上.

搞定.

2024年3月31日 星期日

DIY -- HCG Superlet 超級馬桶更換落水皮

這一個月來, 只要進了浴室, 總是會聽到滴滴答答的漏水聲. 追了來源, 應該是馬桶. 如果是普通的馬桶, 要修理沒甚麼難度, 但這種一體成形的免治馬桶, 連要從哪兒下手都要猶豫.

查了網路, 從 HCG 的官網找到了 C230/AF230 的安裝說明書.
知道怎麼安裝, 就知道反過來要怎麼拆解:
1. 卸下超級馬桶後側, 左右兩根十字螺絲.
2. 按下沖水鈕附近的正方形卡榫, 同時把免治馬桶座往前方拉, 接著把後側往上抬, 就可以看見水箱.
3. 拿起水箱蓋, 就能開始排除問題.

網友建議的排查步驟:
1. 關閉入水口的三角凡而. 如果此時不再有滴水聲, 那麼原因有可能是進水頭無法關閉, 導致持續進水, 多餘的水會從落水口排出, 造成滴水聲.
2. 如果關閉之後依舊有聲音, 可以把染劑滴入水箱. 過一陣子觀察馬桶的水是否有變色, 如果有, 那就是落水皮無法密閉, 或是落水器的管子有裂痕.
3. 如果在馬桶周圍觀察到水漬或潮濕的痕跡, 那有可能是馬桶有裂痕或是水箱固定螺絲的墊片變形.

步驟一已經排除, 步驟二, 我要滴入染劑前, 被老婆制止, 她說馬桶如果染色之後很難清理. hmm... 好吧, 用猜的. 落水器的管子要裂開比較難, 通常馬桶漏水的問題都是落水皮變形, 我們直接換掉就好.

蝦皮購物, 三天後到貨. 原本以為三兩下就可以解決, 沒想到在拆卸舊的落水皮的時候卡關. 因為沒有經驗, 深怕暴力拆卸會把落水器整個搞爛, 結果反而拆不下來.

有些東西就是需要實作經驗的累積.

舊的落水皮, 從側面拍攝, 可以看出已經變形了.



就是這個卡槽讓我懷疑人生.




2024年3月25日 星期一

I know you know 歌詞

 Youtube 上面有兩種版本.

 一個是李治廷專輯的官方版本, 另一個是影集 My True Friend 的片尾版本.
官方版本的歌詞沒有疑問, 但片尾版本的歌詞居然跟官方版本有些小差異, 而且網路上面找不到官方確認過的. Youtube 雖然有自動翻譯字幕的功能, 但好像不太正確.

既然現在 AI 很夯, 語音轉文字的應用也推出好一陣子了, 剛好拿來測試.
以下是透過 cSubtitle 三分鐘試用版轉換出來, 並且手動修正的:

The day would fate us to collide. (這句很怪, 但我沒輒)

The moment you strike into my eyes.

Never thought love would come, like all was meant to happen.

Where you are would be where I start, you become my only star.

Where is dark, where you Spark. I follow wherever you are.

Maybe someday you will be attached by the little things we've done and said.

Though I know right now we can't begin but my love for you will never end.

'Cause I know you know, our hearts getting close to want to let you come.

No matter how hard, I know I want only you.


The day would fate us to collide.

The moment you strike into my eyes.

Never thought love would come, like all was meant to happen.

Where you are will be where I start, you become my only star.

Where is dark, where you spark. I follow wherever you are.

Maybe someday you will be attached by the little things we've done and said.

Though I know right now we can't begin but my love for you will never end.

Hey, I know you know. Our hearts getting close, falling towards you and do you know?

Let me be the one to show when I talk this you won't be alone.

'Cause I know you know our hearts getting close. Don't want to let you go. No matter how hard, I know I want only you.