沒穿方服

索引

顯示╱隱藏內文

月底發的 cover 專輯「虎の穴2」還是以昭和老歌為主(スパイダー應該不算),同樣也入了動畫歌曲(アタックNo.1,原曲豪情請見 YouTube),選曲跟 1 差異不大;也很慶幸沒選之前官網投票的某上位曲目,恰是我最受不了、聽了要奪門而出的魔音之一。

不過這次仍然沒有回歸發 best 之前那種熱血青春爍爍俊的風格,聽過還是比較疲軟,實在對裹足不前的舊歌迷照顧不周啊…… 至於同期發的單曲「片思いファイター」也是一樣囉。

2008-06-30: 修改為不限 blogspot 專用,請參考新版 bookmarklet

官方說明的具體步驟中,首先的 <body onLoad="javascript pageTracker._setVar('test_value');"> 跟後面「設定篩選器」看起來似乎沒關聯:

「無報告」原文推測為 no_report(不知道哪來的)

請注意「篩選器模式」的值是怪異的「無報告」,換成英文版一看:

英文的 Filter Patterm: test_value

變成 test_value 了 …… 跟 pageTracker._setVar('test_value'); 設的值吻合 —— 所以是翻譯沒做好啊。


實際上 pageTracker._setVar('test_value'); 會在電腦上儲存一個 __utmv=123456789.test_value 的 cookie,其中 123456789 每個網站都不一樣。一旦訪客電腦裡有這個 cookie,在 Google Analytics 的「訪客 - 使用者定義」就會出現:

test_value 出現了

然後設定「篩選器模式」為 test_value,該報告就會被排除,不再出現。

如此一來,具體流程「建立會設定 cookie 的網頁 → 造訪該網頁以設定 cookie → 設定篩選器排除具有該 cookie 的電腦」應該很清楚了。


還沒完,blogspot 使用者還有問題:要在哪建立新網頁?

新網頁需要在 body onLoad 動手腳,而且不能讓一般訪客看到(有看到就會被下 cookie 而遭排除)—— 很麻煩。

所以我想改用 bookmarklet 的方式,內容就是找到 pageTracker,請他 ._setVar 即可。原始碼拆開如下:

javascript:
if(pageTracker) {
  var v=prompt(%22請輸入要用於「篩選器模式」的字串:%22,%22test_value%22);
  if(v!=null) {
    pageTracker._setVar(v);alert(%22已設定 cookie: %22+v);
  }
}
void 1

將 bookmarklet 加進書籤便可使用 → 設定排除用的 Cookie (Google Analytics)

完整流程:

  1. 將前述 bookmarklet 加進書籤列。
  2. 打開網站的首頁,然後點前述 bookmarklet,應該會跳出對話框:

    對話框內容
    (如果沒反應,就是找不到 pageTracker 而發生錯誤,不會有任何效果)

  3. 填一個字串進去。不一定要填 test_value
  4. 前往 Google Analytics 設定篩選器,「篩選器模式」填剛才回答的字串。
    我的設定長這樣,請別連名字都照抄:

    篩選器設定

  5. 別忘了把篩選器套用至網站設定檔。

這樣就完成了,我測了兩天,流量有正確尷尬下去,所以應該是有效的。

CodeIgniter 社群的 Session library 數量很多,而且越來越多 …… 之前我選用 OB Session 不料沒多久作者便離開 CI 轉乘 Kohana,害我現在想換 lib 又不曉得要換哪支了。

  session API cookie 內容 資料庫 已應用於
CI_session CI   所有資料 選用  
DB Session CI 獨立 (1.5) SID 必須 auth, FreakAuth
OB Session CI 取代 (1.5) SID (db) 選用  
NG Session CI 取代 (1.6) SID (db) 選用  
PHPSession PHP 獨立 (無) SID    
Native Session PHP 取代 (1.5) SID   sentry
RA session PHP 獨立 (1.5) SID   RA Auth
KNDB Session PHP 取代 (1.6) SID 選用  
※ 非官方資料,2008-04-03 製表。詳細如下述:
  • session

    CI_session 會建立自己的 session 資料(而非使用 PHP 既有的 $_SESSION 變數),瀏覽器必須啟用 cookie,而且會失去 $_SESSION 的某些特徵(後述)。這邊表格填 CI 就表示使用 CI 的 session,填 PHP 則是使用 PHP 的 $_SESSION。

  • API

    獨立表示單獨的 library,例如 DB Session 要以 $this->db_session 存取;取代表示直接覆蓋 CI 的 Session 類別,所以程式寫法除了新增功能(例如 flashdata)之外沒有改變。

    後面加註的是最接近的 CI 版本號,由於 CI 1.6 才正式新增 flashdata 功能和 sess_time_to_update(重新產生 session id)選項,所以舊的 lib 使用前可能需要修改才會與 CI_session 一致。註:即使版本相符,還是要留意選項歧義,例如 OB Session 的 session_expiration 設為 0 有特殊意義。

  • cookie 內容

    一般 session 只會把 SID (session id) 存進 cookie,但是 CI_session 會把所有資料都存進去,拿到 cookie 的壞人就有機會解出資料內容。

    表格填 SID 表示只會把 SID 放進 cookie;填 SID (db) 表示若用資料庫儲存資料,cookie 內容就只會放 SID(若沒資料庫,還是會全放 cookie)。

    另外 PHP 的 $_SESSION 在沒有 cookie 支援時仍可以用 URL 來傳 SID,只是這邊的 lib 除了 PHPSesson 在原始碼好像沒看到之外,都還是設計為需要 cookie 支援的。即使可以使用基於 URL(禁用 cookie)的 session,CodeIgniter 也要稍微修改才能用網址傳 SID 吧。

  • 資料庫

    把 session 資料存在資料庫。CI_session 僅儲存 SID, ip_address 等資料,以用於驗證;其他 lib 會更進一步將 session->set_userdata 設的資料存入名為 session_data 的 text 欄位。

    另外,雖然只有 KNDB Session 提供類似標準 CI 的選用資料庫選項,但其他基於 PHP $_SESSION 的 lib 似乎也能由 php.ini 的 session.save_handler 指定用資料庫儲存資料。

  • 已應用於

    記錄該 library 已被包含於哪些認證用的 library

