跳到主要內容

發表文章

目前顯示的是 11月, 2012的文章

[分享] 範例續談 event emitter - explain how event emitter works for js Class

EventEmitter 之前有介紹過 Event Emitter 程式運作基本架構 ,通常大家在瀏覽器中經常使用 Event 註冊方法,設置 callback 讓程式能夠採用 event-driven 的方式進行。 在 Node.js 裡面,很多時刻是面臨到自己要去設計程式流程,而不是只有等待某個程式建立好之後,我們去使用而已。 在程式的觸發上,今天來介紹一下到底程式開發上有什麼差異。 引用例子 這邊採用車子加油的例子來說好了。 完整程式範例 舊有架構 如果採用舊有的架構,首先我們要有一台車子,這台車子是沒有加油的狀態。 function Car() { _oil = 0 } module.exports = Car; 接著要開個開口(_addOilHandler),讓車子可以加油,這是一台聰明車,所以可以自動把油加滿。 _addOilHandler = function () { if(_oil >= 100) { _oil = 100; } else { _oil += _oilInterval; // call self again. setTimeout(function() { _addOilHandler(_oilInterval); }, INTERVAL); } }; 看起來,一個會自動加油的車子就這樣子建構完成。 接著,程式要執行了,雖然這是一台會自動加油的車子,不過身為操作者的我們,還是要去檢查是否加油已經加滿,否則我們也不知道什麼時候可以開車。 以下就是檢查的方式。 var OldCar = require('./OldCar'); var bubu = new OldCar(); bubu.setOilInterval(10); bubu.start(); 看起來好像沒有什麼問題,可是卻發現,車子油加滿之後,並沒有進行任何通知,因此我們要增加進行持續檢查的機制。不斷的回頭看一下,什麼時候油滿了沒,持續詢問,當滿的時候才顯示訊息,因此增加程式如下, (function () { if (bubu.getCurrentOi...

[推薦] Bash-it 好用的 bash 環境

[推薦] Bash-it 好用的 bash 環境 通常在環境中,建立一個新的環境會有許多問題,之前都會使用 zsh 建立基本環境。這個時候通常 oh-my-zsh 是一個很棒的環境基礎。 不過在某些老舊的機器上面,大多預設安裝 bash,因此有好心的大大依照 oh-my-zsh 建構出相同的基礎環境稱為, Bash-it Bash-it Bash-it github project bash-it 是一個 open source 專案,安裝方式也十分簡單。但是首先要有些基礎工具。 Git 其他開發設定, ex, Node, Ruby, Python… install bash-it 先將整個專案 git clone 下來, git clone http://github.com/revans/bash-it.git ~/.bash_it 進行安裝, ~/.bash_it/install.sh 之後首先會詢問是否已經安裝 Jekyll, 如果有安裝請按下 Y ,之後就會去讀取之前 Jekyll 的資料, .jekyllconfig 當然沒有的話,也無所謂,就按下 N 接下來會開始設定 bash-it ,裡面給予許多方便的控制指令,可以直接按下 Y , N 取決安裝與否。 PATH 設定位置 PATH 設定部分,通常自定的部份會有兩個檔案, ~/.bash_profile ~/.profile 可以到 ~/.profile 修改 PATH 位置,或者到 ~/.bash_profile 這兩個部分修改。 後記 bash-it 讓 Linux 環境設定變得更為簡單,至少在環境需要重新佈署設定的時候,能夠快速還原。 雖然目前沒有機會,不過感覺 bash-it 裡面還有許多好玩的東西可以嘗試。

[分享] Error Handling 跨網域問題 (CORS)

Error Handling 跨網域問題 今天突然看到 阿嗚 丟出一個問題, 最近想要用 window.onerror 將部分環境的 JavaScript Error 回報給 Server,但 Static 與 Front-end 的網域不同,在 IE 以外的瀏覽器都因 Same Origin Policy 只能抓到語焉不詳的 "Script Error"... 有設定 CORS 的 Header 但也都無效,據說是瀏覽器都沒實作。有人有成功案例嗎? 測試連結 http://josephj.com/lab/2012/window-onerror/demo2.html 剛開始我的問題是,看不懂希望的結果是什麼。 簡單來說,因為 static 檔案跟 dynamic page 是分別放至於不同 server. 如果需要擷取 JavaScript Error code line 的時候,會發生異常訊息, Script error. 可是實際上,我們希望出的是錯誤 code 行數與資訊,類似資訊如下 Uncaught ReferenceError: abc is not defined 測試方向 document.write 用抓取的(cross domain 失敗) iframe (cross domain 失敗) onerror 不管加入在 src file, 或者 inline script 都吐出一樣訊息 (失敗) 交換測試 CORS 設定(一樣無法顯示正常結果,失敗) 搜尋文獻 之後找了相關的文件, Better error handling with window.onerror 其中裡面值得參考的資訊, Security To prevent information leaking from one server to the other, it is important to be careful with scripts that have two different origins. If the script URL is has a different origin to the document then the three arguments returned ...