前進蘭桂坊

這個蘭桂坊可不是香港的那一個, 我要介紹的是上海的 “蘭桂坊酒家". 說是酒家, 其實我是看了網路上的介紹, 準備要去吃麵的…

http://zhidao.baidu.com/question/7432466 

如果它的介紹屬實, 那蘭桂坊豈不是上海灘第一麵館了嗎? 這豈容錯過呢? 於是我冒著嚴寒 (雖然還有個 5 度 6 度, 但是和我早上在深圳 20~30 度比起來, 上海算是嚴寒了), 逆著風雨, 披著仿的 Gortex, 奮勇地朝著反方向前進! 

反方向? 對啊! 我是路癡嘛! 中午就只吃了一包康師傅, 正準備飽暖思思瑞昱的時候, Irene 就真的從 MSN 來問 ATV 沒有訊號時 AI 要怎麼偵測了. 何況早上五點就起來準備搭機, 今天休息著實不太夠. 等我衝出五六十里地, 我領悟到, 我走錯了…

於是我攔了車準備直奔蘭桂坊!

無奈, 問題又發生了. 蘭桂坊在 “娄山关路" 路上, 這個上面米, 下面女的這個字, 它是婁的簡字. 我把它和虹橋路聯想在一起, 所以和司機有點雞同鴨講, 不知如何從中山西路到虹橋路, 再到婁山關路. 其實要走延安路才會看到婁山關路哪!

因此我從虹橋路又走了一段才找到蘭桂坊. 這是一家中型的餐廳, 裡面客人不少, 顯得有些擁擠. 或許是服務員也不少, 桌椅又太靠近的關係吧! 總之, 服務員喳呼喳呼, 鄰座香菸裊裊, 用餐環境不是太好. Anyway, 東西好吃最重要是吧!

我點了網路上推薦的雪菜黃魚煨麵和一塊排骨. 麵要 28 塊, 排骨要 8 塊. 配上特別的 “泰康黃牌" 辣油之後, 排骨還算好吃, 不過對於吃慣了厚片豬排的我, 感覺這片排骨還是單薄了些!

至於黃魚煨麵, 麵本身滿普通的, 湯有點像是豬骨熬的高湯那樣, 濃濃白白的. 考量煨字的意義, 那應該就魚湯了!

 煨是將原料(有的是生料,如果是帶有腥臊氣味的生料需經過 冷水鍋燒開後撈出,將血污洗淨)用油鍋炸成黃色,然後將原料放 入沙鍋內,加入料酒、蔥、姜、香料,調味品及水偎制,有的還 需加入雞肉或豬肉等同偎,使其酥軟、香鮮、汁濃。

[ref] http://members.fortunecity.com/cookmethod1/6.html

真正讚的部分是黃魚, 這一碗麵裡面有十多塊的黃魚片, 軟嫩非常, 相當鮮美. 我想它能夠出名就是靠這一味了.

因為胃納有限, 所以我只品嘗了這兩樣. 感覺今天都沒吃到蔬菜, 所以在回程看到全家便利商店時, 就很熱情地去捧場買了一盒沙拉 (7.5 人民幣喔), 完成今天的冒險之旅.

自由的代價

睽違一年多之後, 我又到大陸出差了. 在抵達深圳之前, 我就聽說有人會準備一些 VPN 的 tool, 讓他們可以在大陸看到台灣的網站. 本來以為不會這麼誇張的, 但是想不到, 我發現我真的連不上自己的 blog. 嗯, 那麼我支援繁簡轉換的功能…, 原來是沒有意義的啊!

要花錢買 VPN? 開玩笑, 我只來幾天而天, 何必這麼麻煩, 聽說雖然  VPN 不貴 (10 USD / Month), 但一次至少要買 3 個月呢! 俗語說得好, 有門必有縫, 有牆必有洞! 巨牆再高再大, 下面鑽不過去, 上面總是有翻牆梯可以用吧! 上網搜了一下, 相關的軟體包括 "XX 門" 和 "無 X" 兩種, 用了它之後, 就可以連到外面的花花世界了. 只不過他們似乎只支援 IE, 想要開 8 個瀏覽器的人, 應該是沒輒.

