Pattern Insight 的妙用

Pattern Insight 是一個商業軟體, 用來保障 (不是保證)release 出去的 code, 不會有先前已經 fix 過的 bug.

它的原理也相當簡單, 拿一個基準點的 reversion (or commit) A, 對照一個 fix 過某個 bug 的 reversion B, 產生一個 patch 的 pattern. 然後在各個版本之間, 用這個 pattern 去 match 可能還沒有fix 此 bug 的 version (or branch), 將它high light 出來.

當然, 做為一個收錢的軟體, 諸如檔案改過名字之類的狀況, 也會考慮到. 這個軟體的精神大概就是這樣.

[試用版下載] 要填一些資料.

[Demo 影片]

Pattern Insight Clone Detection from Pattern Insight on Vimeo.

獅子來了!

蘋果的新作業系統 OS X 版, 代號 LION 的版本已經可以下載了.  花 29.99 USD 就可以把這頭 3.49GB 的肥獅請回家.

因為是用 WIFI 下載, 我午餐都吃完了還沒下載完~~

..

下載完開始安裝…

和 Windows 一樣,  升級 OS 後會有不相容的軟體出現. 不過帥的地方是我不需要的軟體正好因為不相容而被擋掉了. 當然, 如果我的 “大塚資訊" (卡巴斯基代理商)還沒賣就不會這麼瀟灑了.

安裝完 LION 之後, 其他地方似乎只有小小的改變 – 例如 launchpad 和 facetime 跑到桌面上. 但是…滑鼠和 touch pad 的滑動方向竟然和以前變得相反了. 想讓畫面往下移?無論是兩隻指頭往下滑, 或是滑鼠滾輪往後轉, 都會得到畫面往上的效果!!! 反之亦然!

進到系統偏好設定裡面一看, 原來這個 設定叫做 “自然". 哪裡自然啊?我已經習慣成自然 20 多年了, 怎麼會變成這樣呢?原來一切都是為了和 iPhone, iPAD 相容.  

在 iPAD 的世界, 想要內容往下, 手指就往下撥, 新的內容從下面落下來, 這樣挺直覺的. 不過在 NB 的世界, 我要內容往下走, 才會往下撥, scroll bar 也是往下啦啊!現在蘋果硬是把兩種方式統一了, 我真是…無言.

No! 我有話要說, 現在我可以體諒歌星比莉了. 她說要電梯下來, 所以上樓時會按下, 而不是按上. 可見得比莉姐其實是台灣的 “假" 柏斯, 她真是被埋沒了~~~


 

 [後記]

赫然發現  Parallel 5.0 和 Lion 不相容, 只好又花錢去買 Parallel 6.0 升級版. 希望沒有別的東西不相容了. 建議買升級版 39.99 USD 的升級程式 , 頂多加上15 USD 的 6 個月免費升級權利. 如果獅子上市超過 3 個月, 應該就不用擔心 Parallel 和 Lion 有什麼過節了. 不過獅子才剛剛出柙, 我比較偏保守一點.

2011/9/7

買了免費升級權利後, 昨天收到通知可以免費升到 Parallel 7.0 版. 主要的改進是速度變快了.

[睡獅醒了]

原來超慢的獅子在更新父親節版本後, 反應速度確實有所提昇.  不過, 還沒安裝的人可以再觀望一下.

2011/9/7

先前遇到獅子很慢的狀況, 連中文打字都有問題. 經查證主要原因是硬碟有壞軌. 好像獅子用的暫存硬碟比較大, 所以遇到壞軌就會慢到不行. 忍痛換了一顆硬碟之後, 速度就可以了.

 

NPTL 小註解

NPTL 的意思是 "Native POSIX Thread Libray". 話說 Linux 裡面的 thread 原本不是真的 thread, 而是 process 偽裝而成的, 它們被稱為 Linux thread. 基本上, 原來的 Linux thread 被拷貝成多份, 每一份都使用同樣的定址空間, 於是乎可以達到近似於 thread 的效果.

不過畢竟它並不是真正的 thread, 所以若是信號送給其中的一個 Linux thread, 結果這個 Linux thread (實則為 process) 恰好被 block 住了, 那麼這個信號就永遠無法被其他的 Linux thread 收到. 比方說 kill() 很可能就無法把所有的 Linux thread 殺死, 而是有些死了, 有些變成殭屍.

在使用 GDB debug 的時候, 也只能針對某個 Linux thread 做控制,  而不能輕易地用 stop 一個 process ID, 就停止它底下所有的 thread.

為了解決 Linux thread 的問題, Red Hat 提供的 solution 就是 NPTL. NPTL 不需要一個額外的化妝師 (管理線程 – manager thread) 將 process 化妝成 thread. 也不需要在終止所有 Linux thread 之後才能回收它們所使用的記憶體.

