2013年8月22日 星期四

[RoR] Nginx + Passenger on OSX

先安裝Passenger

gem install passenger

在安裝Nginx

passenger-install-nginx-module


這樣就安裝好了

不過配置的部份可能是裝的版本比較新跟網路上其他的人有些不一樣

使用vim編輯 nginx.conf
vim /usr/local/nginx/conf/nginx.conf
 
在server{}中加入 rails_env development
在location / {}中設定root到專案的public資料夾
然後加入passenger_enabled on
 
這樣基本設定就結束了
 
使用sudo nginx -t測試
使用sudo nginx運行
使用sudo nginx -s reload重讀配置
使用sudo nginx -s stop停止 
 

2013年8月13日 星期二

[Android] Launch Mode

在談Launch Mode之前先談談Task

Android中有所謂的Task系統
再啟動一個App的時候,同時也會產生一個新的Task

如果在其中呼叫任何Activity的時候,他會在Task中以"堆疊"的方式呈現
畫面上會顯示Task中最上層的Activity

現在來談Launch Mode中的四個選擇,在startActivity的回應

standard:不管如何,一律產生新的實體
singleTop:如果Activity在Task的最頂端會使用原本的實體,除此之外會產生新實體
singleTask:在Task中只會有唯一一個實體
singleInstance:這個Activity會存在於別的Task,而且為唯一

2013年8月12日 星期一

[Android] 虛擬鍵的隱藏與低可見度

以下的API LEVEL需求為14以上

低可見度
this.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE);
隱藏
this.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);

在這裡要注意的是,這些動作都是一次性的
當事件觸發虛擬鍵導致虛擬鍵的狀態被設定為顯示的時候
如果不再去設定它的狀態,他將會一直維持

同場加映:三秒中自動將虛擬鍵低可見化

private Handler myHandler = new Handler();

private Runnable runTimerStop = new Runnable() {
        @Override
        public void run() {
            hideNavigation();
        }
};

private void hideNavigation() {
        if (Build.VERSION.SDK_INT > 13)
                this.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE);
}

//在dispatchKeyEvent中增加下列
myHandler.removeCallbacks(runTimerStop);
myHandler.postDelayed(runTimerStop, 3000);

2013年3月10日 星期日

[Cocos2d-x] 關於 CCTextureCache

這個東西是用來管理Texture的快取

最近發現同事常常在使用一張圖片後
馬上就下了 CCTextureCache::shareTextureCache()->removeTextureForKey

感覺起來好像沒有什麼錯,用了一張圖之後就把他從快取移出

但這個部份有個很大的問題
當我們使用 removeTextureForKey的時候他會做兩件事情
第一件是從管理列表中移除這個Texture資料
第二件是"嘗試"移除 Texture

關鍵就在於他去移除 Texture的時候,那個Texture是有人在使用的
所以他不會真的去移除它,但是他卻從我們管理的清單中被移除了
隨然Texture有AutoRelease的機制,但卻無法掌握他什麼時候才會被釋放
也無法掌握現在到底用了多少資源在什麼地方上

結論就是要移除Texture的話,請先移除使用它的物件
然後使用 removeUnuseTexture

ps.  removeUnuseTexture 算是蠻吃資源與時間 請審慎評估使用時機