跳到主要內容

發表文章

目前顯示的是 2018的文章

JavaScript 監聽物件屬性變更

當程式越來越長,而且又是多人開發的狀況下
一定有時候是開發者會想著 "WTF,為什麼屬性XX被改成XXX"
特別是 JavaScript 因為設計因素,本身就很容易寫髒
監聽物件屬性變化還是有時候能幫助我們找出問題的好方法

文化衝突 投資,還是投機? 閱讀紀錄

這本書是 John Bogle 的著作
這篇紀錄略去其中關於一般散戶的投資建議篇幅

JavaScript Keyboard Events keycode 規格注意

也許可能有人和我之前一樣
並沒有注意到 keyboardEvent.keycode 已經被標註為deprecated了
這禮拜看 code 注意到 IDE 為相關使用標上了注意才來找規格看
keycode 在2016年被標註為 deprecated,不過到現在包含不少 open source 仍然沒有調整
只是這樣已經被標註 deprecated 2年的規格,還是得做好瀏覽器隨時拔掉支援的準備

MDN的文件已經給出對應新規格的Work Around,調整就是參考這個範例

keycode 並不是很複雜的規格,那麼為什麼需要新規格替代呢?
看了新規格我們可以知道可讀性是新規格好
keycode 往往使用上我們會需要在旁邊標註解,解說使用的 keycode 對應哪個按鍵
KeyboardEvent.code 直接使用了 "Space" "Backspace" 這樣一目瞭然的用詞
另外,keycode 在功能鍵跟複合鍵上,有跨瀏覽器的差異問題以及部分不支援
這也會是新規格想解決的問題

只是現在如果我們只是想做簡單的 keyboardEvent 判斷,也是得跟著work around多寫code
這就是處於規格交接時期的麻煩了

夠了:回到理財初衷,跳出金錢困局 閱讀紀錄

英文原名: Enough: True Measures of Money, Business, and Life
閱讀完之後總覺得書名不夠貼切,查了果然是中文標題名並不是照英文翻的
這本書實際上並不算著重在理財上,個人認為是人生與道德觀
當然作者的人生很大的比重是投資相關,所以講了很多投資也是必然

啟用 Android emulator 網路連線功能

最近用了超過3年半的手機壞了
不過因為下一支想買的Pixel 3還沒出,所以先拿了隻很舊的淘汰備用機撐著
這隻的版本舊到連我寫的App都不會支援,不過當然App的開發還是得進行下去😅
這下不能用實機測試,就得查詢怎麼讓 emulator 能夠連線到電腦網路

emulator 不能連網路的原因是缺少他使用的DNS紀錄
AVD Manager 的GUI介面沒有選項讓我們設定,所以若要連網就不能透過 AVD Manager
在Windows環境下先叫出 command line

cd   $Andoird_SDK_Route\emulator                                         <-  SDK 路徑請替換成自己的
emulator -avd $Emulator_Device_Name -dns-server 8.8.8.8   <- 替換自己設定的 Emulator 裝置名稱

如果不清楚自己設定的 emulator 裝置名稱,可以透過 emulator -list -avds 這個指令查詢

指令下完就會自動幫我們叫出可以連網的 Emulator 了
示範指令是使用Google的 8.8.8.8 DNS Server,這個可以根據自己需求替換

另外留意下如果你在 App 裡是用 BroadcastReceiver 註冊監聽裝置網路狀態
用這個方式叫出來的 Emulator 將不會接收到這個廣播

HTML 新標籤 details & dialog

這兩種新元素都算是已經廣泛被需求的原件,然後現在有了HTML的原生支持
https://developer.mozilla.org/en-US/docs/Web/HTML/Element/details
https://developer.mozilla.org/en-US/docs/Web/HTML/Element/dialog

目前這兩項都找的到pollyfill
可以在需要用時讓沒跟上新規格的瀏覽器也能用
例如那個號稱新瀏覽器但是進度落後非常多的Edge

details 需要搭配 summary tag,可以做出 toggle 觸發區塊的顯示/隱藏
比起目前要達成同效果的實作會簡單些,也少寫了一些 code

dialog大家很熟就不多講了


可以預期隨著 PWA 的發展趨勢,這兩項未來都會被廣泛運用吧
Web app 的效能瓶頸跟支援性的問題得到解決的日期可能不太遠了
Web 開發者也能跟著期待未來 Web 會引入更多這類在 Native app 上的需求到 Web 標準裡

JavaScript 依序執行 Promise Task

Promise 在 JavaScript 上已經不算太新的規格了
不過作為在 IE 環境下能被正常支援的規格(包含打pollyfill),還是會常被使用
這篇來寫如果有需求要讓未定數量的 Promise依序進行相同的任務的方法

人類大歷史 &人類大命運 閱讀紀錄

作為人類學的研究者的夢想可能就是這樣吧
能夠出版書籍闡述自己對人類的過去與未來的完整觀點

JavaScript 浮點數計算的精確作法

這是程式中的常見問題
也大概會有很多程式入門者覺得很奇怪

JavaScript 中的 0.1 + 0.2 的結果是 0.30000000000000004 而不是 0.3
原因是 JavaScript 處理浮點數的運算方式是用2進位
所以就是會有浮點數值無法正確用2進位表示,而產生誤差
細節可以參考 IEEE 754 這個規範
順便一提,當然也不是只有JavaScript採用2進位
如果接觸新語言也可以查該語言的相關處理方式,說不定能一開始就避免問題