Thursday, February 14, 2008

放屁歌~~

前陣子我迷上了日劇 交響情人夢

裡面有段屁屁體操很有趣,就抓了當手機鈴聲,還找到了有段小朋友跳屁屁體操的 MV 給女兒看。

沒想到我女兒好愛啊~
常常說要看放屁歌~ 呵呵

而且,還會跳唷

Saturday, January 19, 2008

虛擲光陰~

已經超過凌晨三點.... 仍然沒有睡意

十幾年前就跟指導教授說過:「熬夜對身體不好」
嘿,當然是在指我自己~

但是過了那麼多年,我卻還是深夜未眠

腦袋裡面一直沒法休息,問自己 2007 做了什麼?

Ans: 什麼都沒有

是的,我又虛度了一年~

其實,2007 我還是有學到一件事:就是

我老了... 真的!

Friday, January 11, 2008

采盈上學去

其實從好幾個月前,采盈就一直在念要去上學,常常背著個小背包,喃喃自語:背書包~去上學~

想想,其實她現在去保母家確實是已經沒有什麼新東西可以學習了,每天在家庭環境裡面,就只能玩玩拼圖,玩具,看電視,看那幾本書~(還不識字)可能去上學會對她比較好,雖然還沒滿三歲~

這週三就讓他到附近的幼稚園去試讀 2hr 看看

沒想到,這小妮子適應非常好,喜歡得很!說要上學不是說假的~
真是讓我意外,小孩不是應該都要哭著去幼稚園嗎...

第一天上學回來,我問:今天老師教什麼?

采盈:教跳舞

我:跳給爸爸看好不好?

Saturday, December 29, 2007

My work-around for flash player 9.0.115 loadPolicyFile()

上一篇說了一堆,想想還是把我的 code sample 放上來好了~

var playerVersion:String = System.capabilities.version;
var bkidx:Number = playerVersion.indexOf(" ");
var platform:String;
var majorVersion:String;
var minorVersion:String;
if (bkidx >= 0) {
    platform = playerVersion.substring(0, bkidx);
    var secondHalf:String = playerVersion.substring(bkidx+1,
                                         playerVersion.length);
    var vers:Array = secondHalf.split(",");
    majorVersion = vers[0];
    minorVersion = vers[2];
}

var drcID:Number:
function doReadlConnect(server, port) {
    clearInterval(drcID);

    // do real stuff here
}

function myConnect(server, port) {
    System.security.loadPolicyFile("
http://"+server+"/crossdomain.xml");
    System.security.loadPolicyFile("xmlsocket://"+server+":"+port);

    var sock:XMLSocket = new XMLSocket();
    sock.connect(server, port);
    sock.onConnect = function() {
        this.close();
        delete this;
    }

    var waitms = 1000;
    if (majorVersion == "9" && minorVersion == "115")
        waitms = 5000; // special for 9.0.115
    drcID = setInterval(this, "doRealConnect", waitms, server, port);

}

注意,這只是節錄出來的 sample,不要照抄去用... XD

buggy loadPolicyFile() in flash player 9.0.115

最近公司的程式被回報在某些 flash player plugin 上會出問題,進一步發現問題只在 9.0.115 才發生,跑 flash player 9.0.45, 9.0.47 都正常。

到 Adobe devnet 看了才知道 9.0.115 在 security 控管上有了新的方式,有興趣的可以看這裡,這版還只是第一階段變動,未來還有第二階段。

由於我們的程式需要開 XMLSocket 連線到其他機器的特殊 port (低於 1024),所以只能使用 loadPolicyFile() 來取得 XMLSokcet 的開啟權限。但是這個動作在 flash player 9.0.115 卻有問題~

根據 Adobe 文件,9.0.115 在 XMLSocket 開啟時會先連去目標 server 的 port 843 試圖取得 meta policy file,若是該 port 沒有回應,則會歷經一個 3sec 的 timeout,然後才改連到目標 port 並發出 "<policy-file-request/>" 的命令要求下載 policy file。

然後~

才會允許 XMLSocket 連線...

如果想要避免連往 port 843 的 3sec timeout,就必須在程式中先下 System.security.loadPolicyFile() 主動去取得 XMLSocket policy file,那麼就能馬上接著開啟 XMLSocket 連線了。

但是,很可惜,事實上在 9.0.115 中 loadPolicyFile() 根本就不會動作!

9.0.115 完全不會去執行 loadPolicyFile() 取得 policy file,而是只會等到程式在做 XMLSocket:connect() 時,才開始進行到 port 843 取 policy file 的一連串流程...

結果就是,程式必須等將近 5sec 之後,才能正常地進行 XMLSocket 連線~
很囧~

想要在 9.0.115 中正常開啟 XMLSocket 連線的辦法,目前就只能先做一次 dummy connecting 讓 player 開始進行要求 policy file 的流程,然後等待約 5sec 後才做真正的連線,那麼程式就能運作了...

所以咧,我只好在程式中判斷 flash player 版本 (可以使用 System.capabilities.version 取得),然後針對 9.0.115 做這個 5sec waiting。

很可笑的 bug,浪費我不少時間在確認 loadPolicyFile() 在各版本 flash player 是否有正常動作。只能希望下一個版本會改進了。

有些人也遇到這個問題,相關討論在這裡。
本來想上去留言我的解決方式,但是還要開帳號,還是算了... 懶~~