我想那些貼文的人應該是不想被中國的網軍盯上, 所以不敢打出軟體的全名, 不過, 我們在台灣怕甚麼呢? 呃, 我人還在中國耶, 真有點怕怕的… 鼓吹大陸同胞違反網路管制, 應該也是個罪名吧? 不過, 平頭百姓只是想看看 facebook 和 Youtube, 國家和人民就別那麼認真好嗎?!

有趣的是, 如果你人在大陸, 其實多半搜索不到這種軟體, 知道了也沒處下載. 而知之者本身早就超然於網外了, 政府抓不抓都是一樣. 真正因為 "偶遇" 而能藉此突破網路長城的, 相信只是茫茫人海中的一小嘎嘎而已, 沒什麼好擔心的.

總而言之, 大陸的網路長城一直在進步, 如果你抓的是古早版的自由門, 那門早就已經關了, 你非得用個比較新的 6.97 版才可以. 無界也是一樣要用 9.92 版之類的, 只有日新月異, 才能夠突圍. 這個道理在哪裡都講得通.  想抓軟體的人請洽阿榮福利味, 阿榮裡面的東西真是又多又新.

書到用時方恨少之 speech review

回想很多年以前, 我在做 speech 的時候, 曾經和成大的王駿發教授, 交大的吳炳飛教授學過很多東西. 不過現在連王教授的弟子吳宗憲教授都升任副院長了, 可見得真是光陰似箭…. 我不免又想到當時做 internet 的時候, 也曾經和張系國教授一起開過會. 只可惜我沒有買過他的書, 我看的那些都是從交大圖書館借的或是看報紙連載的, 雖然他的著作我每一本都讀過, 但是我並沒有甚麼 "皮牧師正傳" 之類的書可以請他簽名, 想想真是殘念啊! 總之, 白頭工男話當年, 當初腦海中的知識, 似乎也俱往矣囉!

千金難買早知道, 現在我們又要做 speech 的東西了. 稍微 survey 一下, 現下的 speech 演算法還是免不了要用 LPC (linear-predictive coding) 與 LSFs (line-spectral frequencies). 過去從語音訊號中取得 LPC, 我只知道要先做 autocorrelation , 然後用 Levinsion -Durbin recursion 找出 LPC. 剛才看了一下, 還有個沒啥印象的 Yule-Walker method. 既然後者比前者晚了 10 年才推出 (2003 vs 1993), 不知道是否有比較厲害?!

得到 LPC 係數之後, 再轉到 frequency doamin,  其特性會比較'穩定. 所以 LPC 會轉成 LSP (line specttral pair) 或 LSF. 一般而言, LSP 會被量化, 就像 video coding 的 DCT 係數也要量化一樣. 接下來也和 video coding 一樣, 量化的結果再反量化, 補上一些內插值, 和原來的訊號計算求得殘餘量 (residual),  Residual 的部分就可以查表編碼了.

其中, 可以把先前獲得的資訊拿去動態建立 code book, 若是沿用固定的 code book 則可以省略這一步, 根據量化後的 LSP 和 residual, 我們可以從 code book 中找到最適當的 code 來代表這個 sub-block 或是 sub-frame. 當然, 此時多半會運用均值化 (normalization) 的技巧, 使得 11111 和 99999 都對應到一樣的 code, 只不過它們的 gain 不相同而已. 

複習起來, 差不多就是這樣了. 以後有想到什麼再來補充.

[note]

再看了一下, Levinson-Durbin 可以用來解 Yule-Walker equation. Yule-Walker method 本身是輸入 autocorrelation 數列, 輸出 PSD (power spectral density). 所以兩者之間沒有誰優誰劣的問題.

[ref]

1.  http://thesis.lib.cycu.edu.tw/ETD-db/ETD-search-c/getfile?urn=etd-0714105-140440&filename=9278046.pdf

