pretty code

2021年9月20日 星期一

OneLineEPUB

最近的專案在 coding 告一段落後,每次測試連測試程式一共會開啟四個 cmd 視窗,一下子就把我的螢幕佔滿,雖然我個人沒有用雙螢幕,但因為我必須盯著四個視窗確認一些東西,故用雙螢幕也不能解決我的問題。

也因為我必須盯著四個視窗,故也不能把視窗縮小做別的事,之前為了避免類似這種測試無聊的情況,有寫一支程式把單一電子書檔案(.xhtml)的內容抽取出來,只保留純文字,我就可以開啟一個小視窗邊看一下書邊注意測試畫面。

但現在遇到一次開四個視窗的測試情形,每次都要把電子書小視窗拉來拉去好調整到一行的大小,才不會擋到我的測試視窗,久而久之,也是有點阿雜,故決定把之前的程式再做一些改進,一次就是顯示 20 個字的內容,配合另外一個批次檔,我就可以擁有一個一次只顯示一行文的電子書閱讀器,這樣測試時就不會無聊了。

2021年9月10日 星期五

Named Capture Group in Golang

一直以為在 Regex 的匹配中,可以將 ( ) 裡面的匹配字串取出來是 Javascript 或是 Python 獨有的功能,導致我之前在取 Redfish 的 @odata.type 時,只能用 strings package 去解決我的問題。

今天才了解這是正規表示法的一部份,想當然爾 Golang 當然是有支援的,其用法如下:

re := regexp.MustCompile(`v([0-9]{1,})_([0-9]{1,})_([0-9]{1,})`)
matches := re.FindStringSubmatch("#EventService.v1_7_1.EventService")
fmt.Println(matches)

[v1_7_1, 1, 7, 1]

我們也可以為這些 Group 取名,例如 (?P<MAJOR>[0-9]{1,}),這樣 MAJOR 便會是這個 Group 的名稱,因為在 Golang 還要多一道手續自己作 mapping,故我覺得在這邊取變數的意義就不大了。

2021年9月8日 星期三

使用 NFC 手機讀取悠遊卡內碼及電子發票驗證碼

最近信用卡被盜刷,除了訂閱制的付款資訊需一一更新外,信用卡的悠遊卡也要再到電子發票網站重新歸戶。

雖然去便利商店讀取一下悠遊卡很快,但還是想看看有沒有更方便的方式?果然早就有人找到解決之道了。

我們總共需要兩樣資訊,分別安裝兩個 App 即可:

01. 悠遊卡內碼 - 安裝完 NFC Reader 並掃瞄卡後,ID(dec) 這個欄位就是內碼。
02. 電子發票驗證碼 - 安裝完 Easy Wallet 悠遊付,在其他功能有一個讀取電子發票驗證碼功能。

2024/03/23 更新

最近用上述的 NFC Reader 讀取悠遊卡內碼時會失敗,只能看到 ID(hex) 那欄,其他會被訊息視窗擋住,記得用小算盤換算。

2024/10/18 更新

最近購買超級悠遊卡用 NFC Reader 讀取內碼似乎又正常了,但我老婆的悠遊卡還是會讀不到內碼需要自己用 hex 換算,也沒辦法用這些資料去雲端發票歸戶,暫時還想不到原因。

2021年9月2日 星期四

凍結的 Windows 10 console 視窗

最近的案子在測試時大概會自動開啟 4 個視窗,偶爾會有某個 console 視窗的程式突然停止運作,一直到按下 Enter 鍵後才會看到程式繼續執行並吐出結果。

因為機率非常的小,故我也不以為意,直到前幾天同事在測試我的新 API 時,他無意間提到他也會遇到跟我一樣的問題,最後他發現是 console 視窗進入了選取模式而導致。

真是個有趣的發現,今天中午試著用關鍵字 "Windows 10 console freeze" 來搜尋,果然看到以前就有人發問過這個問題了。簡單來說,這是 Windows 10 console 視窗的功能,它很貼心(?)的在你選取視窗時,認為你可能要做一些編輯動作,為了怕你不好選取文字,便停住了正在運行中的程式。

詳情可以看這裡