目前日期文章:200512 (2)

瀏覽方式: 標題列表 簡短摘要

星期三, 十一月 30, 2005

filckr 的photo link 備份

因為我是窮人,沒有pro的帳號,只有200張的link可以用。所以只好自己把link記起來...
advsetdialnonewmodempasswordselectadvsetselectcomportInkscapesiteopenworkbenchsiteaxd_config_selecttargetaxd_config_target_addAXD_SelectimgAXD_loadimgAXD_OpenSourceAXD_ViewSourcephone-dryergoogleOSgoogleOS_2picint_structRS232SampleSearchThisBlogBlogSearchThinkFreeOnline_folderThinkFreeOnline_wordlighttpd6flavorseafoodBBQChickenNewoleanChickenpizzahutaddress050918 002050918 017050918 018050918 020050918 022050918 023050918 025050918 026050918 036050918 038050918 046RX_NOWORKtreo700typhonpathmoonlakeGpsdrivemapserver051001 006051001 007051001 008051001 013051001 017051001 027051001 032051001 033051001 035051001 036051001 043051001 044051001 047051001 050051001 051051001 053051001 054051001 055051001 056051001 058051001 061051001 064051001 069051001 072051001 073051001 076051001 078051001 081051001 082051001 083051001 084051001 086051001 087googlereaderTheHitchikersGuideTotheGalaxycollagecollage1collage2collage3collage4collage5DSC00461DSC00462AUD00064_1Mbaddylistcollage6DSC00467DSC00468collage7DSC00477DSC00497DSC00498DSC00498DSC00499DSC00500DSC00501DSC00504DSC00505DSC00506DSC00507DSC00508DSC00510DSC00512DSC00515DSC00515DSC00518DSC00520DSC00521

wavecom - test

安裝VC6,再安裝OA跟OA dev tool。
裝OA時會自動偵測是否已經安裝Cygwin。
如果沒有,他會幫你裝。但是因為他的Cygwin Setup版本太舊,安裝會不成功。
所以自己到Cygwin 網站去run setup。

說明寫要將所有的Cygwin都裝進去(約700 M的source...),太大。所以我裝Default。
裝完Cygwin後再裝OA , OA dev tool。他發現我已經有Cygwin了,所以就沒叫我再裝一次。就直接copy arm-gcc。
安裝順利...

Test...
New一個project,出現找不到xsltproc..這應該是Cygwin沒裝到的部份。
再到Cygwin網站執行install,在 devel 下有libxslt,選擇Install,他會同時install一些xml的東西。

安裝完後再new一個project。已經OK。也可以build.

The Definic Guide to GCC - 筆記 I

p.70
Build Source的步驟分為: 1.Preprocess 2.Compile 3.Assemble 4.Link
這四步驟GCC都可以自動工作。他是依照目標的副檔名來決定要作那一個動作:
1. .c, .C, .cc, .cpp, .cxx  : preprocess
2. .i, .ii : compile
3. .m : object C source code
4. .h : header
5. .s : assemble
6. .S : need preprocess assemble source
也 可以用 -x lang 指令指定類型。lang就是檔案類型,可以是:
c, object-c, c++, c-header, cpp-output,  c++-cpp-output,  assembler,  assembler-with-cpp.
另外,以下是用來控制compile process的選項:
 -c  : Link前終止。(compile only)
-E : preprocess後終止
-o file : 把輸出寫在 file 中
-S : 產生assembly後終止
-x lang : 其後所有檔案的語言都視為 lang
-x none: 取消上一個 -x lang的設定
GCC在處理後會用default的檔名和副檔名,例如 -c option作compile動作後產生objec檔,會以 .0 為副檔名。
用 -E 選項後會將結果輸出到standard out。所以要存檔的話,要用管線扶符號 " > " 重導到檔案。
用 -S 選項後會產生preprocess

星期二, 十一月 29, 2005

LinuxBIOS - workrecord

因為board是82845G,但是現有LinuxBIOS沒有支援,所以找找看有沒有相近的:
src/northbridge/intel中有i855pm。其他都是server用的chipset。所以就以這個為reference。
找到mainboard是digitallogic/adl855pc

找LinuxBIOSv1的northbridge,有82860, 82830, 82815ep.
82815ep是SDRAM,所以可能差異比較大。
v1的build process和v2差異很大......所以還是ref i855pm好了....

LinuxBIOSv1的HOWTO說明還需要去download kernel source code,加上pacth後才能使用v1的Makefile來build。
但是LinuxBIOSv3的HOWTO已經沒看到要download kernel source了。難道已經boundle在LinuxBIOSv2的distribution中了? Trace一下build process..

Make的動作是由target下的board開始,/targets/intel/xe7501devkit/xe7501devkit/Makefile..
all: ./linuxbios.rom
normal/linuxbios.rom: cd normal make linuxbios.rom
到board下可以看到normal folder。就是這裡的Makefile...這個Makefile就直接的加入各個.c module。...ldscript的位置,crt0.s....etc。所以這個大概就是root Makefile。

這個Makefile看到crt0S是由CRT0_INCLUDE組合而成?
CRT0_INCLUDE又是由一堆include依序組合?
因為這個makefile也是generate出來的,所以猜CRT0_INCLUDE-->crto.S-->crt0.s 應該是一種assembly的code-gen動作(猜的)

在normal下有Makefile,Makefile.settings。這兩個都是auato-generate出來的。
Makefile.settings中定義了Makefile中使用到的變數,比較重要的有:
CRT0:=$(TOP)/src/arch/$(ARCH)/init/crt0.S.lb
在make時snap output,配合normal/Makefile和Makefile.settings可以看到整個build process
$ make 2 >&1  tee outputfile
Makefile Generator : 從buildtarget script看到,script是在util/newconfig下的python script

Linux 的internet proxy server

是用apt-file search proxy 然後一個一個google package name得到的:

tinyproxy

Lightweight HTTP proxy,好像著重在管理,不在cache,因為lightweight,所以很快,也很適合修改source code,做出符合自己需要的版本。

tidy-proxy

用perl 寫的proxy,?詳細不太了解。

transproxy

好像不是proxy,是要和iptable, squid一起使用,會自動intercept package,re-direct to correct proxy server。

Filterproxy

一般的http proxy,可以用來filter任何使用http的data。project重點在filter,可以自己寫filter rule,對data內容作修改(strip image,, etc)

ftpproxy

