highlight.js

星期五, 2月 17, 2012

機車, PID 4 佔了我的 Port 80!

剛剛開完會後想跑 Apache Server 測試, 一直看到 Port 80 被佔用, 用 netstat 查了一下, 發現果然有奇怪的 process 佔用了 port 80, 更奇怪的是這個 process 的 PID 是 4?再用工作管理員查下去, 發現這個 process 是 System Kernel, 心中一陣寒意, 難道是被種了什麼神通廣大的木馬?Google 一下, 發現遇到這個問題的人還真不少, 最後疑是把 Web Deployment Agent Service 給移除後就正常了, 有興趣的朋友可以參考以下這幾篇文章:

星期四, 2月 16, 2012

IE 歷史悠久的捉迷藏臭蟲 (Peek-a-boo bug)

同事之前實作了一個網頁 AP, 可是在 IE 上會發生文字隱形的狀況, 但是字仍然是存在, 只是看不到, 如果在 IE8 上可以用滑鼠選取該段文字, 或是把隱形的那一段捲到顯示區域外, 再捲回來就可以看到了, 可是如果是 IE9, 上面的方法都無效, 但如果按 Alt 顯示功能表或是按 F12 顯示開發者工具列, 就顯示出來了, 但在隱藏功能表或是開發者工具列, 文字就又隱形。

追查了之後才發現, 這應該是 IE 中歷史已經非常悠久的捉迷藏臭蟲 (Peek-a-boo bug), 詳細的解說可以參考 IE6 Peekaboo Bug 這篇文章, 基本上就是 IE 解譯 CSS 的問題, 而解決方案可以參考 Fixing invisible or disappearing text and double margins in Internet Explorer 這篇文章, 簡而言之, 就是在會消失的文字所屬的 div 加上這樣的 CSS style:

{ height: 0.01%; }

不過爬文的過程中, 明明有人說 IE7 已經搞定這個 bug 了, 顯然 IE 果然很複雜, 這麼多年了, 我還可以在 IE9 上遇到這樣的問題!



星期五, 2月 10, 2012

node.js 的 ServerResponse 回應 binary data 的問題

這兩天在測試時一直被一個問題困擾, 我是用 node.js 寫一個簡單的 HTTP Server 接收 GET request, 這個 server 會把傳入的 GET 參數 (都是表示整數的字串) 轉成整數後加總傳回, 一開始都用文字的方式傳回, 測試也都正常, 可是因為我的 client 要處理字串有點麻煩, 所以當我嘗試把加總值改成用 binary data 傳回一個 16 位元的整數值時, client 這邊一直收不到答案, 經過一番測試, 發現 node.js 這邊會把 HTTP respnse header 與 binary data 分開成兩次傳回, client 這邊沒有考慮到這個問, 於是就收不到答案了。

後來直接看了一下 node.js 裡頭 http.js 原始碼, 發現果然如果使用 ServerResponse.end() 或是 ServerResponse.Write() 送出回應時, 如果 header 尚未送出, 而要回應的資料是字串的話, 就會直接將 header 與回應內容串在一起後送出, 但若是回應的是 binary data, 就會將 header 與 binary data 分開送, 事實上, 只要傳送的資料的編碼不同, 就會分開傳送。

如果您也使用 node.js 的話, 希望這個經驗能夠避免一些問題。

命令提示字元 (DOS Prompt) 下的小技巧

天啊, 我居然今天才發現, 原來在 DOS prompt 下, 可以使用 tab 鍵直接幫你輸入檔案名稱或是目錄名稱, 這在輸入指令或是參數時超好用, 尤其時檔案名稱若是包含有空白字元、或是檔名有夠長的時候, 簡直就是救星!

舉例來說, 如果我在某個資料夾下有兩個檔案, 分別是 test.js 與 testone.js, 當我在 DOS Prompt 下按 tab 鍵, 就會出現 test.js, 再按一次則會出現 testong.js, 如此輪流。如果你先鍵入 t, 再按 tab 鍵, 那麼就會出現以 t 開頭的第一個檔案名稱, 更棒的是, 如果檔案名稱包含有空白字元, 也會幫你加上 "" 括起來, 省去自己鍵入檔名的麻煩。

星期三, 2月 08, 2012

Android Screen Cast 軟體--可將 Android 裝置畫面顯示在 PC 桌面上的軟體

最近因為同事有需求要再簡報時直接在 PC 上秀出 Android 手機的畫面, 因此找了一下, 試過之後以 Android Screen Cast 表現最佳, 其他試過的軟體雖然也都可以運作, 但因為 fps 太低, 所以 PC 上看到的畫面都是斷斷續續的, 不像是連續操作的動作。這類軟體運最方式大都類似, 具有以下特點:
  1. 都需要事先裝好 Android SDK (當然, 一定得先裝好 JDK)
  2. 都需要使用 ADB, 所以也要事先裝好所使用手機的 ADB driver
  3. 都是使用 Java 撰寫, 所以只要 Android SDK 可用的平台, 也都可以使用
  4. 手機要設定『設定/應用程式/開發/USB除錯』
如果執行後出現以下錯誤訊息:

點選『詳細』鈕後, 若錯誤原因是『Timeout getting device list』:

請直接使用 SDK 中的 ADB 工具程式執行 "adb devices" 指令連接你的 Android 裝置:

應該就可以執行了, 像是以下這個畫面就可以看到 Android 的照相畫面:


目前這個軟體的 fps 大約可到每秒 5 張畫面, 因此在 PC 上看起來雖然還是有些頓, 但已經比我試過的其他軟體每秒才 1 張畫面好多了。