月底發的 cover 專輯「虎の穴2」還是以昭和老歌為主(スパイダー應該不算),同樣也入了動畫歌曲(アタックNo.1,原曲豪情請見 YouTube),選曲跟 1 差異不大;也很慶幸沒選之前官網投票的某上位曲目,恰是我最受不了、聽了要奪門而出的魔音之一。
不過這次仍然沒有回歸發 best 之前那種熱血青春爍爍俊的風格,聽過還是比較疲軟,實在對裹足不前的舊歌迷照顧不周啊…… 至於同期發的單曲「片思いファイター」也是一樣囉。
索引
月底發的 cover 專輯「虎の穴2」還是以昭和老歌為主(スパイダー應該不算),同樣也入了動畫歌曲(アタックNo.1,原曲豪情請見 YouTube),選曲跟 1 差異不大;也很慶幸沒選之前官網投票的某上位曲目,恰是我最受不了、聽了要奪門而出的魔音之一。
不過這次仍然沒有回歸發 best 之前那種熱血青春爍爍俊的風格,聽過還是比較疲軟,實在對裹足不前的舊歌迷照顧不周啊…… 至於同期發的單曲「片思いファイター」也是一樣囉。
2008-06-30: 修改為不限 blogspot 專用,請參考新版 bookmarklet。
官方說明的具體步驟中,首先的 <body onLoad="javascript pageTracker._setVar('test_value');"> 跟後面「設定篩選器」看起來似乎沒關聯:
請注意「篩選器模式」的值是怪異的「無報告」,換成英文版一看:
變成 test_value 了 …… 跟 pageTracker._setVar('test_value'); 設的值吻合 —— 所以是翻譯沒做好啊。
實際上 pageTracker._setVar('test_value'); 會在電腦上儲存一個 __utmv=123456789.test_value 的 cookie,其中 123456789 每個網站都不一樣。一旦訪客電腦裡有這個 cookie,在 Google Analytics 的「訪客 - 使用者定義」就會出現:
然後設定「篩選器模式」為 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)
這樣就完成了,我測了兩天,流量有正確尷尬下去,所以應該是有效的。
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 | 選用 |
CI_session 會建立自己的 session 資料(而非使用 PHP 既有的 $_SESSION 變數),瀏覽器必須啟用 cookie,而且會失去 $_SESSION 的某些特徵(後述)。這邊表格填 CI 就表示使用 CI 的 session,填 PHP 則是使用 PHP 的 $_SESSION。
獨立表示單獨的 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 有特殊意義。
一般 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 多個關卡構成遊戲,其餘就不過度製作了。沒有算分數,沒有故事背景,只有回廊讓你一直旋轉畫面、一直過關而已。
精簡很好也很符合時代潮流,可是結果好像變成題庫遊戲了,沒有一個意圖把回廊串連起來。
……好處是想玩就玩、想停就停,隨時稍有不適,大可以“主觀的跳關”或“主觀的關機”也不會有負擔和牽掛。
簡單的音效功能,應該沒人想自己寫吧。
先看幾個現存可用的:
就是 Scriptaculous 的 sound.js,單純地產生 <embed> 來發聲,在 ie 使用 bgsound,其他瀏覽器則仰賴 QuickTime 支援。可做 track 控制及全域 enable/disable 的切換;再移植版 jQuery 的 jquery.sound.js 還可設定 timeout 將產生的 <embed> 移除。
$.sound.play( '/path/to/some.wav' , {track: "track1";} );
透過 ActionScript 的 ExternalInterface,寫出一個 proxyMethods 方法來操作 Flash Sound 物件。功能自然也跟 ActionScript 2.0 的 Sound 類別一樣。
var mysound = new Sound();
mysound.loadSound('/path/to/some.wav' , true);
同樣依靠 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 首頁參觀。