相對地, 原本的 Linux thread 相當擅長 process 與 process 之間的同步, 畢竟大家內在都還是 process. 於是 NPTL 也多出了一個機制來增加 process 等級之間的同步. 這個機制就是 futex (fast userspace "mutex).

在 Linux 下編譯的代碼, 可以選擇支援 NPTL 或是 Linux Thread 的 glibc 版本來編譯. NPTL 基本上優於 Linux thread, 但兩者都堪用.

[ref]

1. Linux programmer's manual: futex

2. Linux 线程模型的比较:LinuxThreads 和 NPTL

Skype Kit 小註解

很多人都在用 Skype, 不過對於開發 Skype 需要用到的技術, 誤解還真是不少.

Skype 其實很貼心地把他們的技術都包在一個 Skype Kit 的執行檔裡面, 理論上只要把 API 都接對了, CPU 的 performance 夠快, 其他都不用做.

有人說開發 Skype 要支援語音一對五通話, 其實那是專指 PC 上的 Skype, 非 PC 上的 Skype 只需要支援 1 對 1. 何況 PC 的新規格上已經號稱可以支援音訊通話 1-to-24 了. 有趣的是, 我們看到這麼強大的數字應該就很不容易上當, 但是人家跟我說一定要做 1-to-5 的時候, 我居然相信了.;(

有人說開發 Skype 要支援 G.729, Silk, G.711….,  其實 Skype Kit 裡面什麼都有,  只要 CPU 夠快, 什麼都不用做. 

有人說開發 Skype 要支援 Beamforming, Noise suppression, Echo Canceling, AGC…etc., 其實 Skype Kit 裡面什麼都有, …(後略, 同上). 所以張載才會說, "於不疑處有疑, 方是進矣."  雖然我們要自信信人, 不過更要相信 spec.

如果說 Skype Kit 什麼都做了, 那麼開發 Skype 應用軟體應該是輕鬆寫意吧?非也!這包 Skype Kit 雖然包山包海, 不過一般嵌入式系統的 CPU 可是沒辦法像 PC 那樣揮灑自如. 隨便拿一支 4 microphone  的麥克風陣列, 未必能夠過 Skype 對 TV 廠的認證.

坊間的 Skype 認證麥克風, 主要是給 PC 用的. 因此它們並不需要通過 5 m 的測試 (人和麥克風距離 4 meters), 只需通過 1.5 m 測試. 此時 beamforming 的功能只是 optional, 關掉這個功能反而更好.

更麻煩的是, Skype 做系統認證的時候, 所搭配的每一個 camera 或 microphone 組合都要認證一次. 這導致了做 PC 週邊的認證很容易, 因為軟體全是 Skype 自己寫的, 球員兼裁判當然不會有問題.

而 embbed system 的認證就很麻煩了. 除非跑得動全套 Skype kit, 否則就得搭適合的 camera 和 microphone, 把某些工作得 off load 到 camera (microphone) module 上. 這些非標準規格的周邊配件等於要系統廠按規格訂製, 所以開起案來問題就很多. 

假設 Apple 的 FaceTime 推得很好, 相信 Skype 的空間就會愈來愈小. Skype 打電話到傳統電話還需要 Skype Out, 而用 FaceTime 從  iPad 打電話到 Iphone 簡直就是一塊小蛋糕!如果 Skype 不振作一點, 前方的路肩好像會有點綠油油的 – 前途堪慮啊!

另外, Apple 的 FaceTime 把 FaceBook 的臉 (face) 當成商標了, 看來 FaceBook 要推視訊電話的時候, 可能要多用一張臉來抵擋. 例如: Face 2F (face-to-face) 好像還不錯.


微軟手機變 AP

幾個月前, 偉哥拿著他的新手機問我, “你的手機可以當 AP  (access point) 用嗎?." 讓我著實羨慕了一陣子. 不過我今天找到一個 AP 可以讓我的 i8000 也變成 AP.

首先去 download 一個免費的程式 WMWifiRouter.cab, 適用於 Windows Mobile 的系統. 如果用 V0.91 版或是更早的版本, 它都是免費的. 如果想用新的 2.0 版 (2010/4 之後就沒更新了), 可以試用 21 天. 上網買的價錢是 14.99 EUR.

安裝此程式後, 首先把 “網際網路共享" 打開, 連線方式選 USB 或藍芽都可以.  不過我們不用這些方式來連, 況且 WM 的手機沒辦法透過 USB 和 Apple 的筆電共用網路; 如果選藍芽, 頻寬就只剩 1Mb, 什麼 HSDPA 都是一場空.

接下來打開 WMWifiRouter 這個程式, 若看到 “Not Connected" 和 “Starting ICS", 表示手機的網路還沒有 ready. 手機網路通了之後, 會看到 “Connected to WMWifiRouter" 和 “ready" 字樣. 此時, 筆電上應該也可以看到 “WifiRouter" 這個裝置.  

只要連上它, 就變成以 Wifi 的方式和手機共享網路了. 和使用普通的 AP 沒有什麼差異, 同時, 可以對這個 WiFi 網路設 WEP 的密碼保護. 

如果出差到客戶那邊, 他們很可能不給我們網路用. 此時可以用電信公司的折扣網際網路漫遊, 再拿手機當 AP, 就可以省下買 3G AP 的錢, 含儲值另外一個門號的錢了. 

折扣網際網路漫遊的費用比較低, 以中華電信為例, 短期出差可以考慮的方案是日租型的這一個.

[Note]

台灣大哥大在 6 月底前有一個促銷方案, 1 天吃到飽 399 元, 3 天 1099 元, 5 天 1799 元. 這個應該是測試市場用的, 趕快支持一下. 希望電信業者趕快降價給我們.

http://www.taiwanmobile.com/events/roam_day/

[Note 2]

實際在新加坡試用的結果: 台灣大哥大的漫遊網路相當不穩, 常常找不到訊號. 中華電信略勝一籌. 基本上, 手機拿來當 AP 之後, 耗電相當兇. 即使插著 USB 給手機供電, 開一整天會後, 電池還是會用到沒電, 整個手機也變得熱呼呼的.