新倉頡移除不掉這個問題其實以前就有囉!只是最近 Office 2003 釋出 SP3 更新,不少用戶自動更新後新倉頡又跑出來了。(新注音移除不掉也是同樣的解決方法)

↑明明已經沒有新倉頡了

↑切換輸入法的時候卻又跑出來
解決方法:
1. 先將新倉頡(或新注音)新增回去。
2. 將下列文字存成 .reg 登錄檔,點兩下匯入。
;-------------------------------------------------------------------------------------------------------
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]
"CJIMETIPSYNC"=-
;-------------------------------------------------------------------------------------------------------
3. 再將新倉頡(或新注音)移除。
4. 重新開機就不會再出現了。
Windows, 系統筆記 Windows, 新倉頡, 輸入法
相信經常在翻 PHP 手冊的人應該都有察覺,PHP 不只是可以用來開發網頁程式而已,很多其他語言能完成的工作 PHP 也都做的到,例如透過 PHP 的 Direct IO Functions 就可以對 Serial port 溝通,而且可以在 Windows 下執行,一般在 Windows 要實做 com port 通訊程式,大多是透過像 VB/VC++/C++ Builder 這類程式所提供的元件來撰寫,不過用 PHP 就可以很快實做出一般的功能囉!
在開始之前要先讓 PHP 支援 dio 才行,5.1.0 版之後已經將 dio 移至 PECL 了,可以到 PHP 官網下載編譯好的 PECL,解壓縮後將裡面的 php_dio.dll 放到 PHP 目錄的 ext 底下,接著修改 php.ini 加入 extension=php_dio.dll 即可。
在 Windows 底下讀取 COM1 的例子:
<?php
exec('mode COM1: baud=19200 data=8 stop=1 parity=n');
$fd = dio_open('COM1:', O_RDWR);
while (1) {
$data = dio_read($fd, 1);
if ($data) {
echo $data;
}
}
dio_close($fd);
?>
寫法跟在 Linux 用 C 寫 serial 通訊程式差不多,其中 mode 是 Windows 命令列一個設定 serial port 組態的工具(類似 Linux 的 stty),可以打 mode /? 看詳細說明,設定好傳輸率等,接著用 dio_open 開啟裝置,然後就可以做存取的動作囉!
※ 2009/04/10 補充:
有不少人看了這篇之後,問我要怎麼用 PHP 讀取 GPS 資料。
在這邊要跟各位補充的是,如果您想要用瀏覽器在網頁執行 PHP,然後去讀取 GPS,這的確可以抓到資料,但其實是存在很多問題的,因為 Web 架構並不適合應用在這類有「持續連接」行為的地方,所以有可能發生 timeout、資源佔用、搶奪,嚴重的話會導致伺服器 crash。
但是如果一定要用 PHP 實作,建議應該是利用 command line 的方式執行,在背景專門負責抓 GPS 資料 ,並且將座標資料存入檔案或資料庫,然後網頁再去存取座標資料,如此一來便不會影響到 Web 運作。
PHP, 程式筆記 PHP, serial
在前一篇當中提到了 printf 結果異常的問題,在睡前翻了一下手邊借來的「C Primer Plus」,沒想到就有提到這個問題,印象中其他書籍似乎都沒有講到,C Primer 系列果然是好書!
簡單來說就是 C 語言中,compiler 可以選擇先計算函數中的哪個參數,以增加編譯程式的效率,所以前一篇的例子:
printf("%d, %d", age, age++);
compiler 很可能會先算第二個參數,先改變了 num 數值,這樣就造成結果不如預期了。
在「C Primer Plus 5/e 中文精華版」第五章有寫道,遵循以下原則可以避免這些問題:
- 請勿在函數當中,對使用不止一次的參數使用遞增或遞減運算子。
- 請勿在運算式當中,對使用不止一次的變數使用遞增或遞減運算子。
第一點就是上面所說的例子,第二點的例子如下:
n = 3;
y = n++ + n++;
在 C 標準中並沒有定義這行程式會如何執行,是哪一個先加 1 再運算,還是都先不加,造成了含糊不清的結果,應當避免這種寫法。
C/C++, 程式筆記 C, Programming
今天有個學妹問我一個 C 程式的問題:下面程式的結果為何?
#include <stdio.h>
int main(void)
{
int age = 20;
printf("You are now %d, and will be %d in one year", age, age++);
return 0 ;
}
自認觀念還不錯的我直接就回答「20, 20」。但沒想到實際跑的答案竟然是「21, 20」,這真是出乎意料的結果啊!
馬上另外測試了其他有 printf 函式的語言,如 Java、PHP,結果也都是正確的「20, 20」,所以不知道是 C printf 的 bug 還是什麼原因,希望有人能解答。
請看:C 語言中 printf 的問題(續)
C/C++, 程式筆記 bug, C, Programming
磁碟備份軟體除了有歷史悠久的 Ghost,近幾年也出現了頗受好評的另一套軟體 - Acronis True Image。之前試用過的感想是速度很快,完整備份整個分區只要幾分鐘就搞定了,只可惜它也是要錢的。
不過現在硬碟廠商 Seagate 和 Acronis 公司合作,推出一個 OEM 產品叫做「Seagate DiscWizard」,採用 True Image 的核心,擁有 True Image 的基本功能,備份、還原、救援都可以輕鬆搞定。想當然爾,這只能用在自家硬碟(Seagate、Maxtor)上,其他廠牌則無法使用。
(在網站上可以看到另一套 Maxtor MaxBlast,其實是同樣的東西,只是名稱不同而已)
來看看介面吧,有沒有跟 True Image 很像?

Windows, 軟體筆記 Windows, 備份, 軟體
近期迴響