卡提耶-布列松:二十世紀的眼睛 -- 皮耶.阿索利納

在 Hyread 上趁著優惠購買的書。愛拍照的人一定都聽過布列松,或是看過他的照片。就算是平常不拍照的人,也大都聽過他的名號。大家都對他那張有個人跳過水漥,水漥中出現倒影的照片很有印象。 ...

January 6, 2023

生態系競爭策略, Winning the Right Game -- Ron Adner

本書只有七章,書不厚。前面幾章在講整個生態系的概念,並利用一堆真實世界中的例子來說明(或證明)書中的理念。每一章裡都會提到一些想法和作法(工具?),最終,在第七章做了個表格來整理所有的內容。 ...

January 2, 2023

[新北][三重][蘆洲]繞一圈 20 公里

在網路上找大台北地區的跑步路線,看到一個很值得試試的路線:三重和蘆洲剛好可以繞成一圈。東邊是河濱路段,西邊則是微風運河和一堆親水公園,如果臨時體力不足想要徹退的話,隨時都可以往中間切,回到市區叫車。 ...

January 2, 2023

[桃園][南崁溪]桃園南崁自行車步道 14 公里

桃園南崁溪有很完善的自行車步道,可以一路從桃園龜山騎到竹圍漁港。因為我是從台北下去起跑的,所以找了個看起來好停車的中間點 — 三民運動公園;然後一路開始往竹圍漁港前進。因為久沒跑步,這次只跑了 14 公里左右,最遠來到了榮興橋,然後就返回了。很可惜體力不足以一路跑到竹圍漁港。下次應該會從榮興橋附近再完成後面的路線吧。 ...

January 2, 2023

2022年回顧

今年算是疫情的最後一年;在生活型態上,已經熟悉了在家上班的型式,下班的生活模式也算是很固定。在這 2022 年的最後一天,來列一下今年各方面的數據,當做明年再努力的參考。 ...

December 31, 2022

Android SharedPreferences 的實作改善技巧

在今年 iTHome 鐵人賽最後一天的文章中有介紹到,怎麼將 Boolean 的 SharedPreferences 包裝起來,讓原本很煩瑣的 value getter setter 可以透過 delegate 的方式,一行搞定。下面是包裝前和包裝後的程式碼。 利用 getter / setter 讓外部可以簡單地對 SharedPreference 操作 ...

December 24, 2022

Android 上整合 Text to Speech 功能

EinkBro 做為一個瀏覽器,很多開發的功能都是圍繞著內容呈現的調整。今天,要來介紹 9.14.0 新加入的特別功能:語音閱讀網頁內文。 在 Android 上,Text to Speech 功能早在 API level 4 就開始支援,不過,好像很少有瀏覽器有支援這功能。畢竟,大部分人使用瀏覽器都是想要用眼睛去看內容,而網頁的篇幅通常也不會太長。 ...

November 21, 2022

Google Play Store: 您的裝置與這個版本不相容

這也是老毛病了。三不五時會有使用者反應,雖然在 Google Play Store 中可以找到 EinkBro,但想要下載時,畫面上卻顯示 “您的裝置與這個版本不相容”。由於之前我也沒認真去研究為什麼會發生,所以通常解決方式都是:請使用者上 Github 網站,直接下載 apk 來安裝或是去 f-droid 上安裝。 ...

November 5, 2022

解了一個萬年 EinkBro 臭蟲:savedInstanceState 的雷

最近下載 EinkBro 的使用者多了一點。早期不太去理它的臭蟲,也因此發生得愈來愈頻繁。今天終於花了點時間找出原因,並且解決了它。 從 App 版本和 Android OS 版本看來,這是個非特定設備下就會觸發到的問題。之前一直沒理它的原因是,雖然 Google Play Console 上有 Crash 的 callstack (如下圖),但是有寫跟沒寫差不多,因為沒有真的寫出行數,只能在 BrowserActivity::onCreate() 裡自己找線索。 ...

November 2, 2022

Differences between onPause() and pauseTimers()for Android WebView

A long opened issue for EinkBro states that after creating new background tab, it’s not possible to continue certain behaviors normally (e.g., modify query string, or load more content, etc in Google, and Twitter website). In the beginning, I couldn’t reproduce the issues on my several devices with various Android OS versions. My first thought is that: it’s caused by different WebView versions and some of them are having issues. ...

October 30, 2022