FTP gateway,application level。在client和server間forward符合RFC 959的protocol。

Webcleaner

比較像http filter,會辨識HTML tag,javascript,stripe不需要的資料。

這一邊有一堆http proxy

很 清楚的list。
試裝了tinyproxy:
#aptitude install tinyproxy
和一般debian的package一樣,在/etc/init.d/下會有tinyproxy 這個start/stop script。
設定檔在/etc/tinyproxy/tinyproxy.conf。
修 改tinyproxy.conf。其中...
Listen  192.168.0.1
要改成對內的ip。
Allow 127.0.0.1
要把client的ip也加進去..
Allow 127.0.0.1
Allow 10.3.5.0/25
25是mask,代表25個bit。也就是。
修改好後,和一般server一樣
# /etc/init.d/tinyproxy start
在log file : /var/log/tiny.log可以看到起動的message。
Browser的設定:
就是將http proxy設在tinyproxy對內的ip,port 8888就可以。
連線後可以在log中看到連線資料
測試firefox 連線OK,MSN OK。IE OK。
但是FTP不OK。查看log : /var/log/tinyproxy.log。出現
Request CONNECT 10.3.2.199:8888 HTTP/1.1
Refused CONNECT method on port 8888
Not sending client message to remote machine
猜測是CONNECT method受到限制。
check /etc/tinyproxy.conf。有:
ConnectPort 443
ConnectPort 563
comment是說這是限制CONNECT command能夠使用的port,default只有開啟SSL使用的port。
所以ftp的port 21就不能用CONNECT command了。
修改...(把這兩行comment掉,就是allow all port)。
再試一次。OK
FTP一樣要設proxy, port和passive mode。

星期一, 十一月 28, 2005

Winbond W78E58B : 華邦的9051變種MCU

