在 ~/gsoap-2.8/gsoap/samples/rss底下有一個應用,
關於rss reader的部分。
在註解中說明了使用方式。
Compile:
$ soapcpp2 -c -CSL rss.h
$ cc rss.c stdsoap2.c soapC.cUsage (client):
$ rss [maxitems] URL
稍微解釋一下soapcpp2 工具程式參數的意義,
-c是產生c語言,沒寫表示產生c++的輔助程式。
-C generate client-side code only 產生用戶端的源碼
-S generate server-side code only 產生伺服端的源碼
-L don't generate soapClientLib/soapServerLib 不產生
那些code。
在筆者的ubuntu裏,略做修改,
$ cc rss.c ../../stdsoap2.c soapC.c
因為沒有指名產生的檔案名,所以預設是產生a.out
執行程式變成,
$ ./a.out 15 http://tw.rd.yahoo.com/referurl/info/rss/*http://tw.stock.yahoo.com/rss/url/d/e/N3.html
結果是:
Title: Yahoo!奇摩股市 - 個股動態
Link: http://tw.stock.yahoo.com/
Language: zh-tw
Description: Yahoo!å¥æ©è¡å¸
Image title: Yahoo!奇摩股市 - 個股動態
Image url: http://.....................
Image link: http://...................
Image dimensions: 144 x 28
Image description: 1 Title: 樂金調升產能 友達:機率低
Link: http://....../*http:..................
Description: <![CDATA[(中央社記者潘智義台北2011年10月25日電)....器........]]>
所以rss也是一種web service。
可以用指令列讀取,並解析。
之後,要進行換種角度的程式碼分析,
在開源軟體界,有一20多歲的程式碼分析軟體:cscope。http://cscope.sourceforge.net/
幾乎算是必備的工具,而官網上的教學(tutorial)是kernel source。
一些驚人的數字:
the kernel tarball alone is 30 MB, it expands into 150 MB of source code, and the Cscope database we'll generate will gobble up another 20-100+ MB。
大概是說, 壓縮檔約30 MB. 解壓後約150 MB, Cscope 資料庫索引約 20~100多MB. 這是2.4.18時的統計數字,而現在是2.6.6X,
至少是2倍以上。
Cscope 按照傳統的source 裝法,即可。
大略做法如下:
以筆者的例子:在**~/gsoap-2.8/gsoap/目錄,解析.c和.h**的程式。
~/gsoap-2.8/gsoap$ find -name '*.h' > cscope.files
~/gsoap-2.8/gsoap$ find -name '*.c' >> cscope.files
注意 **>,>>**有差哦。
然後
cscope -b -q -k
產生cscope 檢索資料庫。
KEY cscope 進入管理介面。
小弟初時看這個介面,因為個人資質問題,還真得無法意會,
一般人應該容易了解。但我真得隔了幾個星期才了解。
畫面下半部是 key關鍵字,上半部是檢索的結果。
按tab鍵可以到下半部 key 關鍵字。
上半部檢索的結果,按SPACE 鍵,可以看更多檢索結果。
按enter可以進入檔案裏,看更多。按**:q**回到上一個畫面。
而理解這個用法很重要。
筆者之前不理解這些簡單的道理,直接跳emacs 的cscope 外掛,結果搞得一頭霧水。欲速則不達吧。
小結:如果有實作筆者之前所提gdb的trace手法,要trace gsoap2應該不太難。
維持著一種興奮,藉由一些工具,可以滿足我們一直增強的好奇心。