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

↑明明已經沒有新倉頡了

↑切換輸入法的時候卻又跑出來
解決方法:
1. 先將新倉頡(或新注音)新增回去。
2. 將下列文字存成 .reg 登錄檔,點兩下匯入。
;——————————————————————————————————-
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]
"CJIMETIPSYNC"=-
;——————————————————————————————————-
3. 再將新倉頡(或新注音)移除。
4. 重新開機就不會再出現了。
View blog reactions
十月2
相信經常在翻 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 開啟裝置,然後就可以做存取的動作囉!
View blog reactions
九月30
在前一篇當中提到了 printf 結果異常的問題,在睡前翻了一下手邊借來的「C Primer Plus」,沒想到就有提到這個問題,印象中其他書籍似乎都沒有講到,C Primer 系列果然是好書!
簡單來說就是 C 語言中,compiler 可以選擇先計算函數中的哪個參數,以增加編譯程式的效率,所以前一篇的例子:
printf("%d, %d", age, age++);
compiler 很可能會先算第二個參數,先改變了 num 數值,這樣就造成結果不如預期了。
在「C Primer Plus 5/e 中文精華版」第五章有寫道,遵循以下原則可以避免這些問題:
- 請勿在函數當中,對使用不止一次的參數使用遞增或遞減運算子。
- 請勿在運算式當中,對使用不止一次的變數使用遞增或遞減運算子。
第一點就是上面所說的例子,第二點的例子如下:
在 C 標準中並沒有定義這行程式會如何執行,是哪一個先加 1 再運算,還是都先不加,造成了含糊不清的結果,應當避免這種寫法。
View blog reactions
九月30
今天有個學妹問我一個 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 的問題(續)
View blog reactions
九月27
磁碟備份軟體除了有歷史悠久的 Ghost,近幾年也出現了頗受好評的另一套軟體 - Acronis True Image。之前試用過的感想是速度很快,完整備份整個分區只要幾分鐘就搞定了,只可惜它也是要錢的。
不過現在硬碟廠商 Seagate 和 Acronis 公司合作,推出一個 OEM 產品叫做「Seagate DiscWizard」,採用 True Image 的核心,擁有 True Image 的基本功能,備份、還原、救援都可以輕鬆搞定。想當然爾,這只能用在自家硬碟(Seagate、Maxtor)上,其他廠牌則無法使用。
(在網站上可以看到另一套 Maxtor MaxBlast,其實是同樣的東西,只是名稱不同而已)
來看看介面吧,有沒有跟 True Image 很像?

View blog reactions
近期留言