spec在Winbond網站可以downlaod (http://www.winbond-usa.com/products/winbond_products/pdfs/8-bit/W78E58Bg.pdf)
核心是8052,另外增加:
32K ROM
4K AUX ROM - ISP loader code
512 RAM (其中256是AUX RAM)
4 個IO Port.

RAM

00H-7FH: 直接/間接定址
80H-FFH: 間接定址
AUX 00H-FFH: 間接定址,使用MOVX指令
AUX RAM rese 後是disabled,要將CHPCON的bit 4 設定後,才會將這個RAM開啟。
因為這是從CPU Core修改的功能,所有MOVX @R0/1的動作都會對應到AUX RAM,而不會影響到外部。同時,也不會影響P0/P2的動作(一般MOVX 指令會使用P0/P2作為bus line)。

In System Programming (ISP) Mode

利用另外提供的4K ROM,可以作ISP的動作。
對read-only的CHPCON register寫入87H,59H後會開啟CHPCON的write mode,對CHPCON的bit更動,可以讓MCU進行(wakeup後執行4K ROM的program,MCU reset..等動作)。
programming相關的SFR:
SFRAH,SFRAL:燒寫的高/低位址
SFRFD:燒寫的資料
SFRCN:control byte of on-chip ROM progamming mode

SFRCN.6 (WFWIN) : 0 - 燒錄32K ROM
1 - 燒錄 4K ROM區域(AUX ROM)

W78E58B_SFCNspec 後附ISP的sample code。

使 用祥曦的P-ICE來作模擬時....

要使用到AUX RAM的功能(ISP就不用想了,一定是不可能模擬,除了jtag, embedded trace cell type的cpu外,沒有看過可以模擬ISP功能的MCU)。要follow deemax網站討論區的這一篇: 為甚麼P-ICE無法模擬W78E65Pㄋ
其實也不是甚麼密技,只是deemax的人不把他寫在Help中,所以如果不到討論區去問一下,應該沒有人會知道,要把JUMP設成BUS,然後又不能完全follow help的內容。要把P2設成IO。

所以說這些作tools的人很奇怪,既然是賣tool,有寫明有支援W78E58B,實際上也可以支援,但是在操作手冊中就是不說。讓人try了大半天,罵了大半天候,耐著性子到討論區去問,才給回答。
....但是這時候........已經對deemax沒甚麼好感了。

但是偉大的是,你問他為什麼不在手冊中寫清楚呢?(要不然就在W78E58B中註明限制)。
還有人會還回答說: ..其實這一家已經算很好了,問問題還會回答,像XXX和OOO,問題就像是石沉大海...
....所以?是在比誰比較爛就是了?

抱怨這麼多,設定還是要寫一下:
  1. 將target POD的X1,X3,X9 Close (P0/P2 as BUS)
  2. 將cpu的EA 接到High (disable EA)
  3. 將WUIT的P2ASIO enable起來
  4. 注意: Target POD上的CPU要有on-chip XData。WUIT emulate targt也要選有的
  5. Code : 在使用pdata前要enable:
    sfr CHPENR = 0xF6;
    sfr CHPCON = 0xBF;
    ......
    CHPENR = 0x87; // enable CHPCON write
    CHPENR = 0x59;
    CHPCON = CHPCON | 0x10; // write to CHPCON, enable AUX-RAM
    CHPENR = 0x00; // back to normal CHPCON write-disable
    ...

星期五, 十一月 25, 2005

Keil 51 Compiler的memory model and Optimize

Memory Model

Keil C 51的Memory有三種:
Small  :  variable in DATA
Compact: variable in PDATA
Large : variable in XDATA
其中variable的意思是指 宣告在function中的local variable。
雖然依照一般C的implementation,function的local variable應該要從stack中allocate,但是可能是為了防止Stack過深,超過51的限制(51的stack是在idata)。所以 compiler會自動作function間的dependency checking,採用共用變數的方式,將local variable放在 _DATA_GROUP_。
Compiler的選項:Small,Compact,Large的設置就是決定這個segment存放的記憶體位置。
Small   : variable in  DATA,會將所有local variable放在 DATA,segment name叫_DATA_GROUP.
Compact : variable in PDATA,會將所有local variable放在PDATA,segment name叫_PDATA_GROUP_.
Large : variable in XDATA,會將所有local variable放在XDATA,segment name叫_XDATA_GROUP_.

PDATA,XDATA都在外部,但是PDATA是在位址256以內,所以使用R0/R1 就可以index到,不需要用DPTR。
但是PDATA的size也被限制在256。
複習一下51的memory architeture,51內部有記憶體,但是也可以外加記憶體,使用外加的記憶體時,同時可以使用內不的記憶體。
用兩個不同的指令來區分對內部和外的memory動作:
MOV  : 對內
MOVX : 對外
對外的操作一定要用間接定址,index register可以用dptr或是R0/1。
對 內的操作,因為受到51是8bit cpu的影響,一個instruction只有8 bit,所以只能直接address到1/2 byte的位址空間(128 byte),在128 byte以內,可以用直接和間接定址,128到256之間一定要用間接定址。
其他的問題:Keil採用Compiler決定 function depenency,使用function pointer時怎麼辦?

Optimize Level


51 雖然有一般用途的stack和stack pointer,但是Keil C51並沒有真的像標準的C compiler一樣,將function local variable 放在stack中,反而是將local variable都自行allocate在RAM中固定位置,另外利用Compiler作function dependency tree。決定function間共用variable的時機。
這要enable optimize : 2 - Data Overlaying,才會啟動。否則Keil C不會check function dependency而共用local variable。

所以enable optimize 2以上,對RAM用量影響很大。

另外一個影響RAM用量的optimize的level是 4 : register variable。會在容許的時候,使用register作為local variable。這樣也可以節省ram的使用。但是register 的local variable在debug時無法顯示出來。必須要自己去找出register才行。

Intel 82845G GMCH Overview 筆記

從intel 網站download的datasheet : http://www.intel.com/design/chipsets/datashts/290746.htm.
首先要知道現在mainboard的架構:MCH,ICH,FWH。
這顆是MCH (+Graphice)。

支援32bit host addressing.

Host的IO cycle會解碼到chip的AGP/PCI_B,hub interface , GMCH的configuration space.
Host的mem cycle會解碼到chip的AGP/PCI_B,hub interface和system memory。

host解碼到AGP所屬的address range時,會經由AGP translation table轉換。
device request 解碼到 none-cacheable memory不會真正access到host bus。
device用PCI semantics發出memory access requset會真正access到host bus。

Hub interface

Hub interface是GMCH和ICH連接專用。

預計的步驟

  1. 安裝linux在機器上
    1. 找Monitor,Keyboard
    2. distribution: Debian ? LiveCD ?
  2. 用linux檢查使用的chipset
    1. lspci

Google又有新服務: Google Base

有人說是Google的分類網站,有人說是資料庫,
進去看了,不知道如何使用。
現在已經有很多網站介紹了,我覺得 這一篇(Jacky'sBlog) 說得最清楚,還有範例說明。

從Jacky的說明可以看出是比較接近資料錄庫了,
實際試用後也覺得如此,當拍賣網站的話缺了出價/比價功能。

很 不錯喔,要是也公佈Web API後,應該會有很大的應用吧。
不過item一定會有expire day (max: 31 day),expire後進入inactive,不曉得inactive item會不會還是public (google搜尋得到)。
跟資料庫一樣,可以create一個資料庫,建立attribute,但是不是關聯式資料庫,也就是說attrib不能link到另一個資料庫的item。
所以作為一個標準(基本)功能的資料庫來說,還不夠。
大概就是他的expire day和contack to owner功能,很像是拍賣網站吧。
應該說是個人商店比較適合,每個人可以用Google Base公佈自己要賣的商品,可以分類,設定expire day。
buyer可以用google base搜尋到自己想要的物品,並且向賣家聯絡。

星期四, 十一月 24, 2005

VOIP的奇妙網站

有一些教人用簡單的電路接到PC撥IP phone (很低階)。
還有一些簡單說明使用IP PBX撥打電話的方法,很適合一般使用者。

12 小時與24小時制

24小時制是 0 - 23
12小時制是1-12,但是實際上應該是12.1.2.3.4.5.6.7.8.9.10.11 (12進入另一個半天)

如果要coding轉換這兩者。也就是說內部變數使用24小時制,顯示使用12 小時制加上AM/PM。
就要把顯示分開處理,因為12 hr制的數值是不連續的:
AM 12. 1. 2. 3. 4. 5. 6. 7. 8. 9.10.11  PM 12. 1. 2. 3. 4. 5. 6. 7. 8. 9.10.11

AM11轉PM 12還好,對應PM12是24小時制的13,PM 1是24小時制的的14。
但是AM12對應的是0,就不能用了。
所以最好的方法是顯示時分開。

...這一篇不知道在講甚麼,我自己都看不懂,我要講的是要針對 0, 12作轉換。所以if - then -else會多一層
if (h23>=12) {
h12flag= ISPM;
if(h23==12) // 針對12 作特別處理
h12=12;
else
h12=h23-12;
}else{
h12flag=ISAM;
if(h23==0) // 針對0 特別處理
h12=12;
else
h12=h23;
}
很醜,有兩個特別處理,查表可能比較漂亮。
不知道那一個比較省code。

有趣的照片 - 動物園

這是 張大魯的色攝情布拉格
可以看到真實的一面喔。

應該要去看看:)

星期三, 十一月 23, 2005

ZFS : amazing file system ,oh.. this is not its full name.

ZFS是Sun的OpenSolaris中的一個file system,是CDDL license (不知道是怎樣)。
從Link (http://opensolaris.org/os/community/zfs/demos/basics/)的flash demo來看。
可以有Raid (Mirror),自由增加space,自由改變mount point,可以在其中create file system。
看來真的是Sun所說:The last word in filesystem.

這裡(http://tw.sun.com/press/report/20040914.html)是中文的說明(Sun的廣告文宣)

可惜License不是GPL...

星期二, 十一月 22, 2005

案子報價 成本估算

Tsung's Blog 看到的...co 一下
看板 php
作者 duan (上邪)
標題 Re: 請教案子
時間 Fri Sep 16 02:17:07 2005

看了大家的想法, 弟也來說一些自己小小的心得.

在報價時, 常常會忽略一些無形或不容易考慮的成本:

1. 溝通.
尤其在規格不明確的狀況下, 溝通的成本甚至會高於開發的成本, 或者說讓開發
的成本大幅提高 (修改規格) . 不過很不幸的, 國內相當多的案子, 客戶是不會
自己提規格的 (或者說是相當粗糙的規格) . 所以光是要確認規格, 就需要相當
的成本. 當然, 如果有人喜歡邊做邊確認規格也可以, 風險自負 :)

2. 所得稅.
中華民國萬萬稅, 這個不用說了吧. 十萬元的案子假設以 13% 的稅來算, 實拿
才八萬七. 報價時如果沒講清楚, 不要希望客戶會幫您補上稅金差額的.

3. 時間.
這點除了和上面第 1點息息相關, 也和自己的生活習慣有關. 往往都會把時間估
的太樂觀, 結果客戶溝通不良, 自己時間又沒分配好, 整個生活品質就都沒了,
陷入趕案子的惡夢中.


除了這些會疏忽的成本外, 也要考慮一些其它的事項:

1. 沒有明確的規格以前, 報價要保留一定的彈性.
像討論區這麼常見的需求, 但簡繁的差別可能讓報價翻上好幾倍. 不要預設以為
自己想的規格對方一定可以接受, 也不要認為現成看起來很好用的套件就一定可
以滿足對方.
即使現成的套件可以滿足對方的規格了, 但也不代表就沒有其它的成本. 例如要
用 phpbb2 , 但是會員的部份要和其它的套件整合在一起, 總不可能討論區要一
組會員, 聊天室又一組會員, 這種整合的需求就是成本.

像前面引言保留的那幾項, 都是很常見的需求, 但是規格往往差異也很大. 以會
員制度來說, 幾乎不會有可以完全現成可套用的情況, 客制化的程度或多或少的
差別而已.

2. 系統環境.
雖然說 php 算是跨平台的語言, 但是不同平台還是有一定的差異. 在別的地方
看到有人認為使用虛擬主機成本更低, 因為不用自己架環境. 其實這是不一定的.
如果對方申請的虛擬主機硬是少裝了某些套件, 而自己又權限不夠無法安裝的話,
就知道成本是高還是低了.

3. 美編.
不要認為自己做的網頁介面一定可以滿足對方. 而有時候對方可能會有美編人員
和您配合, 但這也不一定是好事, 有時候不懂事的美編足以讓有備份習慣的人也
只能哭天喊地的想辦法把資料弄回來. 如果有自己習慣搭配的美編當然是最好的,
不過不要忘了, 這樣就是兩個人的成本了


雖然網頁的技術已經好幾年了, 看起來很成熟了, 不過並非那麼美好. 很多人以
為只是拿現成的套件搭一搭配一配, 就可以拿去賣錢了, 至少很多老闆是這樣想
的, 但是拜託, 身為工程師的人千萬不要這樣想.

寫程式的, 尤其是寫 web 的, 鮮少有不需要客制化的部份. 如果您真的非常利
害, 把所有可能的需求都寫成元件, 可以組一組就拿去賣, 那就是您的本事. 您
要以量制價, 那絕對沒問題. 但如果不是, 請記得做生意是將本求利. 如果您的
時間不值錢, 大可以把價格往下壓, 這也沒什麼不道德的, 做生意本來就是競爭.
如果有人願意花半年溝通及開發的成本來賺兩萬元, 那沒接到案子的人自然就摸
摸鼻子認了.

當然, 如果做一半覺得划不來就一翻兩瞪眼走人的, 導致這塊市場越做越爛, 那
又是另一回事了.

弟自認報的價格一向是算低的了, 不過上面提到的需求, 說實在的, 報的價格
range 還在五萬以上. 畢竟上面的規格都只是 feature 而不是 spec , 如果
客戶要砍價錢, 那就提出要壓低規格的地方, 如討論區等.

還記得在約莫兩年多前, 曾有一位客戶輾轉透過朋友認識, 提出一個架構相當龐
大的案子, 包含面對面的聊天室, 條碼圖書定閱之類的約十幾項. 對方用聽說不
到五十萬的價格標下來這個案子, 等到要轉包出來給別人做時, 發現沒人要接.
等到剩不到兩個月要結案了, 他們想不賺錢包出去給別人做, 都還是沒人敢接.

弟正好也是不敢接的人之一, 以他們列的十來項規格中, 挑了一半認為可以做的
來單獨報價, 也超過三十萬了. 剩下不敢做的項目, 成本只會比三十萬更高, 客
戶當然是不敢分開來外包來做. 最後如何了不知道, 不過結不了案的機會大概很
高吧 (一笑) .

Etherboot

是一個software package,用來create可以由網路開機的 rom image (燒錄在bios flash裏)。
一般的用法是利用NIC上的bootrom (現在幾乎都沒有了),將etherboot create的room燒到NIC上。讓bios找到。

etherboot開機比用hard disk還快,因為經由網路傳輸kernal image比HD用機械式的方法還快。

Etherboot需要:
  • bootstrap loader,一般會是在ROM中,如果是測試用,也可以用floppy的bootstrap loader來load Etherboot。
  • DHCP 或bootp server,Etherboot需要用他來得到image server的資料
  • tftp server,將kernel image送給etherboot,Etherboot也可以規劃用NFS mount開機。
  • Linux或FreeBSD kernel
  • kernel 開機的RAM disk
  • download,build and debug Ethertool的tool (這有點像是廢話)
並不是所有的hardware都可以用Etherboot,Etherboot只支援部份的NIC(很大一部分)。
有人已經作好一個 web-interface的rom generator,到web page去選NIC type,target boot media,甚至可以作一些細項設定。之後按下Generate,就會自動產生ROM image出來,download就可以 http://rom-o-matic.net/5.4.1/

LinuxBIOS HOWTO : EPIA-M-howto

新checkout的LinuxBIOSv2(revision 2090)增加了HOWTO部份,裡面只有EPIA-M-howto。以下是筆記:
LinuxBIOS 從第一個serial port送出debugging output。 115200 8-N-1。
使用LinuxBIOS,還需要一個 "payload",LinuxBIOS執行完後,將控制權交給"payload",payload會去作"載入OS"的動作。一般LinuxBIOS配合的payload程式有
VGABIOS,LinuxBIOS使用原有的VGABIOS,所以要從mainboard上取得,首先要使用原有的BIOS執行Linux,然後以下命 令:
dd if=/dev/mem of=/video.bios.bin bs=1 count=65536 skip=790528
將VGA Bios讀入video.bios.bin檔

Getting Going


  1. 安裝Linux在要使用LinuxBIOSv2的系統
    這一步是為了取得該系統的BIOS資料。
  2. 取得LinuxBIOSv2的source code
    LinuxBIOSv2目錄下,會有:
    src: 所有source code所在目錄
    targets: 各platform相關的設定(config)檔所在,會在此進行build的動作
    util: build和debug所需要的工具。
  3. 這一步說明燒錄bios flash的動作與注意事項(建議使用bios savior - 去哪買?)
  4. FILO
    到http://felixx.tsn.or.jp/~ts1/filo下載filo,解開後先make一次, 修改config檔
    AUTOBOOT_FILE "hda1/vmlinuz root=/dev/hda2 console=ttyS0,115200"
    意思是:在IDE 1的partition 1找到vmlinuz作為kernel image,boot kernel時,傳入參數: "root=/dev/hda2 console=ttyS0, 115200"
    修改完後再make一次,產生filo.elf。這就是LinuxBIOS的payload。
    當 然還要準備好要boot的linux kernel image。
  5. build LinuxBIOSv2 : EPIA-M
    到LinuxBIOSv2目錄下
    cd tagrets
    ./buildtarget via/epia-m
    會產生target/via/epia-m/epia-m目錄
    buildtarget 是依照target/via/epia-m/Config.lb產生這些makefile和設定檔。如果需要不一樣的設置,就需要對config.lb作 修改,例如:filo.elf要改在其他位置....
    修改完後要執行./buildtarget一次重新產生make file。
    這 個config檔設定產生196608 byte的LinuxBIOS rom image,比epia-m flash的256k少了64k,這64k是要給VGA BIOS用的,將makefile的
    cat fallback/linuxbios.rom > linuxbios.rom
    改為
    cat /video.bios.bin  fallback/linuxbios.rom > linuxbios.rom
    這樣就會將VGABIOS和LinuxBIOS合成一個image。
    再make 一次,linuxbios.rom產生。檢查一下size

checko 發表在 痞客邦 PIXNET 留言(0) 人氣()







星期一, 十月 31, 2005





Install Asterisk in Debian




因為用apt-get install asterisk 後,config file不知道要怎麼設,所以還是follow 書的作法。用cvs 來download。
先到/usr/src下,待會checkout的data會到這裡。
# cd /usr/src
接著export cvs需要的variable:
# exports CVSROO=:pserver:anoncvs@cvs.digium.com:/usr/cvsroot
接著login cvs server:
# login cvs
會出現要求password,輸入" anoncvs ".
可以checkout了,只要作voip,沒有要作trunking,所以checkout asterisk
# cvs checkout asterisk
OK,在/usr/src下已經可以看到asterisk這個目錄了。
Compile, Install
# cd asterisk
# make clean
# make install
結果:
Error : cannot find ssl
大概是沒有libssl(猜的)。用apt-file search libssl 找到libssl-dev,安裝後再make install一次..Success !!
 +---- Asterisk Installation Complete -------+
+ +
+ YOU MUST READ THE SECURITY DOCUMENT +
+ +
+ Asterisk has successfully been installed. +
+ If you would like to install the sample +
+ configuration files (overwriting any +
+ existing config files), run: +
+ +
+ make samples +
+ +
+----------------- or ---------------------+
+ +
+ You can go ahead and install the asterisk +
+ program documentation now or later run: +
+ +
+ make progdocs +
+ +
+ **Note** This requires that you have +
+ doxygen installed on your local system +
+-------------------------------------------+
+ +
+ ** NOTE FOR DOWNGRADING FROM CVS HEAD ** +
+ +
+ If you are downgrading from CVS HEAD to +
+ a stable release, remember to delete +
+ everything from your asterisk modules +
+ directory (/usr/lib/asterisk/modules/) +
+ and the asterisk header directory +
+ (/usr/include/asterisk/) +
+ before doing a 'make install'. +
+ +
+-------------------------------------------+
做出幾個sample configuration file:
# make samples
這會產生一大堆檔案在/etc/asterisk.
啟動:
# asterisk &
就會啟動asterisk server ,
要連上一個已經啟動的asterisk server,用
# asterisk -r
會 出現asterisk的command line interface:
hostname*CLI>
輸入"help"會出現很多message.
 CLI> sip debug
會顯示detail的sip message (protocol),用
 CLI> sip no debug
來停止debug輸出。用
 CLI> quit
結束和asterisk server連線。











Debian : iptables



雖然很久以前就寫過,但是google blog search 搜尋不到,所以還是再寫一次好了:
eth0是ADSL,所以所有從eth0出去的,都做 NAT.
但是因為對內有兩個網路卡,所以沒有指定source ip.
在起動iptables前要enable ip_forward:
# echo 1 > /proc/sys/net/ipv4/ip_forward
之後再 load ip_tables modules:
# modprobe ip_tables
接著開始設定iptables rules:
# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
之後,其他的client就可以把default gateway改為這個主機就可以了。










sshd的配置




加上ADSL,固定ip後,/var/log/auth.log就會有
Oct 31 13:47:53 localhost sshd[19236]: reverse mapping checking getaddrinfo for 82-194-78-76.hospedajeydominios.com failed - POSSIBLE BREAKIN ATTEMPT!
這樣的紀錄,真的是很麻煩。
所以想把ssh對外都關掉。

找到/etc/ssh/sshd_config中,有ListenAddress。不設定的話,是對所有的interface, address都收。所以改成
ListenAddress 10.3.2.77
ListenAddress 10.3.5.99
因為機器上有兩個有線網卡,一個無線。對內的都要收,所以社兩個ListenAddress,但是不是這樣:
ListenAddress 10.3.2.77 10.3.5.99
而是要分開設。所以要寫兩次。
設定後,自己ssh到ADSL的那個address去測試,已經連不通了。

OK









Debian : bash auto competion



今天在moto看到的:
平常用bash最麻煩的就是要打一場串的字。
其實bash有自動填充功能,就是打了幾個字後,就可以用[ TAB ] 鍵,讓bash自動將剩下的字填出來。預設是先找目前目錄下的檔名。
舉例來說:
目前目錄下有
VMWare-player-1.0.0-1691.exe
我要把他co到 ~/share下,可以
$ cp VMW --然後按下[TAB],後面的字就會被填滿
$ cp VMWare-player-1.0.0-1691.exe
自動填充功能設定在/etc/bash_completion,其中決定了search的位置和順序。








星期五, 十月 28, 2005






pchome買的耳麥



AUD00064_1M還好,
定了之後,兩天就到了

collage6

199, 有四組










network device 並不像一般的device,需要在/dev/下有一個node。
network device在driver module load到kernel後,就會自動在kernel中產生一個device node。(所以外面看不到?)

所以network device第一件事就是load module : modprobe。

接著就是用ifconfig來設定network的data : ip address, netmask, gateway... etc.









談成功的產品規劃












ThinStation : ThinClinet LiveCD



http://thinstation.sourceforge.net/wiki/index.php/ThIndex











http://molesterwaterball.blogspot.com/2005_01_01_molesterwaterball_archive.html

( ̄▽ ̄)  ̄□ ̄||| ˋ(′~‵")ˊ o(_ _o ) f(-_-)> ( ̄▽ ̄)

 ̄□ ̄|||╮(─_─)╭ ( ̄▽ ̄)ノ (_ _ )/~~ ˋ(ー_ー )ˊ

( ′-`)y-~ m(-_-)m -_-凸








星期四, 十月 27, 2005






DWL 122 Debian : linux-wlan-ng-0.2.1-pre26 install from source



從sourcecode來安裝linux-wlan-ng-0.2.1-pre26
# apt-get install kernel-package debhelper kernel-headers-2.6.8-2-386
header和source版本要follow你kernel的版本:
# uname -a
會顯示目前kernel的版本。
接著到linux-wlan-ng-0.2.1-pre26下作build process
# make config
會問一些問題,可以讀README的內容了界問題的內容。
有一點: 他需要kernel-source,但是不是真正的source,而是compile module需要的source,他會自己找,好像是
  Module install directory [/lib/modules/2.6.8-2-386]:
完成後
# make all
# sudo make install

修改wlan的config : 這一點不太實用...因為要自己找到AP SSID。
假設SSID是"10.3.3.205 - 3F",沒有WEPP key。
就把/etc/wlan/wlan-DEFAULT copy 並 rename 一下:
# cp wlancfg-DEFAULT "wlancfg-10.3.3.5 - 3F"

然後修改wlan.conf最後:
SSID_wlan0="10.3.3.10 - 3F"
插入DWL-122就可以。
可以demsg看看有沒有load module : prism2_usb, p80211 usb_core的message。
也可以順便查看一下有沒有error message
然後用
#ifconfig -a
看看有沒有列出一個wlan0的network interface..
跟一般的service一樣,start, stop script在/etc/init.d/wlan,可以用
# /etc/init.d/wlan stop來停止
start 開啟
配合 ifconfig -a 可以看看wlan0 起來和停止的狀態
改wlan.cfg的作法也可以用:
#wlanctl-ng wlan0 lnxreq_ifstate ifstate=enable
#wlanctl-ng wlan0 lnxreq_autojoin ssid="10.3.3.205 - 3F" authtype=opensystem
可以加入AP

以上只是interface起來而已,還沒規劃network..
network的規劃還是用ifconfig
# ifconfig wlan9 10.3.5.100 netmask 255.255.252.0 broadcast 10.3.1.15










Some Links abut SER










Debain : linux-wlan-ng 為了dwl 122 usb wifi



#apt-get install linux-wlan-ng
The following NEW packages will be automatically installed:
linux-image-2.6.12-1-386 linux-wlan-ng-doc
linux-wlan-ng-modules-2.6.12-1-386 wireless-tools
The following packages have been kept back:
libnspr4 libnss3 mozilla-browser mozilla-psm
The following NEW packages will be installed:
linux-image-2.6.12-1-386 linux-wlan-ng linux-wlan-ng-doc
linux-wlan-ng-modules-2.6.12-1-386 wireless-tools
是從 "unstable" download的, kernel image被upgrade到2.6.12....
Get:1 ftp://ftp.us.debian.org unstable/main linux-image-2.6.12-1-386 2.6.12-10 [15.8MB]
Get:2 ftp://ftp.us.debian.org unstable/main linux-wlan-ng 0.2.2+dfsg-3 [127kB]
Get:3 ftp://ftp.us.debian.org unstable/main linux-wlan-ng-doc 0.2.2+dfsg-3 [80.7kB]
Get:4 ftp://ftp.us.debian.org unstable/main linux-wlan-ng-modules-2.6.12-1-386 0.2.2+dfsg-3 [197kB]
Fetched 16.2MB in 6m4s (44.6kB/s)
Selecting previously deselected package linux-image-2.6.12-1-386.
(Reading database ... 91790 files and directories currently installed.)
Unpacking linux-image-2.6.12-1-386 (from .../linux-image-2.6.12-1-386_2.6.12-10_i386.deb) ...
Selecting previously deselected package wireless-tools.
Unpacking wireless-tools (from .../wireless-tools_27-2_i386.deb) ...
Selecting previously deselected package linux-wlan-ng.
Unpacking linux-wlan-ng (from .../linux-wlan-ng_0.2.2+dfsg-3_i386.deb) ...
Selecting previously deselected package linux-wlan-ng-doc.
Unpacking linux-wlan-ng-doc (from .../linux-wlan-ng-doc_0.2.2+dfsg-3_all.deb) ...
Selecting previously deselected package linux-wlan-ng-modules-2.6.12-1-386.
Unpacking linux-wlan-ng-modules-2.6.12-1-386 (from .../linux-wlan-ng-modules-2.6.12-1-386_0.2.2+dfsg-3_i386.deb) ...
Setting up linux-image-2.6.12-1-386 (2.6.12-10) ...
WARNING: Loop detected: /lib/modules/2.6.12-1-386/linux-wlan-ng/p80211.ko which needs p80211.ko again!
WARNING: Module /lib/modules/2.6.12-1-386/linux-wlan-ng/p80211.ko ignored, due to loop
WARNING: Module /lib/modules/2.6.12-1-386/linux-wlan-ng/prism2_usb.ko ignored, due to loop
WARNING: Module /lib/modules/2.6.12-1-386/linux-wlan-ng/prism2_plx.ko ignored, due to loop
WARNING: Module /lib/modules/2.6.12-1-386/linux-wlan-ng/prism2_pci.ko ignored, due to loop
WARNING: Module /lib/modules/2.6.12-1-386/linux-wlan-ng/prism2_cs.ko ignored, due to loop
Searching for GRUB installation directory ... found: /boot/grub .
Testing for an existing GRUB menu.list file... found: /boot/grub/menu.lst .
Searching for splash image... none found, skipping...
Found kernel: /boot/vmlinuz-2.6.12-1-386
Found kernel: /boot/vmlinuz-2.6.8-2-386
Updating /boot/grub/menu.lst ... done


Setting up wireless-tools (27-2) ...
Setting up linux-wlan-ng (0.2.2+dfsg-3) ...

Setting up linux-wlan-ng-doc (0.2.2+dfsg-3) ...
Setting up linux-wlan-ng-modules-2.6.12-1-386 (0.2.2+dfsg-3) ...

Reading Package Lists... Done
Building Dependency Tree
Reading extended state information
Initializing package states... Done
Reading task descriptions... Done
重開機,多了一個boot image。選2.6.12的version boot進去後。
modify /etc/modules.conf 加入
alias  wlan0  prism2_usb
執行update-modules,出現warnning : loop detected XXXXXX。
所以之後用modprobe 都無法load prism2_usb module。
google一下,發現是










Debian : NFS Server




NFS Server在Debian中要安裝
#apt-get install nfs-common portmap nfs-kernel-server
安裝完後,因為沒有設定好exports檔,所以最後會有
No starting NFS kernel daemon : No exports
接下來就要設定export檔。
create一個/etc/exports 檔,作為nfs server的設定檔。
以 /nfsroot 為分享的folder為例:
/nfsroot     10.3.2.240(rw)
將nfsroot開放給10.2.3.240這個host。可以作read/write。
啟動nfs server (nfs-kernel-server)之前要啟動portmap
#portmap
之後再啟動 server
#/etc/init.d/nfs-kernel-server start
可以用showmount來檢查:
#showmount -e
Export list for xxxxxxx:
/nfsroot 10.3.2.240
OK
Client端,也要安裝nfs-common portmap
#apt-get install nfs-common portmap
安裝完後,執行portmap之後就可以mount
#portmap
#mount 10.3.2.xxx:/nfsroot remote
10.3.2.xxx是nfs server的ip,remote是local的directory。
要注意folder權限的問題。









星期三, 十月 26, 2005






一些測試的問題:VOIP Phone



測試方式:與PC端互call,使用SER作SIP Proxy, registrator。PC端run X-Lite
  1. 掛斷動作似乎無法傳到X-Lite (用X-Lite互call則ok,所以應該不是SER的問題)。
  2. 不知道怎麼撥號,只能接。
  3. 經過Bridge後的device似乎ping不到(尚未確認是不是device的問題)。










因為有點麻煩,所以紀錄一下:SER 的tutorial




每次要download都要用email註冊一次。所以還是把link記下來好了。










iperf : 網路performance測試軟體



測試網路,兩端都要run,一個run client,一個run server mode。
支援windows, linux, OS X,....

...google一下就有很多,簡單的測試 大概是(以Windows : Server, Linux Client為例)
Windows端
iperf -s
Linux端
iperf -c 10.3.5.xxx
10.3.5.xxx是Windows的ip,command的意思是測試到10.3.5.xxx間的 performance。等一下後,linux端就會輸出
---------------------------------- --------------------------
Client connecting to 10.3.5.XX, TCP port 5001
TCP window size: 16.0 KByte (default)
------------------------------------------------------------
[ 3] local 10.3.2.XXX port 32784 connected with 10.3.5.196 port 5001
[ 3] 0.0-10.0 sec 4.86 MBytes 4.07 Mbits/sec










Minicom : Linux 的hyperterminal




minicom啟動後會尋找config file,自動起始com port 初始化。
參數的設定用 ^-A Z叫出 pop up help。
依照help檔中的key 來動作。
記得改完參數後要 " Save as dl" - save as default。
使用Q 退出(不必reset)。
之後再啟動時,就會依照剛剛save的config內容來啟動。
( 所以單純的改完com port setting並沒有效,要save 重啟動後才有效)。

每次啟動minicom,minicom都會送出Modem control command (AT command),這個不知道要怎樣消除。

minicom可以用作設定/dev/ttyS?的工具(user mode的ioctl)。
對/dev/ttyS?的動作都會從com port輸出,可以用這個方法來傳送檔案。
但是因為/dev/ttyS?沒有提供comm parameter的設定方法,所以可以利用minicom來configure comport,再"不reset 退出",com port就會留在configure後的mode。
之後就可以對/dev/ttyS?操作直接輸出了
舉例來說, 使用9600,8N1,送出uuencode的file出去:
# minicom (進入後設定9600,8N1後退出(Q))
# uuencode fileA dummyname > /dev/ttyS0








星期二, 十月 25, 2005






IP Phone : WAN/LAN Bridge Function



IP Phone 提供WAN, LAN兩個RJ45接頭,主要是提供brideg功能,讓user不用再買一個hub。
可以將IP Phone接到任意已存在的網路連線設備中。









Post from Flock



這是從Flock上po的,試試看結果如何。

可惜沒有html mode。










Post from Flock



這是從Flock上po的,試試看結果如何。

可惜沒有html mode。









星期一, 十月 24, 2005






Debian : apt-file 找程式在那一個package中



Jerry在build中出現
bzcat : command not found!
所以要找該安裝的package是甚麼。
# apt-cache search bzcat
找不到`。因為bzcat是bzip2 package中的其中一個command,但是要怎樣才能知道實際上要安裝的是bzip2呢?就要用apt-find命令
# apt-find search bzcat
bzip2 : /usr/bin/bzcat
bzip2 : /usr/share/man/man1/bzcat.1.gz
....
這樣就知道是要安裝bzip2這個package了。
...
但是apt-find這個command也是要安裝才有喔
# apt-get install apt-file
裝玩後也要
#apt-file update
才可以用。










申請SIP number




到freeworldialup 申請。
號碼是: ....去gmail看。










不知名的uclinx-dev distribution



提供arm utils和kernel和root fs。
kernel是uclinux,但是沒有用uclinux的buildroot包裝,另外包裝一個config,提供設定。
make command會出現prompt。
依照prompt內容依次make target。
要注意的是,在make完toolchain後,要自己執行另外兩個shell script設定toolchain path和kernel path。
* ' source' command用在tcsh中,bash用 ' . ' 就可以,功用是不管file的attrib是否可執行,都執行他。
*之後在make所有其他project前都要run這兩個script。
所有targe依次make後,產生romfs和kernel,downlaod到target board上就可以run了。
* config中也可以設定 root fs: nfs,ext2或是romfs。


本的configuration在選定board後,會有一些基本的設定,有些board沒有辦法選擇rootfs的type。在 armutils
(linux kernel + crosstool + uclibc + rootfs(busybox)) 下的config.in
可以看到一些board/option的dependency。

廠商的library(module)是以另外的package方式提供,build前要設定好build-environment和kernel source位置,build出來後就是.o 和一些sample application。

因為一些module不是GPL,所以只能用module的方式,啟動後再load,不能和kernel static link在一起。在load module時,會出現version violation 的prompt。

boot-loader的source code(GPL)也附在這個package中。
因為這個board沒有jtag,但是有兩個flash,利用jump切換這兩個flash來開機,作燒錄(另一個flash)的動作。
-------所以這兩個flash是chip suport,並不是用jumper 來enable/disable flash。










Debian : 將安裝光碟co到hd中.




。因為Sarge cd11,12竟然不能讀(但是在其他p上又ok),所以想利用另一台pc將cd11,12的資料co到debian的hd中。
co 完後,在/etc/apt/sources.list中加入co過去的目錄:
deb file:/sargecd/cd11 stable main contrib non-free
deb file:/sargecd/cd12 stable main contrib non-free
但是apt-get update卻出現找不到的情況。
follow找不到的path,發現co過去的cd內容,沒辦法把symbolic link也co過去,導致symbolic link變成file。
sargecd的內容 /cd/dists中,有frozen,sarge,stable,testing,unstable。
其中只有sarge有內容,其他的folder都是symbolic link到這個目錄。
所 以手動產生symbolic link後再做apt-get update後就OK。
cdrom要加入sources.list的話,藥用
# apt-cdrom add
然後一個一個的把cdrom放進去。
所以一旦改過sources.list,把原來的cdrom source path comment掉後,又run過apt-get update。要再將cdrom 加回去,就要一個一個cdrom加進去。








星期六, 十月 22, 2005







Sharp GX31 : 100萬CCD, SD, CG-Silicon Yahoo 11388. (ebay 9800)
Mitsubish M790i : 200萬CCD, mini-SD, Pchome 12999










pchome 買的HD : Seagate 120G



collage2
因為爸爸的80G用完了。

.... 沒附螺絲.. Q___Q









mitac M772 壞掉了



collage3
用了5年的NB壞掉了,奇怪。operation led一直亮著,Reset也沒效,fan也不會動。
不知道ˋ什麼問題。
只好把他都收起來。可憐的M772










燦坤買的power supply : 370W




collage4
不知道是什麼牌子,370W,NT 990。
白色的。

先前那一台pc壞掉,原來是power supply的風扇壞掉。










pchome 買的DVD-RW



collage5
1688元。
奇怪的是,只有附2個螺絲。
上次買pchome的hd也是,沒有附螺絲。
...現在 買這東西都不附螺絲了嗎?







星期五, 十月 21, 2005





tar 備份




$ tar -cvf backupname.tar directory
將directory的資料都tar起來到backupname.tar。










CMOS Image Sensor Backend : 義統



好像是義隆的子公司?
有CMOS Image Sensor的backend IC,主要是作P-Cam,但是有提供uP interface,
但是white balance & Gain control都要由pc端來作,
所以不適合用在standalone的產品上(雖然網頁上有reference)。

聯絡人:
03-6661766
陶先生 ext 1650










新酷音




安裝了新酷音,好像不錯,都不會錯。
標點符號也都ok,中英混打呢?
喔!也是用shift key。

超好,打到現在都沒錯,看來以後藥用(喔,錯了)新酷音。


安裝了新庫殷,好像不錯,都不會錯。
標點符號也都ok,中英混打呢?
喔!也是用shift key。

抄好,打到現在都沒錯,看來以後要用(喔,對了)新庫殷。
試用了一個小時候,就把微軟新注音移除了。







星期四, 十月 20, 2005





爛人的結婚帖




收到爛人的帖子了
DSC00462

不錯喔,新娘子還蠻美的,新郎官就不多評論了...
DSC00461
因為他個性不喜張揚(據他自己所述),只有發給少數(也就是桃園以南,南投以北)的幾個同學。不想麻煩大家。

所以我也就沒把日期和地點寫出來,免得造成困擾(或是應該要寫出來,才不會造成困擾?)。

 

祝福他婚後能夠洗心革面,重新做人(????) 。 

-------喔,是好好”做人”`。









繞了一圈又回來:SER install



原來install SER,說要libc6 version > 2.3.? 但是sarge版本太低,又不想upgrade到testing或unstable,所以想install vserver,在vserver裡upgrade libc6再裝。
結果instal vserver時,使用 -t unstable 安裝部分module導致libc6也upgrade了,
既然如此,就直接裝SER算了....

follow SER的install how-to,install SER core ok,安裝suggest module時,說libxml2 version太低。這時候已經知道,就用 -t unstable 作部分升級。升級後安裝所有module OK。
結果OK。
follow document說,debian的script一樣是在 /etc/init.d/ser。一樣是start, stop, restart..
控制用serctl
# setctl moni
就會出現文字模式的monitor data。
測試的client端可以用soft-phone....但是都找不到可以自己設sip server的softphone..










在moto討論區上的一些sources.list內容...




每次都要重新找一次,所以把他記下來...

deb http://debian.linux.org.tw/debian/ stable main non-free contrib
deb-src http://debian.linux.org.tw/debian/ stable main non-free contrib

deb http://debian.linux.org.tw/debian/ testing main non-free contrib
deb-src http://debian.linux.org.tw/debian/ testing main non-free contrib

deb http://security.debian.org/ stable/updates main contrib non-free

deb http://debian.linux.org.tw/pub/kde/stable/3.2/Debian stable main


deb ftp://ftp.us.debian.org/debian/ unstable main non-free contrib
deb-src ftp://ftp.us.debian.org/debian/ unstable main non-free contrib

deb http://linux.cdpa.nsysu.edu.tw/debian stable main
deb-src http://linux.cdpa.nsysu.edu.tw/debian stable main
deb http://ftp.debian.org/debian testing main contrib non-free
deb-src http://ftp.debian.org/debian testing main contrib non-free

deb http://security.debian.org/ testing/updates main

deb ftp://ftp.us.debian.org/debian/ testing main non-free contrib
deb-src ftp://ftp.us.debian.org/debian/ testing main non-free contrib
deb http://non-us.debian.org/debian-non-US testing/non-US main contrib non-free
deb-src http://non-us.debian.org/debian-non-US testing/non-US main contrib non-free

deb ftp://ftp.us.debian.org/debian/ stable main non-free contrib
deb-src checko 發表在 痞客邦 PIXNET 留言(0) 人氣()

找更多相關文章與討論