發表文章

目前顯示的是 十月, 2015的文章

node.js 開發備忘

前陣子用 node.js 寫了一個上線的服務, 沒有意外的話接下來有一大段時間不會碰 node.js。備忘一下有用到和以後可能會用到的東西。 何時以及為什麼要用 node.js?fcamel 技術隨手記: 為什麼需要 async programming 以及相關技術的演進fcamel 技術隨手記: 使用 Node.js 實作 server pushnode.js 開發主要弱點 main loop 被 block: fcamel 技術隨手記: 找出 node.js 中 block main loop 的程式 CPU bound: 參考 Why you should use Node.js for CPU-bound tasks - Neil Kandalgaonkar。視不同需求可用不同解法: 用 multi-process 增加 throughput 還有減少被 slow response 拖慢其它 request: 用 cluster 用 multi-thread 避免 slow response 拖慢其它 request: 用 threads_a_gogo 甚至可以將 CPU bound 的工作丟給 browser 的 WebWorker 作, 不過這樣架構也會變複雜, 沒強烈必要不會走到這步吧。 callback hell: 用 Promise 解 (JS 6 新 API), bluebird 是效率不錯的 backport, 可用在目前的 JS 5 。對於既有沒用 Promise 的 module 和函式, 也有提供 API 直接轉換物件成使用 Promise API, 不用改程式。Why I am switching to promises 提到 bluebird 效率不錯以及其它好處。 還有 async 也有助於減少雜亂的 callback codes, 不確定 bluebird 是否可完全替代 async 提供的功能。 幾年後 JS 7 的新語法 async/await 普及後, 可以考慮用它們取代 promise。現階段要 transcompile 後才能在 JS 5 內用。 其它 coding style: callback 函式的第一個參數總是放 error, 沒有 error 時傳入 null。 用 nodemon 在更新程式後自動更新…

用 whois 查 IP 發行者的資訊

最近才知道可以用 whois IP 查 IP 的擁有者和擁有的網段, 不過 whois 回傳的內容沒有標準格式, 不方便寫程式直接處理。