星期日, 1月 29, 2006

星期五, 1月 27, 2006

NAS的幾個Package : FreeNAS & NASLite

看了一下,NASLite雖然是基於Linux + Samba 但是並不是Free的,有些Server program 也不是open source。買了($25)之後也不能自行複製。 功能上,也沒有支援soft raid。所以....就不提了。


FreeNAS

是Open Source, free 的。基於FreeBSD。也有支援Softraid(0,1,5)。
主導者是 Olivier Cochard ,他同時是embedd BSD 計畫 : m0n0wall 的developer。
應該是蠻新的,2005/10/31註冊SourceForg。最新release date是2006/01/23 - 0.522

download試試比較快... iso 開機,只有15M (這一點可能NASLite比較厲害,用floppy就可以)。

準備一個4 SCSI + 1 CD 的機器來試試:
  1. boot from NAS CD後,出現console :跟著pdf的說明,選'7' Install on HD/CF/USB key.
  2. 接著選1: Install on HD, CF or USB key : Create 1 UFS partition。- 整個HD都當boot disk用。
  3. 因為是BSD,所以SCSI HD controller的名字是 acd0.
  4. 輸入acd0後,列出所有的SCSI : da0, da1, da2, da3 (因為我準備了4顆)。
  5. 用第一顆: da0 ,所以輸入da0,開始安裝...
  6. 完成,拿出CDROM,重開。
  7. 這次會從HD開機,一樣進入console. 現在要作網路規劃,這個會存在HD中。選1: Intefaces : assign network ports
  8. 選擇要使用的network interface,他偵測出Inc0。所以我輸入lnc0
  9. Option 1的問題,follow pdf 檔,按Enter就可以。
  10. reboot ? -- Yes.
  11. reboot後,選2,設定ip address。
  12. ip (10.3.5.124)設好後,輸入bit mask,這是用bit數(22)來代表
  13. 輸入完後,console menu又出來,選5 : ping another host,測試網路是否OK。
  14. OK。這樣console部份都設定完了,接著進入web interface...
  15. 在其他pc 開啟browser,連到freeNAS (http://10.3.5.124),會出現login dialog.
  16. Default的admin/password 是admin/freenas,這樣就可以access freeNas的web interface了
  17. Wooh!!! 超詳細,還有firmware update功能,幾乎是商品化了(就缺access control)。

這是access的home:freeNas_home
詳細的function menu :
freeNas_menu

OK繼續,現在要加入磁碟機了。
到Disks-Management頁面,按'+'號。選要加入的disk(不能選boot那一個囉)。
接著就會有選項(Cool! 還有power management和大小聲控制..)。
freenas_adddisk
Add完後,就可以Format了:可以選format的格式喔。
freeNas_formatdisk
??? Raid 設定有點問題, 一直是在down,不會up。HD也沒在動...
只好用一般的disk partition。
format好,mount好後,開啟CIFS。但是只有share Mode有支援,User Mode好像還沒支援。
-- 這是故意的?
所以,應該還沒到實用階段。

星期四, 1月 26, 2006

ViewML : Open source web browser for embedded linux system

就是寫Microwindow的作者,的另一個計畫(?)。

他發現雖然opensource 的internet browser雖然已經有20幾種,但是大多很大,或是需要其他package。要不然就是功能太陽春,無法parse複雜的HTML tag。
所以他決定要作一套新的,可以用在embedded system,而且功能又OK的internet browser。
他決定要:
  1. 一套完整的internet browser,但是又很小,可以在很多embedd device中執行(像 pda, set-top-box。
  2. 使用現成的open source html parse engine,以免像其自行撰寫prase engine的browser一樣,prase能力很差。
  3. 使用Fast Light Toolkit(FLTK) framework 作為user interface。
  4. 可以在microwindow和X windows下執行。
所以他選了 KDE 的KFM使用的KDE1.0 HTML widget。因為他小,而且提供的功能已經購完整。至於Qt library這一點,將會由FLK 重新implement一次。

ViewML 分為以下module :

ViewML Browser Application Layer
用FLTK寫的application user interface。包裝起整個ViewML程式。處理user interface和network/local file access 介面。

W3C WWWLib
負責asychronous network i/o 和HTTP get function。這是WWW 協會的標準WWWLib。有點大,將來可能會自己重寫。

KHTML View/Widget
就是KDE 1.0 HTML Widget code。KHTML Widget 負責parse HTML,繪圖,但是scroll 則交由View去作。

Qt Compatiblity Layer
用FTLK 將所有KHTML用到的Qt function call寫出來,讓KHTML能夠不修改code,正常的執行。不直接拿Qt來用的原因是size問題。

IMLIB image library
gnome的image library。包含自動偵測image file format,decodeC 和show image。

FLTK Application Framework
有兩種版本: 給Win32, X 用的標準版FLTK,和給microwindow的nano-X用的重新寫過的FLTK。

因為利用了open source,完成的ViewML browser的code size只有800k,run time memory requirement也只有2M。整體,加上mircrowindow,只需要2.5M。
整個project是open source的。

project page在 www.viewml.com (但是已經變成pilix了)

freshmeat的ViewML也只有到0.21版。
真正的ViewML位置在PILIX ftp download site上 (ftp://ftp.pixil.org/pub/pixil)< >看來原作者很不爽繼續支援這個計畫,ViewML目前附屬在PIXIL 計畫(產品)下。在PIXIL 的developer mailing list上可以看到作者已經無意free support這個計畫。-- 甚至port 到new compiler version也不願意。對於一大堆大陸人的(Is anyone help me cross compile viewML for arm) 問題也不願回應。



build ViewML :

需要的library有
一般:
  • STL (這個好像是用STLport)
  • PThread (uclibc 有libpthread)
  • libwww - 去ftp download,同時需要libmd5
for nano-X
  • FLTK for Nano-X , flnx-current.tar.gz
  • Microwindows , with nano-X
準備好以上的package後...
解開viewml,在目錄中run .confiure,並且加入參數
./configure  --with-microwin=[Microwindows dir]  --with-fltk=[FLTK dir] --host=[prefix]
Microwindows dir 是microwindws 所在目錄
FLTK 也是一樣
prefix是toolchain的prefix,像arm-elf



libwww

不知道要怎樣在uclinux 下build。

紀錄一下cross build的一些option.
ARMTOOLSPREFIX = arm-linux-

libwww的installation 下有說明
Specifying the System Type

There may be some features configure can not figure out automatically, but needs to determine by the type of host the package will run on. Usually configure can figure that out, but if it prints a message saying it can not guess the host type, give it the `--host=TYPE' option. TYPE can either be a short name for the system type, such as `sun4', or a canonical name with three fields:

CPU-COMPANY-SYSTEM

See the file `config.sub' for the possible values of each field. If `config.sub' isn't included in this package, then this package doesn't need to know the host type.

If you are building compiler tools for cross-compiling, you can also use the `--target=TYPE' option to select the type of system they will produce code for and the `--build=TYPE' option to select the type of system on which you are compiling the package.
config.sub 是...,看了後,好像要設arm-linux :
./configure --target=arm-linux
build 出來後,看看Makefile,好像沒又設對gcc。所以用:<>CC=arm-elf-gcc ./configure --target=arm-linux卻看到 cannot find host,所以host也要指定。因為不知道要指定那一種所以用./configure看看...host system type... i686-pc-linux-gnu。
這次用
CC=arm-elf-gcc ./configure --target=arm-linux --host=i686-pc-linux-gnu
試試..但是output中checking for gcc 還是gcc,不是arm-elf-gcc,所以check cross-compiler 還是no.
$ echo ${CC-cc}
arm-elf-gcc
這個是正確的。
是config.cache的關係嗎?
把w3c-libwww整個delete掉,untar,再configure一次,OK !!正確detect出cross compile了。
接著作
$ make
Error :
Making all in xmltok
arm-elf-gcc -shared -Wl,-soname -Wl,libxmltok.so.0 -o .libs/libxmltok.so.0.1.0 xmlrole.lo xmltok.lo -lc
/home/charles/sigma/armutils_2.5.91.0/toolchain/lib/gcc-lib/arm-elf/2.95.3/libc.a(__uClibc_main.o): In function `__uClibc_start_main':
__uClibc_main.o(.text+0xf8): undefined reference to `main'
collect2: ld returned 1 exit status
是share library的問題?
改configure, disable share :
./configure --host=i686-pc-linux-gnu --prefix=~/libwww --disable-shared 2>&1 | tee output
OK!! 所以應該是shared library的問題。
因為ViewML沒有說一定要用shared library,所以先用static linking試試。

... make是過了,但是還沒install.
這樣的configure option 不能install 吧,因為沒設prefix,所以會裝在default folder裏(/usr/lib)。

...其實前一次會過是因為沒有設CXX=arm-elf-g++ 變數,所以checking variable size時都會OK。
使用:
 CC=arm-elf-gcc CXX=arm-elf-g++ ./configure  --host=i686-pc-linux-gnu --target=arm-linux --prefix=/home/charles/magsi/libwww --disable-shared 2>&1 | tee output
就會發生...
configure: error: can not run test program while cross compiling
Google的結果,這一篇似乎有一個解決的方法...
這是因為autoconfig沒有辦法知道target platform的char size,所以發出error(autoconfig利用run test program來偵測machine的var size)。
解覺的方法就是手動囉,因為只有build的人才會知道taget system的char size。
改configure...找到 echo "configure: error: can not run test program while cross compiling" 這一行,參考一下這一段是要 設定那一個變數,自己寫進去,改為:
ac_cv_sizeof_char=1
找一下所有這個message出現的地方,修改對應參數到正確的值...
因為資質弩鈍,所以有些type不知道,像arm的long type size是....?
所以只好真的build一個test program在taget board 上跑來試試..
使用的command是
arm-elf-gcc trysize.c -o trysize -Wl,-elf2flt="-s32768"
分別印出
char 1
char* 4
int 4
long 4
還要check time_t 是不是long : 就是time_t 的size和long 一不一樣
double 和long double是不是一樣: 寫給target board test的code是:

#include <stdio.h>
#include <time.h>
#include <stddef.h>

int isbigendian(void)
{
union
{
long l;
char c[sizeof(long)];
} u;
u.l=1;

return u.c[sizeof(long) -1] == 1;
}

int charisunsigned(void)
{
volatile char c= 255;
return c <0;
}
main()
{
printf("char:%d\n",sizeof(char));
printf("char*:%d\n",sizeof(char*));
printf("int:%d\n",sizeof(int));
printf("long:%d\n",sizeof(long));
printf("time_t:%d\n",sizeof(time_t));
printf("size_t:%d\n",sizeof(size_t));
printf("bigendian:%d\n",isbigendian());
printf("charisunsigned:%d\n",charisunsigned());
printf("double:%d\n",sizeof(double));
printf("long double:%d\n",sizeof(long double));

}

輸出的結果是:
char:1
char*:4
int:4
long:4
time_t:4
size_t:4
bigendian:0
charisunsigned:0
double:8
long double:8
實際上還是不知道long_double這一個選項是要設成yes還是no...







FTLK

一樣,解開。 README中說明INSTALL process:有說明configure時如果不是用g++,要指定CXX variable。gcc要指定CC variable。
$ CXX=arm-elf-g++
$ CC=arm-elf-gcc
$ ./configure --host=i686-pc-linux-gnu --preifx=/home/charles/libflnx
OK。正確check出cross compile。
$ make 
Error !!!
=== making fluid ===
make[1]: Entering directory `/home/charles/sigma/flnx/fluid'
.....
make[1]: *** No rule to make target `../lib/libfltk.a', needed by `fluid'. Stop.
make[1]: Leaving directory `/home/charles/sigma/flnx/fluid'
=== making test ===
make[1]: Entering directory `/home/charles/sigma/flnx/test'
make[1]: *** No rule to make target `../lib/libfltk.a', needed by `valuators'. Stop.
make[1]: Leaving directory `/home/charles/sigma/flnx/test'
make: *** [all] Error 2
這個....
應該要看一下flnx的INSTALL..

和libwww的方式不一樣,fltk 下的Makefile包含了config,所以直接在Makefile裏修改,加入configure的option。

./configure --host=i686-pc-linux-gnu --with-microwin=/home/charles/magsi/armutils_2.5.91.0/build_arm/src/microwin/src
但是還是一樣的錯。

真奇怪,不就是要build libfltk嗎?為什麼不知道要如何build libfltk ?
這是因為libfltk.a 是由src 目錄build出來,src目錄有錯。所以libfltk沒有build出來。

所以要先查src目錄make的錯誤...
....是找不到iostream.h...
設定-I option 到makeinclude 中
-I/home/charles/magsi/armutils_2.5.91.0/build_arm/STLport-4.5.3/stlport 
OK。但是出現putenv( ) undeclare!!!。
這 是因為stdlib.h include不正確,一樣,在剛剛的-I option 之前,要指定uclibc 的include 路徑,讓arm-elf-g++先去include uclibc的stdlib.h,所以makeinclude的-I option 要加上另一項(在STLport option 之前...
-I/home/charles/sigma/armutils_2.5.91.0/build_arm/uClibc -0.9.26/include
再build.. 還是有錯,說是filename_list.cxx中有一個cast不正確。到 source file中去看。是platform dependent code。在uclinux下應該要用linux 的code吧,需要define "linux",所以再到makeinclude中加入..
-Dlinux
OK!! src folder build OK.

然後是fluid folder的問題了....
internal error--unrecognizable insn:
Google 一下...
Hit the WALL !!!
原來是cross-compile 太複雜的C++ code時,會出現的error,mailinglist上有所謂的"unrecognuzabgle-insn.path",但是都是失效的link !

有兩個解決方法:
1.upgrade gcc
2.修改code

修改code好了@_@...
所以把出現error的function找出來,mark 掉一些section,找找看是那一個instruction發生問題..
發現...竟然是local variable array 的size太大!!!
把 MAXSIZE 改小就可以,--- 改到256後,pixmap_image::pixmap_image 沒錯。
--- 也試過用new 也可以過,但是要注意 return 時要free。

改為gif.cxx出錯!!
gif.cxx 裡面只有一個function : gif2xpm,因為error message的內容和上一個有一點類似,所以猜是不是local array size too large,果然找到-- 有兩個4096 的array,改成100後OK。

fluid 都build過了,link時出現"cannot find -ljpeg". 猜測是沒有jpeg library,在viewml的ftp裏好像有看到...jpegsrc.v6b.tar.gz,google一下發現這是有名的jpeg-6b 版本library。
有關cross-compile的也只有... ./configure ,修改compile to sh8-linux-gcc (是sh8的說明)。
解開source 後,裡面有install.doc,

...好像uClibc也有port libjpeg... not sure-- 結果沒有
將libjpeg cross build好 - ref http://checko.blogspot.com/2006/02/cross-compile-libjpeg.html
繼續build flnx...

compile 都過了,剩下link error : 找不到rint( ) - 屬於libm。
雖然uClibc中有libm(否則link會complain: 找不到libm),但是卻找不到rint( ),
自己寫一個測試程式用cross-compile build試試,結果真的找不到。
到lib,用
$ arm-elf-ar t libm
列出libm中所有module,沒有s_rint.o <-這是rint()所在module。
所以查一下uClibc的Makefile為何沒有把s_rint( )納入...
在uClibc-0.9.26/libm/Makefile中看到 因為定義 DO_C99_MATH沒定義,所以沒將s_rint.c加入source list。
所以手動將s_rint.c加入source list中,重新build uClibc (因為make 下有uClibc.mk,所以打 make uclibc 就可以只build uclibc)
完成後再用" arm-elf-ar t libm" 看,s_rint.o 已經在libm中。

回到flnx, make --- fluid 已經OK,
出現test folder 的error : 一樣是 " keyboard_ui.cxx:559: internal error--unrecognizable insn: "

看了一下,大概是button太多了,所以刪掉所有的button.
build OK!!
應該可以測試一下...
在target上.... 不會跑 : bad magic/rec,
這個是沒有作elf2flt的原因,
修改 Makefile,在 linker, loader rule加上 :
-Wl,-elf2flt="-s32768"
.rebuild,注意exe file要chmod a+x 才能執行。

鉭質電容 :some informations..

因為謙哥問。所以google 一下...

http://www.ti.com.tw/articles/detail.asp?sno=52&catalog=7

陶 瓷電容通常較受歡迎,因為它們的成本低,故障時會變成開路;鉭質電容成本較高,故障時則會變成短路。輸出電容的等效串聯阻抗會影響電路穩定性,陶瓷電容的 等效串聯阻抗較小,約為數十毫歐姆,鉭質電容的等效串聯阻抗則在數百毫歐姆左右。許多鉭質電容的等效串聯阻抗還會隨著溫度大幅改變,進而對穩壓器的工作效 能造成負面影響。陶瓷電容可用來取代鉭質電容,只要在電容和地線之間加上一顆溫度穩定性良好的適當電阻 (通常為200 mA。請與穩壓元件製造商聯絡,確保得到正確的電路設計。

http://ppsc.pme.nthu.edu.tw/~htwu/hw/right/cap.html
電 解質電容通常是電容值比較大的電容,一般具有極性,通常用於電源穩壓或低頻率的電路(兩個電解電容背接成NP電容,則無極性)。電解質電容在高頻時的表現 不好,如果高頻電路要用到電容,最好是選陶瓷電容或鉭質電容。陶瓷電容一般電容值很少大於 0.1uF,高頻響應良好。

鉭質電容雖適用頻寬廣漏電流小,但不耐負壓,若接反正負極會造成電容爆炸,但因含有毒性,已逐漸退出市場。


http://www.moneydj.com/z/glossary/glexp_499.asp.htm
為 電解電容的一種,屬於被動元件,是陽極使用鉭的電解型電容器,又可再分為固體型及液體型兩種,其中固體型是以二氧化錳當電解液,液體型則是以硫酸當電解 液。鉭質電解電容的特性是耐溫性較廣無電感性較優的洩漏電流特性,但卻有突破電壓、逆電壓等無持久性,不不耐機械衝擊的缺點。

http://www.23xx.com.tw/newprog/msg.asp?id=A004&class=???????&msgid=227&posit=1

鉭質電容跟鋁質電容都是電解電容的一種
特色是電容量最穩定
漏電損失最少
及效率比較不會受到溫度的影響
價錢較貴
而且鉭是公害管製品

適用範圍很廣,但集中在需要穩定度較高的產品
市場需求量大概是鋁質電容的40%

國內上市公司好像只有華容生產一點點
好像佔營收不到5%

筆記 : microwindow

src/Configs 中有README,說明將對應的config 檔copy到 microwin/src/config。
利用make microwin 2 >&1 | tee output 看看build process.
知道 真正的config file 在 armutils/config/development/config.microwin.

microwin : $(UCLIBC_TARGET) $(MICROWIN_TARGET_BINARY)

UCLIBC_TARGET = $(uclibc_arch_libs) $(uclibc_arch_xip_libs) <--應該不重要
MICROWIN_TARGET_BINARY := $(TAGET_DIR)/usr/bin/nano-X

$(MICROWIN_TARGET_BINARY) : .target_dir_made $(MICROWIN_BINARY)

MICROWIN_BINARY := $(MICROWIN_DIR)/src/bin/nano-X

$(MICROWIN_BINARY) : $(MICROWIN_DIR) ./configured
$(MAKE) ..... -C $(MICROWIN_DIR)/src ....

MICROWIN_DIR := %(BUILD_DIR)/microwin

也就是說,到microwin/src 作make



microwin/src/Makefile :
all : default
-$(MAKE) -C $(MW_DIR_SRC)/demos

WM_DIR_SRC := $(CUR_DIR)

就是到demos 下作make



include microwin/src/Makefile.rules.

這個好像就是決定make哪些target 的file。


發現make的過程不會output command log...
在 Makefile.rules中有:
$ifeq ($(VERBOSE), N)
.SILENT
$endif

而在config中有
VERBOSE = N

這就是原因。

所以修改config,將VERBOSE改為 Y
但是用的config 檔不是src/config,而是armutil/config/config.microwin 要修改這裡的config才有效。





星期三, 1月 25, 2006

Sign, Unsigned 和 shift right

偵測按鍵Code :
char rc=0;
for(i=0;i<8;i++){
rc = rc >> 1;
if(key)
rc = rc | 0x80;
}
結果:
出來的rc 都是:1000b, 1100b, 1110b, 1111b 這幾個pattern。
實際應該要是 : 1000b, 0100b, 0010b,0001b 才對。

也就是說,因為right shift的原因,high bits被keeps住了。

這是因為rc 宣告成signed 的原因,因為是sign,所以shift時會keep sign bit:

0000
1000 - 按鍵1
1100 - shift right 後應該是0100, 但是因為最高bit是正負號,所以compiler會保存正負號,所以又把1000加回去,變成1100。

以上問題解決的方式就是:改為宣告unsigned char rc。



有些compiler (例如: pic - hitech C,的compiler)會有option : treate char as unsigned。
這個option會讓所有宣告char的variable都當作是unsigned char。
所以沒有上面的問題(但是int時一樣會發生)。
所以最保險的方式就是 依照變數特性正確的宣告sign/unsigned。




正確的宣告sign/unsigned 麻煩的的地方是等號運算和function 參數。
等號兩邊變數的sign/unsigned 宣告不同時,會出現error。
同理,function參數prototyping和實際呼叫時放入的參數sign/unsigned 不同時也會warnning。
所以?

星期二, 1月 24, 2006

奇怪的Panel

這一家的Panel很奇怪,+5V power必須要在所有pin腳的level都ready後才能ON起來。
也就是說,要delay。

ar : library (archieve) 操作,用在抽換object file上..

廠商提供一組code,利用#define ,可以compile 成standalone program 和library,但是要重建整個library的話,需要一個header file - 廠商沒給。

所以說,要重建整個library是不可能的。廠商提供code 只是讓你compile成standalone program。

但是我現在要修改一個 object module。讓LCD成正常動作。修改過後的module。給standalone program link時,是OK的。但是其他link到library的還是沒辦法用到修改後的code。

所以:
arm-elf-ar -t libsamples.a
列出libsamples所有包含的module。
compile我修改過後的module : parse_disp_cmd.o
再用:
arm-elf-ar -r libsamples.a parse_disp_cmd.o
再把所有link到libsamples.a的application都重新build一次。
OK!!! 都link到新的module了。

-t : display all modules
-r : replace (add) module

紀錄一下,Qt/Embedded 的 download path

這是在Jserv的blog中看到的。

奇怪,循著Tolltech的homepage,很難找到這一個位置。ftp://ftp.trolltech.com/qt/snapshots/

特地記一下。

星期一, 1月 23, 2006

ssh client for Mac OS9 : MacSSH

因為有一台WallStreet,Run OS9。
keyboard還滿好打的。terminal 用剛好。

所以,就是這個啦,有空要試試。

星期四, 1月 19, 2006

pdf 產生/轉換 程式: CutePdf Writer

CutePDF Writer,是CutePDF 公司的產品。

安裝後會產生一台列表機,任何文件 列印到這一台列表機 就會轉換成pdf 檔。
挺不錯的,是free的,也沒有廣告。

星期三, 1月 18, 2006

Developement Platform Setup Log

借我一個新的硬碟,所以要整個重新安裝.

Install Debian : 什麼都不選,base system就可以。
aptitude install gcc

aptitude install sudo
export VISUAL="vi"
visudo - ref http://checko.blogspot.com/2005/10/build-kernel-for-arm.html

aptitude install tftpd
vi /etc/inetd.conf ---> /boot 改為/tftpboot
mkdir /tftpboot
chmod 777 /tftpboot

aptitude install nfs-kernel-server
vi /etc/exports

aptitude install samba
smbpasswd -a charles

aptitude install libncurses-dev
aptitude install bzip2
以下就是sdk 相關的...
copy armutil
copy driver, library
copy tuner sample
copy dvd player sample

armutils : copy dl folder 到sources/dl下
make ... follow instruction....

make toolchain : PIII 900 512M takes 1 hr...

猜一猜,是那一台?

這麼一台國產的3G、WiFi、BT 、VGA、有閃光燈的相機、有鍵盤的貝殼機、用的是Windows Mobile 5.0,所有最新、最強的軟硬體都齊聚一堂,可以上網,收MAIL,看影片,偷拍的超級機器怎麼會賣不掉?你想想拿著這麼一個磚頭打電話,3G上網只有兩 小時電力(兩小時好像是3G的極限?),內建的瀏覽器又慢的要命的東西,誰會願意花一台NB的價錢去買啊?


T 醫生的網站寫的一句話。猜猜是那一台機器?

答案請連回T醫生的網站: http://blog.tsubasa.com.tw/archives/003930.html

星期二, 1月 17, 2006

Event 與Command

Event 代表事件發生,Command代表處理動作。
發生--->處理 並不是一對一的,有可能是一對多,或是多對一。

同一個Event的處理動作,不一定會是一樣的,例如 OnActivate Event,對象是Menu的話,要啟動ActiveMenu Command。對象是button的話,要啟動ActiveButton Command。這就是dispatch的動作。

把Command 處理全部寫在CommandHandler上。
Event 的處理:
根據target,轉成Command,再由Command Handler處理。

這就是function : EventOccure(eventName)

所以在程式任何時候應該要產生Event時(例如: Read File Error),就直接呼叫EventOccure( eventName) (例如 EventOccure("ReadFileError") )。

這像自然會找到正確的CommandHandler來處理。

當然,也有可能會造成re-entrant的情況:

Event --> CommandHandler --> Event --> CommandHandler...

星期一, 1月 16, 2006

outlook 已經沒辦法自動開啟jpeg檔..

今天david問我他的outlook變得不能開啟jpeg檔,但是存檔後,又可以直接開啟(正成file type association 是正確的)。

google "outlook不能開啟圖檔" 出現microsoft的說明:
因為GDI+漏洞和file extension判斷不周密的問題。XP系統已經預設outlook不自動開啟jpeg檔。
如果一定要用這個功能的話,到outlook---工具---選項---安全性---附件安全 設定為"關閉",就可以。

所以這針是一個奇妙的事情,MS把不太好作的東西做了出來,但是沒做好,所以只好disable調這個東西。這樣以後即使要用,也沒有機會了。

變數宣告的注意事項 : 多種平台的reserve word都要避開

原先在pic中的module,放到51中build發生error,雖然當初已經注意過portable的問題,但是還是發生error。
因為... data 在51中是reserve word,所以比能用。

這樣看來 宣告一些沒腦的變數名稱,像BYC7A, HGACC 反而是比較安全的作法?

看來 foo, bar 大概就是這種症狀的產物...

星期五, 1月 13, 2006

Turbo C 2.0 - download install and Test

Turbo C 是以前很多人最喜歡用的Compiler ,應該說是IDE。
即使到現在,Turbo C一樣是最方便的C 語言學習工具(如果是C++,就要用TurboC++ 和Borland C了)。配合施威銘的Tunr C 語言實務,耐著性子照著範例打,2 week 就可以熟悉C 的語法。

很幸運的Borland 公司決定免費提供Tunrbo C 2.0 。
需要的人可以到 http://bdn.borland.com/article/0,1410,20841,00.html 去下載。

下載的時候要看清楚,第二段"How To Download Turbo C 2.01 中,有Click On the Turbo C 2.01 zip file。按下他。轉存新檔就可以了。

download下來的file解開後是依照最原始的floppy 3 disk 安裝方式。
但是現在很多機器已經沒有floppy了。
所以,把三個folder 裏的資料都copy 起來。copy到Disk1 裏。並且把disk1 folder copy 到c:/下(因為Turbo C的安裝程式不認識中文)。

安裝:
開啟command 視窗(就是 "開始" -- "執行" 裏輸入'cmd',然後 確定。就會跑出一個黑色視窗)。

先切換到剛剛解開的Turbo C 2.01安裝目錄:
  C:\Document And Settings\cd c:\Tc201\Disk1
執行INSTALL:
C:\Tc201\Disk1\ install.exe
會出現Turbo C的安裝畫面,

第一個是問你turbo C的安裝檔所在位置,default是A。要改成C。
然後就會出現path name,他會自動偵測出來,就是\Turbo201\Disk1\,OK。繼續安裝。

接著會出現要更換磁片的提示,因為已經將三片內容都co在disk 1中了,所以按Enter就可以。
同樣,會要你再更換一次,一樣案確認。
OK。安裝完成。

會將Turbo C安裝在 C:\TC 下。

執行

用滑鼠點C:\TC\TC.EXE 兩下就會開啟。
所以可以在桌面鍵一個捷徑。


一些有用的key

如果有買書的畫,書中會有Tunrbo C IDE的一些key 用法。
比較常用的是:

Ctrl - F9 : Run program
Alt - F5 : 切換到output 視窗。

Turbo C IDE不支援滑鼠,所以都要用keyboard。那些IDE 最上面紅字,都可以用Alt+ 叫出。
例如:
Alt - F : 叫出File Menu.

最後... 要感謝 Borland 的慷慨。

星期四, 1月 12, 2006

FAT已經認可為MS所擁有的patent

這下可好了,所有的flash drive,相機,甚至所有PC裏的BIOS。只要內部沒有run MS的OS,都要付錢給MS。
真是自找的,其實FAT也不是很好的架構。當初只是因為最多人用,所以就採用。
當初之所以最多人用,還不是IBM PC的盛行和clone多的關係。
現在可好了,圖一時的方便,該是付出代價的時候了。

奇 怪的是大部分的新聞都在擔心Linux,其實Linux還好,最初他就只有支援MINIX Filesystem,後來是ext2。FAT的支援是因為要access MS的partition才加入的,還有那些圖一時方便而選FAT作為default file system 的flash drive廠商。
如果一直都在使用Linux的人應該會這個新聞沒什麼感覺吧。

Linux的filesystem 是最最最modulize的,如果MS真要求授權,Linux頂多就是拿掉FAT的Code。
以後就不要支援FAT算了。反正flash drive format成ext2也可以用。反正我從以前就不喜歡FAT。



真是的,這是搞什麼。哥倫布當初要是也把他的立蛋技巧申請專利的話,現在所有破掉的蛋要是立著,都要給哥倫布一筆錢。

真的如居里夫人所說,專利制度真是科學進步的一大阻力。




後記

來了,MS 公佈的FAT file system license : http://www.microsoft.com/mscorp/ip/tech/fat.asp

用Google翻譯一下,並且把"肥胖系統"改為"FAT 系統" :

定價和准許

微軟正在提供准許它的FAT文件系統規格和聯系的知識產權。與這個License,其它公司有這個機會將FAT文件系統實施在他們的產品和改進文件系統兼容性,橫跨PC和電子器設備。當前, 微軟提供以下二具體類型License:

  • 可移動固體媒介manufacturers..制造商可能已格式化媒介為微軟FAT格式,譬如與CF卡,然後預先儲存輸了數據。這個License Fee是US$0.25。或是整體 $250,000 。
  • 電子產品商devices..Pricing 是每個產品$0.25。對象是使用可移動固體媒介存放數據的以下類型設備:
    o 便攜式數字式寂靜照相機
    o 便攜式數字式攝象機
    o 便攜式數字式still/video 照相機
    o 便攜式數字式播放機
    o 便攜式數字式錄影機
    o 便攜式數字式音像和錄影 player
    o 多功能打印機
    o 電子相片框架
    o 電子 樂器
    o 標准電視

每個device 0.25 美金,真是賺翻了!!!

發現: TinyXml, 原來是zlib license

在sourcefroge。

Document裏說:
Features:
  1. 可以自行決定是否使用STL。TinyXml只使用STL的string class,但是有implement自己的 string class。所以可以決定要使用STL或是TinyXml自己的版本。
     #define TIXML_USE_STL

  2. 支援UTF-8,TinyXml會自動偵測XML file使用的語系:
    • lead byte 有0xef,0xbb,0xbf
    • XML file中declaration tag有宣告encoding = "UTF-8"
    • XML file中有declararion tag。
    • XML file中declaration tag宣告encoding 不是UTF-8,TinyXML會用legacy Mode。
  3. Entities ,TinyXML認識以下意義
     &amp; &
    < <
    &gt; >
    &quot; "
    ' '
  4. streams : 當使用STL時,可以使用stream operator作file operation
  5. White Space:提供SetCondenseWhiteSpace(bool),決定是否將多個space縮減成一個。
  6. Handles : 這個很方便,當要由XML tree中某個entity 作操作時,常常要由root以下,一個一個檢查是不是NULL,程式寫起來很醜:
    TiXmlElement* root = document.FirstChildElement( "Document" );
    if ( root )
    {
    TiXmlElement* element = root->FirstChildElement( "Element" );
    if ( element )
    {
    TiXmlElement* child = element->FirstChildElement( "Child" );
    if ( child )
    {
    TiXmlElement* child2 = child->NextSiblingElement( "Child" );
    if ( child2 )
    {
    // Finally do something useful.
    但是TinyXml 可以用
    TiXmlHandle docHandle( &document );
    TiXmlElement* child2 = docHandle.FirstChild( "Document" ).FirstChild( "Element" ).Child( "Child", 1 ).Element();
    if ( child2 )
    {
    // do something useful
    來作
  7. Row, Columm Tracking : 有時候需要知道目前的entiry是在XML file中的那一行,那一列,例如:回報parse error。TinyXML提供TiXmlBase::Row(), Columm()取得這個資料

星期三, 1月 11, 2006

microchip - hilosystems燒錄器 燒錄問題

使用3.1的WAccess,燒PIC12F629。出現"OSCCAL is blanking".不能燒錄。

PIC12F629可以使用內建的oscillator,也提供一個oscillator calibrate value。寫在code 0x3FF 中。那一個instruction是
RETW XXX
chip 啟動後,startup code中會CALL 0x3FF,然後將W放入calibration register。完成calibration動作。

hilosystems的WACCESS Auto 選項,有check osccal & bankbang..所以一直不會過。

後來David用舊版的WACCESS。就沒有check osccal & bankbang 這一個選項。所以就沒有問題(但是一直出現varify error : 0x2100)。

Alan 的WACCESS的版本,問題是Config bit,不管怎麼選,Config bit都還是不會改變。所以不知道到底有沒有改到。
真是麻煩呀。

microchip - hilosystems燒錄器 燒錄問題

使用3.1的WAccess,燒PIC12F629。出現"OSCCAL is blanking".不能燒錄。

PIC12F629可以使用內建的oscillator,也提供一個oscillator calibrate value。寫在code 0x3FF 中。那一個instruction是
RETW XXX
chip 啟動後,startup code中會CALL 0x3FF,然後將W放入calibration register。完成calibration動作。

hilosystems的WACCESS Auto 選項,有check osccal & bankbang..所以一直不會過。

後來David用舊版的WACCESS。就沒有check osccal & bankbang 這一個選項。所以就沒有問題(但是一直出現varify error : 0x2100)。

Alan 的WACCESS的版本,問題是Config bit,不管怎麼選,Config bit都還是不會改變。所以不知道到底有沒有改到。
真是麻煩呀。

星期二, 1月 10, 2006

串連"反台鐵誤點"

終於也有人有同樣的想法了。
路是他們家的,車是他們開的,甚至時間也是他們定的,竟然還會誤點連連,幾乎周周誤。
還不定期會有大事像 脫軌,機械故障,缺乏維修。等等。
而且誤點也不見站務人員出來說明。
真的是最差的公司了。

鐵路連"準點"都做不到,還談甚麼提昇品質。

所以一定要加入這個串連活動。:

活動串連標籤貼紙:

坐火車常誤點嗎?為什麼一個歷史這麼悠久的台灣鐵路公司,三不五時就來個小誤點、大誤點,而且態度就是反正只有我一家,你能怎麼樣呢?真的令人有些ORZ,所以你也來加入串連的活動吧,讓台鐵知道大家的不滿吧!

*因為愛湊熱鬧,所以也加入串連的一員囉,不過活動昨天才開始,大家一起來響應

活動網址:Nancy Chu's Blog

各位朋友可以用以下的方式支持這個活動:
1. 將活動標籤貼紙貼在您的部落格或網站上
2. 在連結文章的迴響留下您曾經遇過的誤點經驗或是任何對台鐵的不滿,Nancy會集結起來寄給台鐵
3. 告訴更多朋友,讓他們知道這個活動,或是願意用您的MSN暱稱來加入我們



嘿,這個網站也說得不錯:

[逆鐵]Anti台鐵誤點運動傢働中

一、楔子
這個禮拜台鐵又誤點了= =
「各位旅客,七點十分從基隆往高雄的自強號將晚7分鐘到站」
「各位旅客,八點整由中壢開往蘇澳的電車將晚20分鐘到站」
「本列車在此臨時停車」

由 於我平常都是坐電車回去內壢找牛仔包,幾乎每次坐車,總是會慢十分鐘到半小時,似乎已經是家常便飯了,看著告示牌上的LED數字從慢5分鐘跳到慢 25分,月台響起令人懷念的誤點通告,結果六點半的火車,從板橋坐到內壢,整整花了一個半小時才到內壢(平常是40-50分鐘),牛仔包馬上就做了反誤點 的標籤,我們覺得是該用blog發出我們的不滿了,人家說逆天,吾阿醜要「逆鐵」啊~~~~~!!!


二、生命應該是浪費在美好的事物上,但是我們的生命卻是浪費在誤點上
我每次都會想著,如果以統計學來說,台鐵一次十分鐘的誤點,以月台上大約有60個在等待誤點火車的旅客來說,平均一個人等了10分鐘,總合是600分鐘,從內壢到板橋大約有五個站,也就是火車慢了十分鐘,卻讓所有的人一共浪費了2天又2小時的時間。

三、屢年不改,就是不讓你知道誤點原因及情況
根 據台鐵在今年(94年)八月推出的「94年台鐵旅客意向調查」裡,「列車誤點及事故處理」及「列車運轉及時刻安排」之不滿意度分別為各項服務中之首位及 第二位,與上年相同;其不滿意者之首因分別為「車上未適時告知誤點原因及情況」(占五成八)及「假日或尖峰時段車次或車廂數不足」(占六成五)。

四、不要只賣鐵路便當、麻煩請敢作敢當
公務人員的確有既定的科層體制在,你可以從台鐵的網站或是新聞中看到那一個班列車因為出軌而嚴重誤點,或是台鐵又發現有人在鐵軌上放置異物等而造成超級誤點,但我幾乎沒有看過有任何一個政府高層人員因為台鐵的誤點而提出道歉的聲明(不是叫你辭職)

五、電車永遠是誤點最久的,卻是戴客量最多的悲情火車
再 從台鐵的客運人數統計的資料來看,就車種別分析,93年客運人數以復興號(含電車)每日平均29.3萬人最多,占總運量六成四,其中絕大部分為電車旅 客,為臺鐵之運輸主力;其次是自強號9.2萬人,占二成;莒光號5.5萬人,占一成二;普通車2.0萬人,僅占4.4%。看著自強號和復興號呼嘯而過,輪 子磨擦的聲音像是在嘲笑我們這些坐電車的人是次等鐵路民似的。

各位朋友可以用以下的方式支持這個活動:
1.將活動標籤貼紙貼在您的部落格或網站上
2.在本篇文章的迴響留下您曾經遇過的誤點經驗或是任何對台鐵的不滿,我會集結起來寄給台鐵
3.告訴更多朋友,讓他們知道這個活動,或是願意用您的MSN暱稱來加入我們

參考連結:
台灣鐵路局資料統計網頁:不斷在自打嘴巴,卻是台鐵唯一誠實的聖地


這個...
記者劉怡汝/台北報導
 臺鐵誤點情形竟然天天發生,臺鐵復興號有三班列車,三十多年以來竟然沒有一天準時到站,平日平均誤點二十幾分鐘,假日甚至誤點長達五十分鐘,臺鐵則表示因為復興號設計不良只有一個車門,影響乘客上車的時間才會導致誤點情形發生。
 臺鐵最近實在發生許多問題,日前媒體指出臺鐵復興號高雄往基隆有三個列次,分別是一一六、一二零、一二二,三十年以來天天都誤點,平日平均誤點二十分鐘是家常便飯,遇到假日平均誤點時間高達五十分鐘,對此臺鐵昨日召開記者會澄清。
  臺鐵運務處組長鄧慶福表示,復興號當初設計的時候只有一個手動車門,因此旅客多的時後根本不夠使用,而且許多乘客喜歡站在車門口,因此影響到其他上下車的 旅客,造成列車出發時間有所延遲,平均每一個站延遲三十秒鐘,高雄往基隆一共有二十個停靠站,因此從高雄開往臺北時間就要增加二十分鐘。
 鄧慶福表示,雖然復興號有誤點,不過誤點的時間並沒有五十分鐘那麼久,也不是天天都誤點,不過鄧慶福承認復興號一一六、一二零、一二二,三個列次準點率只有四成。雖然臺鐵雖然承認復興號誤點情形,不過誤點時間沒有超過八十分鐘,因此民眾沒有辦法辦理全額退費。 
 臺鐵表示,假日時候比較有誤點情況發生,因此未來會推出周末及假日版的火車時刻表,方便民眾減少等候時間。

這個說明我有點疑問的是,訖站,開車時間都是台自己決定的呀,既然到該列車需要多餘的時間,為什麼不更改各站的開車時間?讓該列車每一站多一點上下車時間?
越找越多..這個蠻誇張的..(節錄)
...台鐵員工升等考試今明兩天舉行,一共5600多名員工報考,少了大半員工輪班,台鐵緊急停駛60多班電車,不少旅客擔心臨時撘不到車,都提早買票因應,雖然週末假期影響不至於太大,但還是有民眾抱怨連連。
我的天哪,這些搭車的通勤族真可憐,改天台鐵員工公司旅遊,全台鐵路停駛一天?
為了員工升等考試,停開列車。原來台鐵早已經民營化了。


最近因為台鐵虧損,所以要推出一些方案,像無座票,指定/自由席。甚至漲價。
其實他這都是在欺負那些非搭鐵路不可的人。
因為誤點越來越嚴重,所以能不搭的人都盡量不搭了。這樣客源降低,不虧損也難。
其實應該不用想這些細微末節的方案。要是能把基本的"準時"做好,大家會漸漸的又去搭火車了。--- 因為火車絕不會塞車。

星期一, 1月 09, 2006

Server 又重啟動..

這是因為停電的關係。
所以...wlan 又不通,所以只好手動,follow自己以前這一篇(奇怪,google 不到這一篇):
先看看wlan有沒有起來
#ifconfig -a
如果沒有,確認wlan dongle有插上去,不然,就下command試試:
# /etc/init.d/wlan stop來停止
start 開啟
o,起來後,就可以設定wlan authtype跟SSID了:
#wlanctl-ng wlan0 lnxreq_ifstate ifstate=enable
#wlanctl-ng wlan0 lnxreq_autojoin ssid="10.3.3.205 - 3F" authtype=opensystem
這樣wlan應該可以正確連上ap,但是ip address還是、要自己設定:
# ifconfig wlan9 10.3.5.100 netmask 255.255.252.0 broadcast 10.3.1.15
OK!

星期五, 1月 06, 2006

Linux Media Center PC 怎麼了?

翻譯的,或說是筆記..
原文在 http://entertainment.newsforge.com/entertainment/05/12/15/2136259.shtml?tid=23&tid=126



一年前,Linux 似乎將要佔領客廳,但是去年這一年,卻沒有多少Linux 的產品發佈。

HP 的前CEO在 CEShow 中宣佈HP 即將發佈的一項產品,Media Hub。具有播放TV和一切影因相關計算能力的Linux PC。

HP 的Microssoft Windows XP Media Center PC已經上市了,因為移除了Tuner,成本降低許多,讓銷售量大增。

HP 他們賣得不錯,Microsoft說去年大約有4百萬的Media Center License 賣出,HP大約有1百萬。
但是當初宣佈的Linux 系統Media Hub產品,卻從未出現,也將不會再推出。

實際上,就在CEShow後,HP就意識到HDTV的產品需要重新定位。他們認為將Tuner放在TV中對User來說比較方便。

HP的新平面電視,將具有瀏覽與播放所有Media 的能力。

Jupiter 在Linux Media Hub 和iPod 的產品發表後就預測HP的multi-platform 策略會失敗,所以他認為 Linux-Base Media Hub的想法將永遠被鎖再櫃子裏。
因為太多的裝置平台,也因為市場的因素,這種類型的Media Center超前目前的時代太多了。

HP並不是唯一一家設計這樣(Linux)產品的公司,一年前Shuttle(浩鑫)也和 Open Source Cyberlink PowerCinema 有密切的合作。

有很多人想在Linux上作些東西,但是那樣的市場並存在。你裝了一個device或軟體,但是他只負責一部分的事,相較之Windows Media 的支援的裝置比較多,他也和XBox,iPod bundle在一起。

Shuttle的負責人Tu說:他們目前正和Linux密切合作,讓他們的XPC 能過通過大部分Linux distribution的認證。但是還沒辦法提供預先安裝Linux系統的產品。

Tu 說:常常有人會提起Linux在價格上得吸引力,前一陣子甚至有人提出在intel ViiV上使用Linux 系統。因為現在Media Center的產品價格還是太高,所以無法深入到每一個家庭。尤其是目前Media Center PC的平均價格仍然是一般PC的兩倍,所以一個安裝Linux系統的Media Center在價格上非常有吸引力。

在Microsoft release Media Center之前,Media PC需要許多3rd party提供的程式,達到消費者要求: DVR, music, photo..,而且那些program的操作方式還是針對一般pc來設計,讓consumer不能方便的在客廳中操作。

Microsoft Media Center的優點在於他整合的所有progam和操作介面。Consumer不回覺得media center像是一大堆不相干的program疊在一起,一致的介面讓user更容易使用。

Tu 說:仍然需要一段時間,消費者才能消除他們對pc舊有的印象- blue death, virus, ad-ware..。當我們能將PC的觀念由Media Center中移除,消費者才能真正接受這個產品。

Toni Dubois 說Linux-base Media CenterPC 將不存在,2005年,Microsoft 將Tuner 移除後,將價格降低,佔領了52 %的美國市場。 和2001~2004的銷售量相比,當初的Media Center尚未將Tuner移除,所有的銷售量只佔desktiop pc 的7%。2005後,移除tuner的版本,將價格降低到$1000以下。銷售量增加很多,可以說80%的Microsoft Media Center都是沒有tuner的。

Roger Kay 說:Linux系統和Windows Media Center比較起來,支援少得很多,不像Microsoft已經形成一個Media Center的生態圈,所以處於弱勢。

Linux 可能比較適合在特殊用途的裝置上。

Gartenberg指出linux早已被很多裝置採用,像Tivo。但是這些裝置並不會以Linux作為他的賣點。

Dubois說Microsoft在Media Center上已經領先Linux一大步,Microsoft已經為此努力了三年,現在是收穫的時候。

Microsoft和Linux的下一個戰場會是在儲存裝置上,Media Center需要能處理多種Media data的能力,這方面Linux或許可以利用他在Server系統的經驗取得優勢。

最後,將會有一個home-based server,因為我們將會有太多資料,沒辦法放在TV中。
記完了......看原文還比較容易點。

英文總是將很簡單的東西寫得很囉唆,大概是為了賺稿費吧...
  1. Media Center需要整體的支援和一致的操作介面,Microsoft經過三年的努力,已經有很大的進步。
  2. 將功能區分: Tuner改在TV中,Media Center作單純的資料處理(要處理甚麼?)。將Tuner由Media Center中移出,讓際格降低到consumer能接受的程度是2005 Microsft能夠成功的另一項原因。
  3. Media Center方面,Microsoft已經贏了,下一步 - home-based server,或許Linux可以努力看看。
其他就是說明"integrated UI"對media center這項產品來說有多重要。(如果真是這樣,前一陣子提過的boradband media 的專利ui介面為什麼沒有成功?)。

其實Linux的Freevi和MythTV已經做得很好,XBox上的XBMC也是linux based也做得不錯,所以UI方面應該是不分軒輊。

Linux是輸在很多hardware不支援,很多data type 不公開。所以對media和device的支援都沒有microsoft好。

星期四, 1月 05, 2006

Makefile 真是超難寫....

debug 了一個早上的Makefile。因為basic rule include到別人的Make script。所以要照著宣告variable.

結果... 都是variable name key 錯。
例如:
STATIC_LINKS 少了S。
hardware 缺了d。
還有EXECUTABLE 寫成EXECUTEABLE !!!

Makefile 難debug 的,因為make error只會顯示dependency 錯誤,例如:找不到XXX file,unsolved reference....,不容易猜出是那裡有錯。


所以Makefile寫好後,應該要用一個Test Project 來測試一下。看看相關各dependency file是不是都能正確的access。

星期三, 1月 04, 2006

acer 1621 lspci

拿到一台Acer 1621.但是Graphic Card Driver竟然找不到,裝了附的Driver CD也是一樣,不知道是那一家的,所以只好拿ubutun Live來灌,用lcpci 列出pci id code (其實ubuntu live也不太能啟動,還是加了noacpi, nolacpi vga=777參數才起來)
ubuntu@ubuntu:/etc$ lspci
0000:00:00.0 Host bridge: ATI Technologies Inc: Unknown device 5833 (rev 02)
0000:00:01.0 PCI bridge: ATI Technologies Inc: Unknown device 5838
0000:00:13.0 USB Controller: ATI Technologies Inc: Unknown device 4347 (rev 01)
0000:00:13.1 USB Controller: ATI Technologies Inc: Unknown device 4348 (rev 01)
0000:00:13.2 USB Controller: ATI Technologies Inc: Unknown device 4345 (rev 01)
0000:00:14.0 SMBus: ATI Technologies Inc ATI SMBus (rev 18)
0000:00:14.1 IDE interface: ATI Technologies Inc: Unknown device 4349
0000:00:14.3 ISA bridge: ATI Technologies Inc: Unknown device 434c
0000:00:14.4 PCI bridge: ATI Technologies Inc: Unknown device 4342
0000:00:14.5 Multimedia audio controller: ATI Technologies Inc IXP150 AC'97 Audio Controller
0000:00:14.6 Modem: ATI Technologies Inc: Unknown device 434d (rev 01)
0000:01:05.0 VGA compatible controller: ATI Technologies Inc RV250 5c61 [Radeon Mobility 9200 M9+] (rev 01)
0000:02:03.0 FireWire (IEEE 1394): Texas Instruments TSB43AB22/A IEEE-1394a-2000 Controller (PHY/Link)
0000:02:04.0 CardBus bridge: Texas Instruments PCI1520 PC card Cardbus Controller (rev 01)
0000:02:04.1 CardBus bridge: Texas Instruments PCI1520 PC card Cardbus Controller (rev 01)
0000:02:0a.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ (rev 10)
ubuntu@ubuntu:/etc$
這下知道pci id 了,到Google搜尋一下: pci id 5833,到這個網站http://www.idhw.com/textual/chip/ati/pciid.html看到,原來是
   
5833 IGP 9100 RS300 Host Bridge
5838 IGP 9100 RS300 CPU to AGP Bridge

這裡 http://www.pcidatabase.com/ 更方便,輸入id就會出現device name,而且也可以查vender id。

0x4347OHCI USB Controller #10x1002ATI Technologies Inc.
0x4345EHCI USB Controller0x1002ATI Technologies Inc.
0x4349ATA Controller0x1002ATI Technologies Inc.
0x434CLPC Controller0x1002ATI Technologies Inc.
還有Graphic Card倒是直接就probe 出來..
VGA compatible controller: ATI Technologies Inc RV250 5c61 [Radeon Mobility 9200 M9+] (rev 01)
這樣,就可以到ATI去downdload driver啦。
其實也沒那麼方便。
因為Windows怎麼樣都不肯使用新安裝的driver,所以只好手動指定他使用我新莊的driver。
這樣之後,所有的"?"都沒了,resource 衝突也解決了。


然後開啟windows update。
install update後,就有了 休眠 功能。
這樣應該算是大功告成了。

還剩下鍵盤貼紙還沒買,bbs上說到順發或?試試。
在yahoo拍賣上也一些。
還有google "刷鍵盤" 會出現幾家。可以網購。約150一片。

有人說刷鍵盤3個月後就會掉,還是用貼紙。1年換一次就好。
還有金鍵盤可以刷 注音,倉頡,符號,每種500。

後續:
這樣install的graphic driver,在啟動全hardware功能時,不能播放video (mplayer)。
所以..應該是driver選錯。
正確的方式應該是要強制driver去使用附的cd 中的driver。
這樣才會OK。

星期一, 1月 02, 2006

Redhat 9 的支援 - legacy Fedora

由於Redhat 9 之後就沒有redhat 了(導致到現在都有人以為redhat 9是最update的版本,其實Fedora Core才是)。但是因為FC的變更很大,加上RH9, 7.2 ... etc 還是很多人在用(沒有壞就不要修),所以對這些古老版本的suport 還是很需要。

於是社群就設立的一個org,支援這些古老的redhat 版本(Legancy)。

http://www.fedoralegacy.org,update好像也很方便,只要先裝一個package tool : apt, yum 或是?
然後將這個org的update 網站加入,就可以update了。

這樣就可以繼續使用redhat 9,又不用怕被hack了。


這篇文章有說明安裝yum來update 的方法:

國內,想使用這項更新服務的朋友

以 tnc7.3.tar.gz 為例:

#ncftp ftp.tnc.edu.tw
#cd pub/fedoralegacy-tools
#get tnc7.3.tar.gz

#tar xvzf tnc7.3.tar.gz
#cd tnc7.3

下 ./install 即可安裝設定完成,

然後請執行 yum update


這一篇則是 redhatlegancy 自己的說明,使用apt:

先安裝apt:
# rpm -ivh http://download.fedora.us/fedora/redhat/9/i386/RPMS.stable/apt-0.5.5cnc6-0.fdr.8.rh90.i386.rpm
把 rpm http://download.fedoralegacy.org/apt redhat/9/i386 os updates legacy-utils 加到 /etc/apt/sources.list 中
產生GPG-KEY:

#rpm --import http://www.fedoralegacy.org/FEDORA-LEGACY-GPG-KEY
OK!然後就跟Debian一樣了:

# apt-get update
# apt-get upgrade



還有這一篇(有涯小札)也是,但是因為網站好像倒了,只能由Google的cache看到,為了避免不見,我就整個copy了下來....


問題:

在家的 Redhat 9 以及在學店的 Fedora Core 2,一直沿用位於 Linux@DUKE 的 repositories ,配合 yum 進行更新。但近數月以來,兩個版本的 repositories 都再沒有動靜,似乎已經停止了更新。

解決方案:

透過偉大的 Google Groups,找到一處名為 The Fedora Legacy Project 的網站,內有提供 Redhat 9 及 Fedora 各版本的 repositories,可用來取代舊有位於 Linux@DUKE 的 repositories。

在網站的 Download 頁裡,說明了利用 apt 及 yum 更新 Linux 的方法。不過網站建議我們安裝由其提供的 yum 套件,以提高安全性。詳情可參考 Documents 的指示。以下就用 Redhat 9 為例,概述整個過程:

  1. 首先變身為 root,並安裝 gnupg:

    rpm -Uvh http://download.fedoralegacy.org/redhat/9/updates/i386/gnupg-1.2.1-9.i386.rpm

    如果 rpm 傳回 “package gnupg-1.2.1-9 is already installed“,不必理會,可以到下一步。

  2. 再來是安裝經 The Fedora Legacy Project 特別設定過的 yum。不過我建議先移除系統上的舊版本:

    rpm -e yum
    rpm -ivh http://download.fedoralegacy.org/redhat/9/legacy-utils/i386/yum-2.0.5-0.9.2.legacy.noarch.rpm

  3. 接下來檢查 /etc/yum.conf 檔,並確保其設定如下:

    [main]
    cachedir=/var/cache/yum
    debuglevel=2
    logfile=/var/log/yum.log
    pkgpolicy=newest
    distroverpkg=redhat-release
    tolerant=1
    exactarch=1
    exclude=kernel*

    [base]
    name=Red Hat Linux $releasever - $basearch - Base
    baseurl=http://download.fedoralegacy.org/redhat/$releasever/os/$basearch
    gpgcheck=1

    [updates]
    name=Red Hat Linux $releasever - $basearch - updates
    baseurl=http://download.fedoralegacy.org/redhat/$releasever/updates/$basearch
    gpgcheck=1

  4. 最後加入 GPG keys:

    rpm –import http://www.fedoralegacy.org/FEDORA-LEGACY-GPG-KEY
    rpm –import http://www.redhat.com/security/db42a60e.txt

完成上述步驟後,便可如往常一樣用 “yum check-update” 或 “yum update” 檢查及進行更新了。Fedora 的做法大同小異,主要是網址不同,請自行參照 Documents 裡的有關指示。

參考:The Fedora Legacy Project

memo - 樓上的測試房間

Vicent 的分機: 7610
電燈在外面,走道的門口.
pc 的password是7400.
pc 的D, E partition 可以用.

TV 的power 在panel 下方,往外是開啟,有點接觸不良,要敲一敲。
要準備的東西...
hub - TV 跟 PC 都要用,所以要hub
網路線 - 已經有兩條,還要一條接到牆上的。
RS232 cable - 要接到TV 上 download code。


暈倒,vmware player 在這台pc上會讓網路當掉。

VI 的學習

VI 的指令很多,再好是部份部份的學。用熟了再學一點。
先作開關檔動作。
insert (i)
append (a)
replace (r)
delete (x)
delete line. (dd)
write (:w)
當然。移動游標也是必須的,不過用hjkl 可能要熟悉一陣子,剛開始還是用方向鍵好了,還不用一直在moviing - edit mode 切來切去。 這些先用一個月。
然後是移動到行首(^),行尾($)。 -- 記法是regular expression, ^代表字首。$ 代表字尾。
移動到檔首(gg),檔尾(G)。
移到第N行。(:N)

寫程式的人還有一個很有用的: % ,可以在"{"," } "間跳來跳去。
這些再用一個月

網誌存檔