最後看來,這些 lib 主要就分 CI Session 和 PHP Session 兩派,其餘選發佈順序晚的應該就差不多了。

無限回廊
↑點他會被吸去官網

稍微玩了 PSP無限回廊。遊戲內容請看官網的「概要 - 基本法則」馬上就會懂。

這遊戲簡化得很不客氣,從原作(九州大學研究員藤木淳的互動軟體 OLE Coordinate System,可視為簡易的無限回廊場景編輯器)的 5 種錯視開始,設計 solo, pair, others 三種過關規則和 100 多個關卡構成遊戲,其餘就不過度製作了。沒有算分數,沒有故事背景,只有回廊讓你一直旋轉畫面、一直過關而已。

精簡很好也很符合時代潮流,可是結果好像變成題庫遊戲了,沒有一個意圖把回廊串連起來。

……好處是想玩就玩、想停就停,隨時稍有不適,大可以“主觀的跳關”或“主觀的關機”也不會有負擔和牽掛。

簡單的音效功能,應該沒人想自己寫吧。
先看幾個現存可用的:

  • Audio Engine

    就是 Scriptaculous 的 sound.js,單純地產生 <embed> 來發聲,在 ie 使用 bgsound,其他瀏覽器則仰賴 QuickTime 支援。可做 track 控制及全域 enable/disable 的切換;再移植版 jQuery 的 jquery.sound.js 還可設定 timeout 將產生的 <embed> 移除。

    $.sound.play( '/path/to/some.wav' , {track: "track1";} );
  • JSSoundKit (Javascript Sound Kit)

    透過 ActionScript 的 ExternalInterface,寫出一個 proxyMethods 方法來操作 Flash Sound 物件。功能自然也跟 ActionScript 2.0 的 Sound 類別一樣。

    var mysound = new Sound();
    mysound.loadSound('/path/to/some.wav' , true);
  • SoundManager2

    同樣依靠 flash,但它是再設計封裝過的、更完整的 API,也比 JSSoundKit 穩定可靠。壓縮後約 18 kb 說龐大難養也不至於。

    soundManager.play('mySound','/path/to/some.mp3');


※以上僅介紹我試用過的,當然有其他選擇,例如 MooTools 用的 mooSound


最後我懶得探索,於是自己寫了 jQuery plugin:flashSound,測試一下還算堪用,不過它只有最基本的功能(包括停用音效),可以發出登登登的聲音,但是要做歌曲播放器的話,很勉強喔。

詳細使用方面,接受兩種風格的寫法,其之一:

$.flashSound( 'foo.mp3', {id: 'se1'} );     // 讀取聲音檔(還不會播放),並將物件命名為 se1
$.flashSound.play('se1');                   // 播放
$.flashSound.play('se1', true);             // 播放,但先停止前一個播放的聲音
$.flashSound.stop('se1');                   // 停止播放
$.flashSound.remove('se1');                 // 移除 flash 物件

或者

var se1 = $.flashSound( 'foo.mp3' );   // 讀取聲音檔
se1.play();                            // 播放
se1.play(true);                        // 播放,但先停止前一個播放的聲音
se1.stop();                            // 停止播放
se1.remove();                          // 移除 flash 物件
// 請留意若在 se1 建立前呼叫 play, stop,會發生「物件沒有該方法」的錯誤。

另外全域啟用╱停用音效的方法是:

$.flashSound.enable();        // 全面啟用 flashSound
$.flashSound.disable();       // 全面停用 flashSound


下載、測試請至 flashSound 首頁參觀。