jQuery stopPropagation 和 stopImmediatePropagation 比較

近期在幫公司導入 Backbone.js 技術,把後台全面改寫成 Javascript MVC 架構,技術包含 jQuery + Backbone.js + Underscore.js + Mustache Template,這些技術我想可以寫另外一篇 Backbone.js 初體驗,這邊就先不多說了,在 Backbone.js 的 View 架構裡,可以任意 bind events,程式碼如下:

RT.View = Backbone.View.extend({

    initialize: function() {   
        if (this.model) {
            this.model.bind("change", this.render, this);
        }
        if (this.collection) {
            this.collection.bind("all", this.render, this);
        }
    },

    events: { 
      'click .add': 'add',
      'click .edit': 'edit',
      'click .delete': 'delete_item',
      'click .delete_all': 'delete_all'
    },

   add: function(e) {
   
   },
)};

上面程式碼可以看到,將 click 事件綁在不同 Class 上,但是問題來了,如果同時 new 兩個 RT.View 物件,當我觸發 click 事件時,就會發生兩次一樣的效果,該如何解決這問題呢,可以透過 jQuery 的 stopPropagationstopImmediatePropagation,這兩個其實很好區分,前者只會防止目前 Dom Tree 的上一層事件,後者則是會防止全部 Dom Tree 事件

不多說直接看個例子,先以 stopPropagation 當例子

$("p").click(function(event){
  event.stopPropagation();
});
$("p").click(function(event){
  alert('test');
});
$("div").click(function(event){
  alert('test');    
}); 

執行過後,你會發現點選該區域只會跳出一個 alert 視窗,如果把 event.stopPropagation() 換成 event.stopImmediatePropagation() 則完全不會跳出 alert 視窗。

Google App Engine 收費機制 Frontend Instance Hours

最近把一個簡易的 Web 丟到 Google App Engine 測試,但是發現每天都會因為 Frontend Instance Hours 不夠用,而造成網站被關閉 (Quota 爆漿),上網找一下解決方法,發現了這篇: Frontend Instance Hours 的問題,只要透過底下方式就可以暫時解決這問題,如果是網站流量很大的話,那可能要考慮開啟付費機制。

解決方式

先進入 App engine 後台,點選您的 Application 之後可以看到左邊選單 Application Settings,進入後找到 Max Idle Instances 還有 Min Pending Latency 這兩項設定,我們必須將 Max Idle Instances 設定為1,以及 Min Pending Latency 設定為 15s,但是 Max Idle Instances 預設是不給修改,而是跑 default value “Automatic”,這時候,我們必須把 inbound_services 設定為 warmup 才可以動態調整 Max Idle Instances

設定 inbound_services

請打開網站根目錄底下的 app.yaml,在上面加入
inbound_services:
- warmup
之後將設定上傳後,回到剛剛 Application Settings 將兩個數值調整為上面描述的設定,這樣就可以不用被 Google 收費了,想省錢的朋友們,可以儘快設定。

phpfog 免費提供升級 Silver 一個月

phpFog 最近放出一個消息 Get $29 account credit by just deploying a new App!,內文大意就是說,只要您註冊網站成功,並且新開 application,系統就會在帳戶增加 $29 美元,您隨時可以升級到 Silver Cloud,重點是免費的啦,如果大家想玩看看,就趕快去註冊吧,開放時間是 8 AM PST on 6 March 2012 and runs until 8 AM PST on 9 March 2012.,不確定時間是不是過了 XD,如果已經有帳號的,可以直接到 Live Chat 直接請他們把 Credit 加上去就好。 phpfog 搭配當紅 git 來當作下載及上傳程式碼,跟過去都是用 FTP 方式來運作有很大的不同,所以用此平台之前,請先學會基本 git version control,網站提供了很多 PHP Framework 或 Application,例如 CodeIgniterCakePHPFuelPHPLaravel…等,不管選擇哪一個 Framework,都可以隨時修改,系統只是預設把 Source Code 抓下來放到 Application 裡面,所以可以任意刪除。

PHP 5.4.0 released!! 新功能

php-logo
PHP 官方在台灣時間3月2號終於釋出 5.4 版本,我們可以參考官網的 release announcement,想要抓原始碼下來編譯可以參考此下載連結,這次 5.4 改版,有幾個最主要的新功能可以介紹給大家知道: traitsa shortened array syntaxa built-in webserver for testing purposes,底下來一一介紹。 Continue reading “PHP 5.4.0 released!! 新功能”