之前發現開發 GUI App 會因為電子紙特性而有螢幕閃爍的問題,中午順手查了一下 KOReader 是如何避免這個問題的?
只是匆匆一瞥,但貌似 KOReader 在更新時是將資料寫至 framebuffer,並透過 ioctl 下不同的參數而達到部份更新的功能?
還是不想浪費 Golang 跨平台的能力,再加上不想花費太多時間,故想嘗試 HTML Golang GUI 的解決方式。
這次選擇的是 gowut 這個專案,無奈在 Clara HD 實機上測試時,還是無法正常執行。
第一個問題是它無法自動帶出瀏覽器視窗,這個尚屬合理。
第二個問題是即使自己開啟瀏覽器輸入網址,還是無法連上 gowut Server。
第三個問題是我改用 gowut 自己提供的測試網址,雖然看起來 GUI 元件有正常運作,但一來速度太慢,二來是多操作幾下就會整個無回應,三來是畫面會因為重繪而閃爍(電子紙特性)。
目前看來 HTML GUI 解決方式不是正解,光畫面會閃爍就無法讓人接受,不過這也延伸出另外一個問題,即使我使用 Qt 撰寫 GUI App,我一樣會遭遇畫面閃爍的問題,除非 Kobo 本身有提供 SDK 讓使用者呼叫暫時停止重繪,好避免畫面閃爍。
感覺 GUI App 這個問題快走入死胡同了?
最近無意間在讀墨網站發現,居然有《七龍珠彩色漫畫》的電子書,對於一年前才狠下心買完《七龍珠完全版》的我來說,內心真的是陷入天人交戰。
試算了一下,如果全出的話共有 32 本,一本 105 元,總共要 3,360 元,如果是趁著 3 本 75 折買則是要 2,520 元。
樂天的價錢也是 105 元,Google Play 圖書則是只要 87 元,不過 Google Play 圖書無法下載檔案,再加上價差不大,應該是不用考慮。
以前買完全版時,共花了 150 x 34 = 5,100 元,因為讀墨分兩次上架,故我也記不清那批是打折時購買,我想至少也是花了四千多塊有。
不知道在書展期間是否有機會全部上架?也許到時候還是會衝一波。
KoboCloud 雖然看起來很簡單!但其實裡面的 script 是有技術含量的,以 Google Drive 來說,它至少要先知道使用 HTTP Get 資料夾連結後的回傳內容是什麼?還有如何取得所有的檔案名稱以及個別的下載連結。
舉例來說,假設我們設的公開連結為:
https://drive.google.com/drive/folders/XXXXXXX-YYYYYYYYYYYY
response 回來的內容需利用正規表示法來找到相關資訊,可能是我只會簡單的 Re,我取到的會因為貪婪法而無法拆解成一本一本的資料,故只好再用字串分割做 2 次加工。
底下是我目前用的 sample code,其中 base_url 就是 XXXXXXX-YYYYYYYYYYYY。
而每本書的下載路徑就是 https://drive.google.com/uc?id=file_code&export=download,下載時會經過幾次重導向。
import re
import requests
url = 'https://drive.google.com/drive/folders/XXXXXXX-YYYYYYYYYYYY'
response = requests.get(url)
s = response.text
pattern = '\\\\x5b\\\\x22(?P<file_code>.*)\\\\x22,\\\\x5b\\\\x22(?P<base_url>.*)\\\\x22\\\\x5d\\\\n,\\\\x22(?P<file_name>.*)\\\\x22,\\\\x22'
res = re.search(pattern, s)
all = res.group(0)
items = all.split('application')
for item in items:
res = re.search(pattern, item)
print(res.group('file_code'), res.group('base_url'), res.group('file_name'))
Fyne 缺少的 libGL.so.1 確定是無法靜態連結了,至少就我目前看到的資料是如此。
在不考慮 GUI app 的情況下,其實寫個 Golang app 是最快的,在 Wi-Fi 開啟時就自動同步 Google Drive,就像 Kindle 同步個人文檔一樣,第一次時也是全部下載,並沒有讓使用者選擇,只是之後還是可以任意刪除再下載,甚至回過頭來刪除 Kindle Server 的個人文檔。
我想像中的行為大概是這樣:
最近又下雨下到令人阿雜,古人說的什麼「沾衣欲濕杏花雨」都只是騙人的玩意。不論是毛毛細雨還是又濕又冷的冬雨,讓人一點都不想上班。
因為下雨的緣故,買咖啡變得不方便,故購買頻率也跟著減少,雖然我不知道是不是只有我是這樣?在只有一隻手是乾淨的狀態下,又要拿傘又要拿咖啡,真的是無解。當然會有人想用提袋裝咖啡,但對於下雨就懶得帶包包出門的我來說,實在是生不出外套空間擺提袋。難怪《原子習慣》才會強調建立環境對習慣養成的重要性,因為人是很懶惰的生物。
總之,今天一反常態的進去小 7 買咖啡,還是在已知一堆人等咖啡的情況下,人心真是讓人猜不透呀!目測在我結完帳後,在我前面連我還有 6 組人在等咖啡,約莫在消化了一半的時候,排在我前前面的人突然抱怨說,為什麼在她後面的已經拿到咖啡(我前面一位)?事情的真相是她們兩人算是同時結帳,但因為抱怨的人還要報手機使用會員結帳,故實際的順位往後排了一位。雖然店員跟她來回對話時有隱含一絲絲火氣,但雙方總算還是有控制住情緒。
厲害的事來了,中間還有差插另外一組人也是在抱怨咖啡速度,他們的對話也是有些小火氣,在他們拿完 3 杯咖啡後,小 7 店員還是在百忙之中發現錯誤,急忙追出去修正,我不知道標籤機是否有提示同一批結帳?如果沒有的話,店員要如何得知這個是同一組人的咖啡?畢竟做咖啡的和結帳的不是同一位店員居多,特別是生意好的店,如果沒有這個功能應該要加上才會方便。畢竟,可以靠機器解決的就不要靠人力。
接下來就是我的咖啡了,店員還不忘跟我說聲抱歉久等了,讓我不禁讚嘆小 7 店員的情緒控制能力,如果沒有一套訓練機制,實在是很難提供這樣的服務?
雖然,超商有分直營店跟加盟店,還有我也不在固定的超商消費,再加上我本身也不喜歡統一這家公司,但就我個人曾有的消費感覺來說,小 7 店員的專業度絕對是第一名當之無愧。
昨天下班前終於開始了我計劃的第一步,首先便是嘗試 Fyne 這個 Golang 專案在跨平台編譯後是否能順利的跑在 Clara HD 上。
一開始便照著指引在 Linux 上準備 docker 環境,只要使用 go get github.com/fyne-io/fyne-cross,便可以自動下載 docker 所需要的環境,當然系統還是要先有 docker 本體。
回家後使用手機的 OTG 功能,修改我的 Kobo 翻頁器 script,直接啟動編譯好的執行檔。很可惜的是,無法順利啟動,從 log 中看到是缺少了 libGL.so.1 這個函式庫。
接下來便是研究是否可以使用靜態連結解決?也許這條路行不通也說不一定?
昨天下午突然來了一堆臨時需求,再加上天氣寒冷,回家就懶得再把我的筆電拿出來,故原本要發的一些感想也就這樣無疾而終。
今天是 2021 年的第一天,又買了幾本書,希望今年能夠有個好的開始。
這幾天一直在想如何寫個 GUI App 跑在 Kobo Clara HD 上,以解決 KoboCloud 書本數量一多在 Google 雲端硬碟同步失敗的痛點,很想用比較簡單的方式來解決,但暫時還沒有有想法,希望在我的 Kindle Paperwhite 3 掛掉前,我能順利的找到解決方式。
另外,最近一直在觀察最大同性交友網站(Github)上面討論的一個專案,該專案是想要解決某個不能說的秘密!但對於已經搞定的我來說,看著他們想用正規的方式來突破遇到困難,卻又不能給他們任何提示,感覺就像看到兩個月前的我一樣,那種不得其門而入的感覺就是阿雜。
接下來,我想說一個故事。在《獵人10》中,小傑跟奇犽被信長捉住,後來還是多虧小傑想到仙派告訴他們有關贗品的技巧中找到逃跑的方法,而這個方法就是「從旁掉包」。
還有上星期時,實測了一下在只簡單準備 2 樣菜,炒吻仔魚和炒空心菜,從料理、用餐以及洗碗跟清潔善後總共花費的時間,結果居然要 110 分鐘?真是不統計不知道,如果家裡是另外一半負責廚房的,真的是要對他或她好一點。
目前光讀墨就還有 127 本書未讀,撇開只是當工具書用的,應該也還有百來本要看吧?幸好現在繁體中文書對我越來越沒有什麼吸引力,我一定要在今年把它通通結束。