2.  http://thesis.lib.ncu.edu.tw/ETD-db/ETD-search/getfile?URN=89521046&filename=89521046.pdf

Linux 下的 object 與 library 檔

從客戶那邊拿到一個 Linux 下的源代碼, 例行 ./config, ./make 之後, 在我的 Cygwin 底下生出很多檔案, 但是並沒有一個執行檔, 倒是有很多 .lo 和 .la, 這是平常我們用自家開發的 embedde system tool chain 所不會遇到的. 這些是甚麼東西呢?

首先我們要瞭解為何需要 L 字頭的檔案, 而不是 .o 或 .a 就好? 原因在於要支持動態連結 (dynamic link). Libtool 就是這樣的一個工具, 以便產生出有益於 dynamic link 的 .o 與 .a, 也就是 .lo 與 .la.

.la 檔是一個文字檔, 裡面描述了此 library 的 version, name 等等, 當然也定義了 dlopen, dlpreopen 要去開哪個 library. 靜態連結與動態連結的 library 分別記錄在 old_libaray = 'libxxx.a' 與 library_names = ' ' 的條目之下. 據說 .la 檔也可以包含另一個 .la 檔, 但我沒看過實例.

.lo 檔也是文字檔, 裡面大概包含 PIC object 和 non-PIC object 的 object name. 所謂 PIC 就是 position-independent code 的意思. 如果程式碼與 position 相關, 當然就不容易動態連結囉!

既然 .la 和 .lo 都是文字檔, 因此它們只是 libtool 底下的溝通工具, 透過 libtool 做 link 的時候, 它們便擔任把真正的 .a 和 .o 傳給 gcc 給工具. 

.so 這東西就是指 shared object, 適用於動態連結, 而 .o 就適合靜態連結, .a 則是 .o 的集合, 也就是靜態的 library.

[ref]

1. http://www.eetop.cn/blog/html/40/202640-8862.html (簡體)

SIP 小檔案

SIP 是指 Session Initiation Protocol, 規格可以從 RFC 3261 查到. 它是 application layer 的 protocol, 位在 OSI [ref 2] 的最上層, 需要建立在底層的 protocol (TCP / UDP) 才能運作.

另一方面, SIP 又只管通訊的建立, 實際上還要再搭配 RTP (Real-time Transport Protocol; RFC 1889)、RTSP(Real-Time Straming Protocol;RFC 2326 等通訊協定. [ref 1]

SIP 的功能包括下面五件事: [ref 1]

(1) User location:透過系統可以確認目前使用者的終端設備位置,以便邀請使用者加入多媒體會議或者是與使用者建立連線。可以想像類似目前手機定位功能。

(2) User availability:決定使用者是否有權限可以加入特定多媒體會議或族群。

(3) User capabilites:決定使用時的媒體型態與媒體參數。

(4) Session setup:建立呼叫端與被呼叫端之間的多媒體連線與連線參數設定功能。

(5) Session management:包含資料傳輸與結束連線、修改連線參數與服務要求等相關功能。

至於 SIP 的指令有六個: [ref 3]

SIP 標準中定義的六種方法
方法 說明
INVITE 初始化
ACK 初始化確定
BYE 要求會議終止
OPTION 功能查詢
CANCEL 取消
REGISTER 提供 location server 使用者位置

因為 user 的位置可能不固定, 所以在查詢對方位置時 (可能透過 proxy), 必須去定位伺服器 (location server) 詢問對方的 URL.

在 [ref 3] 的表 4.2 有一個超讚的 SIP 與 H.323 比較表, 由它可以得知, 雖然 SIP 只負責建立連線, 但是具有簡單, 模組化, 與網路相容, 即時等優點, 所以在 video conference 的規格競賽中, 有日漸重要的趨勢.

[ref]

1.  http://justblogger.pixnet.net/blog/post/387757

2. OSI model

      from http://www.tomax7.com/aplus/osi_model.htm

3. http://eshare.stut.edu.tw/Etd/2005_3/etd-0407109-183704-224-001.pdf (日文, 圖表是中文)