軟件集成開發(fā)環(huán)境(代碼編輯、瀏覽、編譯、調(diào)試) Emacs http://www./software/emacs/ Source-Navigator 5.2b2 http:///projects/sourcenav anjuta (用yum安裝) 代碼索引工具 Cscope http://cscope./ KScope http://www. GLOBAL http://www./software/global/,F(xiàn)C5 yum安裝5.0,最新5.2 調(diào)試器(GNU gdb的GUI前端) DDD http://www./software/ddd/ Insight 6.4.0 http:///insight/ from a mirror site ‘/insight/releases/‘. KDbg http://www./ 評測器(內(nèi)存、性能、覆蓋等的profiler,類似IBM Purify) Valgrind http://www./,F(xiàn)C5自帶3.1.0-2 ggcov(GNU gcov的GUI) http://ggcov./ kprof(GNU gprof的GUI) http://kprof./ KCachegrind http://kcachegrind. BoundsChecking http://www.doc./~phjk/BoundsChecking.html 代碼靜態(tài)檢查工具 Splint http://www./(可用yum安裝) flawfinder http://www./flawfinder/ 代碼靜態(tài)測量工具 --暫缺,Windows上非開源的LineCount(http://liangs./)統(tǒng)計C/C++/Java代碼還湊合。 PyMetrics(http:///projects/pymetrics/)測量Python代碼復(fù)雜度。 http://www./resources/cmetrics/羅列了好些C static metric tools。 軟件構(gòu)建 SCons http://www./,也可以FC5 yum安裝。 GNU Make http://www./software/make/ crosstool http://www./crosstool/ distcc http://distcc./ 代碼版本控制 subversion http://subversion. (用yum安裝) RapidSVN http://www./(用yum安裝) StatSvn http://svn./ mpy-svn-stats http://mpy-svn-stats./ ViewVC http://viewvc./ 測試框架 CppUnit1.10.2 http:///projects/cppunit CUnit TODO 代碼差異工具(比較/制作和應(yīng)用補?。?br>GNU diffutils http://www./software/diffutils/ kdiff3 http://kdiff3./或者http://www.(可用yum安裝) 代碼在線文檔 doxygen http://www./~dimitri/doxygen/ 離線文檔 DocBook http://www. XMLMind http://www./ 代碼格式化 astyle(Artistic Style) http://astyle./ indent http://www./software/indent/ UML建模 ArgoUML http://argouml. 軟件工程事務(wù)(BUG等)跟蹤(IBM的ClearQuest有此功能) Trac http://trac./(基于Pythyon,用yum安裝)--感覺和BugFree一樣小巧 BugFree http://www./(基于PHP+MySQL)--中小規(guī)模軟件適用 BugZilla http://www./--配置復(fù)雜,使用麻煩 自動化持續(xù)構(gòu)建與測試系統(tǒng)(類似IBM BuildForge) BuildBot http://buildbot./(基于Python) Cabie http://cabie./(基于Perl和MySQL) 系統(tǒng)級別測試框架 DejaGNU www./software/dejagnu/(基于Expect,因而基于Tcl) QMTest http://www./qmtest/(基于Python) Linux實用工具 yum http://linux./projects/yum/,FC4自帶yum-2.3.2-7, FC5自帶2.6.1-0 wget http://www./software/wget/ cURL http://curl./ Wireshark(原名Ethereal) http://www.,http://www./。FC4/5自帶版本都較老 NcFTP http://www./ncftp/ tftp和tftp-server yum -y install tftp-server和tftp rp-pppoe http://www./penguin/open_source_rp-pppoe.php(FC4自帶版本較低) minicom FC4/5自帶 TightVNC http://www./ Wine+IEs4Linux http://www./ http://www./ies4linux/index-en.html StarDict fcitx http://www. KchmViewer kmhtConvert http://www. 永中Office http://www. webmin ,插件結(jié)構(gòu) Rsync http://rsync./ wxDFast http://dfast./ FlashGot http:/// 打字練習(xí)軟件 Tuxtype, Linux/Windows, http://tuxtype./ TypeFaster, Windows, http://typefaster./ Python庫/工具 pyserial http://pyserial./ pysvn http://pysvn./ twill http://twill./ pexpect http://pexpect./ wxPython http://www./ Snack http://www./tsgdocs/snack.html PIL http://www./products/pil/index.htm SIP http:///sip/index.php(可yum安裝,名稱Python-SIP) dogtail http://people./zcerza/dogtail/index.html PyChecker http://pychecker./ pylint http://www./857/(Logilab.org還提供了基于Python的人工智能、科學(xué)計算等包) Winpdb http://www./pythondebugger/ pydb http://bashdb./pydb/ SPE http://pythonide./ Python數(shù)據(jù)庫方面有個規(guī)格Python Database API 2.0,有遵循此規(guī)格的對各現(xiàn)有DBMS(sqlite,mysql等)的包裝,如pysqlite,MySQLdb python SIP/MGCP stacks Shtoom http:///trac/wiki/ShtoomProject Divmod Sine http:///trac/wiki/DivmodSine PJSIP http://www./(Pjsip now supports Python abstraction for PJSUA-API...) Sipx利用Python實現(xiàn)了SIP Forum Basic UA Test Suite(http://www./sftf-user-guide.html) 編譯器生成器 Bison http://www./software/bison/ C/C++庫/工具 STL-Boost中文站點 http://www./ KXML Editor http://www. jedit ,插件結(jié)構(gòu)。用處不大。 jdk1.5 java.sun.com SIP協(xié)議棧相關(guān) xvidcore1.1.0 www.xvid.org (XViD codec) live www.live555.com (RTSP_Server) SER www.iptel.org/ser sipX http://www./sipX sipsak http:/// SIPp http:///projects/sipp 跨 平臺的萬能編輯器Emacs配合CEDET/ECB/Cscope/GDB-UI這4個插件之后就成了一個完整的IDE。接觸Linux幾年來總是對它崇 敬畏懼,這兩天下決心學(xué)習(xí)了一下,感覺(1)“學(xué)習(xí)曲線”并不是以前想象的那么“陡”;(2)編輯功能確實像傳說中的那么強。對它稍作定制,就能在寫代碼 過程中自動應(yīng)用特定編碼風(fēng)格。http://www./resources/cstyle集中了許多C/C++風(fēng)格規(guī)定。 我認為Emacs適合于編輯自己的代碼(編輯功能很強,分析能力稍差),而Source-Navigator適合于閱讀別人的代碼(編輯能力稍差,分析能力很強)。 我 試用了eclipse用來開發(fā)C/C++的cdt插件,對中等規(guī)模的工程(100-200個源文件)建立索引太慢,常常"Out of memory";調(diào)試器啟動時有常遭遇"No symble ‘New‘ in current context"和"Connot access memory at address 0x0"之類的錯誤;代碼提示超級慢,10多秒無響應(yīng)。我是在CPU2.6G,RAM1G的FC5上運行Eclipse3.2.1。大概eclipse的 cdt僅適用于"Hello,world"之類的C/C++工程,但eclipse依然是Linux/Windows平臺上開發(fā)Java相關(guān)工程的首選。 附cscope 的使用方法:一般的首先生成cscope.files文件,這個文件里主要是要生成索引的文件列表,一般我都用的find命令生成(windows下可以 考慮使用cygwin),比如我要在當(dāng)前目錄下生成*.c*文件和*.h*文件的索引,那么我可以鍵入:"find . -name "*.c*" -or -name "*.h*" > cscope.files",具體的find命令的用法不再闡述了。 生成cscope.files文件之后,在終端鍵入"cscope -k -q"就可以生成源代碼的索引了。 Cscope(http://cscope./)解壓后contrib/xcscope/xcscope.el是為Emacs/XEmacs準備的。 CEDET(Collection of Emacs Development Environment Tools)網(wǎng)址http://cedet./。 ECB(Emacs Code Browser)網(wǎng)址http://ecb./。 GDB-UI(Emacs Mode for GDB)網(wǎng)址http://www./~nickrob/。 注:在安裝這些插件的過程中可能有些LISP文件和FC5自帶的Emacs的重復(fù),直接覆蓋不會有啥問題。 我把cedet和ecb編譯后拷貝到emacs資源所在目錄(FC5自帶Emacs是/usr/share/emacs),然后編輯$HOME/.emacs增加如下設(shè)置: ;; Load CEDET (load-file "/usr/share/emacs/cedet-1.0pre3/common/cedet.el") ;; Enabling various SEMANTIC minor modes. See semantic/INSTALL for more ideas. ;; Select one of the following (semantic-load-enable-code-helpers) ;; (semantic-load-enable-guady-code-helpers) ;; (semantic-load-enable-excessive-code-helpers) ;; Enable this if you develop in semantic, or develop grammars ;; (semantic-load-enable-semantic-debugging-helpers) ;; Load ECB (add-to-list ‘load-path "/usr/share/emacs/ecb-2.32") (require ‘ecb-autoloads) ;; Load Cscope (require ‘xcscope) ;; Some shortcuts (global-set-key [f5] ‘speedbar) (global-set-key [f7] ‘compile) FC4 上面安裝Anjuta2.0.2的過程真是太艱難了。(1)Anjuta2下載頁面下方給出了Anjuta2依賴的一些包的名稱和位置,但這個提示并不夠 顯眼(2)把Anjuta網(wǎng)站提供的gdl下載安裝后要配置pkg-config依賴的環(huán)境變量export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig(gdl-1.0.pc所在目錄)。而某些版本的gdl安裝之后并不 產(chǎn)生相應(yīng)的.pc文件?。?)FC4的glib版本太低,www.gtk.org給的鏈接用Firefox下載不了,用curl搞定了。(4) devhelp 0.11 --> Gtk+2.8 --> Pango with Cairo. configure Devhelp: checking for LIBDEVHELP... configure: error: Package requirements ( gthread-2.0 >= 2.6.0 gtk+-2.0 >= 2.6.0 libglade-2.0 >= 2.4.0 libwnck-1.0 >= 2.10.0 gconf-2.0 >= 2.6.0 ) were not met. 在FC5上config Source-Navigator 5.2b2一直到5.1.0都失?。?br>checking if 64bit support is requested... no checking if 64bit Sparc VIS support is requested... no checking system version (for dynamic loading)... ../../../tcl/unix/configure: line 6020: syntax error near unexpected token `)‘ ../../../tcl/unix/configure: line 6020: ` OSF*)‘ configure: error: ../../../tcl/unix/configure failed for unix Configure in /home/kenny/WorkEvnInit/sourcenav-5.1.0/snbuild/tcl failed, exiting. 后來在此項目的論壇上找到一個patch搞定了,但窗口最大化仍然有問題。 /usr/local/lib/pkgconfig/gdl-1.0.pc sourcenav在FC4上編譯遇到兩個錯誤(在Redhat9上順利編譯),都是說不支持"-fwritable-strings"選項,把對應(yīng)Makefile修改一下注釋掉這個選項即可. make[3]: Entering directory `/home/kenny/WorkEvnInit/sourcenav-5.2b2/tix/unix/tk8.3‘ gcc -pipe -c -fwritable-strings make[3]: Entering directory `/home/kenny/WorkEvnInit/sourcenav-5.2b2/libgui/src‘ gcc -DHAVE_CONFIG_H -I. -I. -I.. -fwritable-strings Linux 上除了SourceNavigator之外,另一個較好的C代碼編輯、瀏覽工具是KScope在http: //kscope./。最新版1.3.4把我的GCC(FC4自帶)版本列入黑名單。FC5上安裝1.4.0成功。 KScope是Cscope的前端,它的代碼導(dǎo)航、外觀、語言支持等各方面都較SourceNavigator遜一籌。 Windows上流行使用SourceInsight,不是免費的,且代碼導(dǎo)航功能不如SourceNavigator。 GNU GLOBAL is a source code tag system that works the same way across diverse environments. You can locate a specified object in the source files and move there easily. It is useful for hacking a large project containing many subdirectories, many #ifdef and many main() functions. It is similar to ctags or etags but is different from them at the point of independence of any editor. It runs on a UNIX(POSIX) compatible operating system like GNU and BSD. 有人用GLOBAL分析Linux內(nèi)核以自動生成HTML(例如http:///kernelsrc/),其文檔功能類似Doxygen,但似乎可以搭配Vim等編輯器來瀏覽代碼。我認為其代碼導(dǎo)航功能不如SourceNavigator。 Valgrind is an award-winning suite of tools for debugging and profiling Linux programs. ElectricFence(http:///FreeSoftware/ElectricFence/)聲稱自己不如 Checkergcc(http://www./software/checker/checker.html),而Checkergcc 又由于Valgrind的出現(xiàn)而退役。一句話:當(dāng)前大家公認Valgrind是最接近IBM商業(yè)產(chǎn)品Purify的開源的內(nèi)存/性能評測工具。 C/C ++代碼覆蓋、性能profiling工具一般基于GNU的gprof和gcov。(還有一類基于模擬器的profiling工具,如IBM Purify, Valgrind。KCahcegrind是Callgrind,OProfile等的GUI前端。)我知道的有g(shù)gcof,kprof,lcov。 lcov是Linux Testing Project工具之一,見http://ltp./tooltable.php上的工具列表。這兒還有壓力測試、WEB Server測試等許多工具。在http://www.分類歸納了多種軟件測試工具。 運行期間棧以及數(shù)據(jù) 段的溢出比堆溢出更難以發(fā)現(xiàn)、定位。絕大多數(shù)安全工具聚焦于防止棧溢出覆蓋函數(shù)返回地址從而阻止了可能的攻擊。Avaya 實驗室發(fā)布libsafe 2.0,增加了防止格式化字符串攻擊功能,目前可以保護系統(tǒng)免受兩種攻擊‘buffer overflow‘ and ‘format string‘. Libsafe在自己的strcpy/printf等函數(shù)即將導(dǎo)致棧幀處被覆蓋時終止程序,從而防止被入侵。其技術(shù)思路是:采用 Interposition技術(shù)用自己的strcpy/printf等函數(shù)替換C標準庫函數(shù)(ElectricFence也采用此技術(shù)替換堆內(nèi)存相關(guān)函 數(shù));在自己的函數(shù)中找到FP位置(函數(shù)_libsafe_stackVariableP()),同時判斷給定指針是棧上還是堆上;堆上指針直接調(diào)用C標 準庫函數(shù);棧上指針則在邊界檢查通過后調(diào)用C標準庫函數(shù),檢查未通過就exit。很多細節(jié)限制了其只能用于特定平臺Linux并且被保護軟件是用gcc編 譯。但我的目的是發(fā)現(xiàn)所有數(shù)組越界錯誤,要求更嚴格??赡苤挥蠫CC的補丁BoundsChecking(http: //www.doc./~phjk/BoundsChecking.html,在SF上有下載http: ///projects/boundschecking/)能做到這一點。當(dāng)前版本(for GCC4.0.2)僅支持C。我反匯編了它編譯出來的executable,發(fā)現(xiàn)棧上的字符數(shù)組分配由10多條指令加call __bounds_add_stack_object 來做,在最后多分配了1字節(jié)用于保護。堆上內(nèi)存分配的函數(shù)malloc也以__bounds_check_malloc代替。這類補丁最大的問題是產(chǎn)生的 executable運行速度奇慢,尤其是指針操作密集的測試成百上千倍地慢。 嘗試了兩個例子,效果很好。但webcam工程鏈接期大量錯誤, 如:src/protocols/call/sip/src/misc/sipcopy.c:774:對‘__bounds_check_free’未定 義的引用。是不是我的gcc編譯不對勁?還是ld不對勁? Splint is a tool for statically checking C programs for security vulnerabilities and coding mistakes. With minimal effort, Splint can be used as a better lint. If additional effort is invested adding annotations to programs, Splint can perform stronger checking than can be done by any standard lint. Flawfinder, a program that examines source code and reports possible security weaknesses (``flaws‘‘) sorted by risk level. It‘s very useful for quickly finding and removing at least some potential security problems before a program is widely released to the public. Flawfinder is written in Python. 檢查當(dāng)前目錄下(遞歸地)所有C/C++代碼,輸出檢查結(jié)果: flawfind --quiet --html . >flaws.html Error: File ended while in string. SCons 是一個與GNU make,qmake和Ant類似的軟件構(gòu)建管理工具。SCons is a next-generation software construction tool, or make tool--that is, a software utility for building software (or other files) and keeping built software up-to-date whenever the underlying input files change. FC5的rpm是0.96.1,我發(fā)現(xiàn)有時檢查不到.c的變化,并且為install目標指定別名后"scons install"就必然導(dǎo)致scons無響應(yīng)。安裝最新的0.96.92版即可解決這些問題,但install目標常常不能更新,可能是時間戳判斷的問 題? Java項目的構(gòu)建現(xiàn)在主要用Ant或Maven來做,這兩個工具目前也完全局限于Java項目。我現(xiàn)在不做Java項目,這些東西對我毫無用處,所以就沒有深究它們。 按 照《Building Embedded Linux Systems》極其詳盡的指導(dǎo),為嵌入式系統(tǒng)開發(fā)構(gòu)建GNU交叉工具鏈也很困難:gcc/glibc/binutils/kernel版本之間的配合, 特定版本的特征(如GCC3.2開始應(yīng)該這么做而不是那么做),還要考慮補丁...手工來做非常耗時且不大可能成功(碰到問題看文檔和使用Google也 不一定能搞定)。用crosstool(http://www./crosstool/),只需要你有個Linux PC能上網(wǎng),一個命令(如demo-arm.sh)下去就行。有時間可以深入研究一下這個工具。Building a gcc / glibc cross-toolchain for use in embedded systems development used to be a scary prospect, requiring iron will, days if not weeks of effort, lots of Unix and Gnu lore, and sometimes willingness to take dodgy shortcuts. Linux內(nèi)核的ARM補丁、ARM工具鏈都可在http://lists.arm./上找 到,這是Linux ARM架構(gòu)的最權(quán)威站點。 另外可能還需要特定芯片廠商提供的補丁,例如3615使用的TI DM320有內(nèi)核補丁設(shè)置了各設(shè)備在Flash的地址。 注意:(1)對一個項目而言,升級交叉編譯工具鏈后,制作的ramdisk內(nèi)也要以新的C 動態(tài)庫替換掉老的,否則可能導(dǎo)致兼容性問題如程序運行不起來。(2)要使得toolchain識別用戶添加的庫,把庫放在arm-linux/arm- linux/usr/lib。為了運行時能找到這個庫,制作的ramdisk也必須包含這個庫。(3)如果硬件平臺沒有浮點支持,所以在 crosstool的arm.dat文件最后添加如下兩行:GCC_EXTRA_CONFIG="--with-float=soft"和 GLIBC_EXTRA_CONFIG="--without-fp";或者不使用demo-arm.sh而是demo-arm- softfloat.sh(注意這兩個腳本可能在GCC版本方面并不同步)。在交叉工具鏈完成后可以用"arm-linux-gcc -v"查看配置情況。(4)默認的目標是arm-unknown-linux-gnu,可以在arm.dat中將TARGET設(shè)置為"arm- linux"使得編譯出來的GCC名字為arm-linux-gcc。 [使用distcc 縮短編譯時間]distcc is a program to distribute builds of C, C++, Objective C or Objective C++ code across several machines on a network. distcc should always generate the same results as a local build, is simple to install and use, and is usually much faster than a local compile. The main feature required by distcc is that the compiler must be able to run the preprocessor separately, and then compile the preprocessor output from a file. This was a basic part of the original design of C, but some compilers seem to have lost the ability to do this. Secondarily, distcc is currently hardcoded to suit gcc‘s behaviour and command-line syntax, so only compilers that act like gcc will work. This could in principle be changed. Kompare是KDE自帶的一個文件/目錄比較工具,比較大目錄太慢了,也沒有合并功能。我上網(wǎng)了解到 在這方面的好工具有Kdiff、Meld和xxdiff。Meld的沒有做漢化,許多菜單、按鈕的文字顯示不出來或者是亂碼。xxdiff還沒有嘗試過。 Kdiff3還有windows版本。 Meld is a visual diff and merge tool. Kdiff3 is very good for large merges, automatic merge facility. Meld is written with the excellent pygtk toolkit. pyGtk 2.8.6要求GLIB(就是gtk+) version >= 2.8.0, FC4版本是 gtk+-1.2.10-39。 kdiff3-0.9.90-1.fc.i686.rpm 要求libstdc++.so.6(GLIBCXX_3.4.6),對應(yīng)的FC4平臺RPM是libstdc++-4.0.2-8.i386.rpm,但 FC4光盤上只有4.0.0,網(wǎng)絡(luò)速度太慢,下載不了!:( kdiff3-0.9.89把我的編譯器列入了黑名單。最后用0.9.88終于順利安裝了。運行起來感覺不錯! Subversion(簡 稱svn)是經(jīng)典的開源的版本控制系統(tǒng)cvs的替代物。有個工具cvs2svn可以轉(zhuǎn)換CVS庫到SVN庫。Windows上svn的GUI最好用且功能 強的是TortoiseSVN(http://tortoisesvn./)。Linux上svn的native GUI的易用性和功能都要差一些,就我所知最好的是KdeSVN(http://www.,可yum安裝)。 RapidSVN(http://rapidsvn.)是基于wxWidgets的SVN客戶端GUI。我在Linux下編譯0.9.3和0.9.4失敗。Windows版看起來功能還行。在FC5上可以yum安裝! (KdeSVN 也有類似錯誤)RapidSVN顯示工作拷貝的目錄出錯:"Error: Error while updating filelist(Valid UTF-8 data (hex: 68) followed by invalid UTF-8 sequence (hex: ca 3b 09))" RapidSVN郵件列表對此有回答: On the subversion mailinglists were quite a few threads on this topic. (You might want to check up on these for example on: http://www./~dast/svnusers ) As far as i remember it all boiled down to setting the ‘LANG‘ and ‘LC_CTYPE‘ environment variables to sensible values. You can use ‘locale‘ to find out more about your settings. 此外還有基于wxPython的WorkBench(與pysvn同一站點發(fā)布),運行起來經(jīng)常出錯。 SmartSVN 是一個純粹Java的SVN客戶端GUI。并不是開源的,有免費試用版和商業(yè)版本。2.0.x不支持subversion1.4工作拷貝的格式,我下載的 2.1RC4支持。每次打開工作拷貝或者選中其中某個目錄時就會掃描,對稍大型工程非常耗時且出現(xiàn)“run out of memory”以至于只掃描了頂層目錄。實際上,用戶關(guān)心的大多數(shù)時候只是工作拷貝中某一很小部分的狀態(tài)??梢栽陧椖康?Refresh/Scam"屬性 設(shè)置為"Root directory only"避免這個問題。SmartSVN的日志緩存功能不錯,節(jié)省時間:)另外要注意:SmartSVN依賴于SUN JDK. StatSvn 基于著名的StatCvs的SVN版本,開源,以Java編寫。它能夠?qū)φ麄€SVN庫做統(tǒng)計,包括:每作者提交數(shù)、擁有代碼行數(shù)等等。試用了一下,感覺很 不錯!(StatSvn手冊指出:由于SVN日志文件的特性,第一次統(tǒng)計較慢。我針對LR3615_WEBCAM工程[10萬多行]第一次統(tǒng)計,耗時70 多分鐘。)另外要注意:FC5默認JRE(即gij)沒有提供Graphics2D等庫,這將導(dǎo)致JVM拋出異常。安裝SUN提供的JDK1.5.0即可 解決此問題。 [kenny@kenny statsvn-0.2.0]$ java -jar statsvn.jar /home/kenny/sw_3615/svn.log /home/kenny/sw_3615 mpy-svn-stats: Very simple and easy to use Subversion statistics generator written in Python. (http://mpy-svn-stats./)是另一個Subversion庫分析工具。SipX項目的統(tǒng)計信息(http: //www.voiceworks.pl/sipxpbx-stats/)就是由此工具生成的。 ViewVC是一個基于web的CVS、 SVN代碼倉庫瀏覽工具。它最早是從cvsweb發(fā)展而來的,cvsweb是用Perl編寫的, viewvc原作者Greg Stein發(fā)現(xiàn)很難在此基礎(chǔ)上擴展新的功能,于是用Python重新實現(xiàn),并命名為viewcvs。后來又加入了對SVN代碼倉庫的支持,為反映這一變化 viewcvs重命名為viewvc。viewvc可以以獨立的程序運行(standalone.py),也可以以cgi方式運行于支持CGI的web服 務(wù)器,還可以以ASP模式運行于IIS,以mod_python模式運行于Apache。viewvc通過本地文件系統(tǒng)訪問代碼倉庫,所以它必須安裝在運 行CVS或SVN代碼倉庫的同一服務(wù)器上。運行viewvc需要很多第三方軟件,具體需要的依賴軟件取決于啟用功能和運行平臺兩大因素。viewvc除了 支持CVS代碼倉庫瀏覽功能,還支持 1)SVN代碼倉庫瀏覽功能 2)代碼語法加亮、顏色標注 3)CVS代碼修訂歷史圖形顯示 4)CVS代碼代碼提交動作的記錄、查詢 此外還有FishEye(http:///fisheye/)等商業(yè)的代碼庫分析工具。 當(dāng) 前Linux平臺上的GDB前端有DDD,Insight,KDbg等。DDD是一個非常流行的調(diào)試器,Fedora Core 4附帶了它。Insight是Redhat的GNUPro開發(fā)套件之一,是gdb的Tk包裝(版本號與gdb版本號完全一致),可與 SourceNavigator集成。KDbg是gdb的KDE風(fēng)格的GUI。DDD雖然GUI稍稍難看(Tk和KDE風(fēng)格我也不太喜歡,基于KDE的應(yīng) 用在關(guān)閉時調(diào)用KNotify太慢了),但功能最強。三者中只有DDD支持的后臺調(diào)試器不局限于gdb;也只有DDD提供了gdb的CLI,這使得其非常 靈活(例如增加一個函數(shù)斷點,命令break func就OK,而不像用菜單指定文件名和行號那樣煩瑣)。Insight調(diào)試多線程程序時暫停常常使得Insight失去響應(yīng)。KDbg是gdb的前 端,可以瀏覽過去打開的源文件,這是個優(yōu)勢。就像其簡介中所說的,你不能期望它能做的比gdb更多,所以它在許多方面都比DDD差:(1)查看變量的值, 如果變量形式較復(fù)雜,則鼠標放在其上不能顯示其值或者顯示其值為0,只得麻煩地寫一個監(jiān)視表達式。(2)不能像DDD的數(shù)據(jù)窗口那樣可視化地顯示一個結(jié)構(gòu) 體、數(shù)組,必須為特定成員寫一個完整的監(jiān)視表達式。(3)調(diào)試過程中不能修改變量值、挪動執(zhí)行點(這些功能有時很有用)。(4)主窗口以及打開的各個窗口 (本地變量、內(nèi)存等)在FC5的任務(wù)面板上縮成一個標簽,切換起來很是費事。 TotalView(http://www./)號稱自己是多核時代地球上最好的多線程/進程調(diào)試器。有試用版,不過我想不出來我以后什么時候會覺得gdb不夠強。 程 序代碼美化工具astyle可美化C/C++/Java。astyle有幾個成套的的風(fēng)格定義:ansi java linux kr...不必記住復(fù)雜的縮進具體選項。indent(gcc附帶的一個標準工具)只能美化C代碼。專門針對Java代碼的有CheckStyle(免 費,http://checkstyle./)和Jacobe(商業(yè),http: //www.tiobe.com/jacobe.htm)等。 astyle 1.19有個BUG:如果#ifdef 下一行以{開頭,則{被調(diào)整到#ifdef行最后,這必然導(dǎo)致編譯失敗。 indent 也不完美:(1)處理dspcode.h類似文件時間極長,把數(shù)組每一項單獨作為一行導(dǎo)致頭文件行數(shù)極多。Frank說處理dspcode.h類似文件之 后導(dǎo)致編譯失敗。(2)在#else之后自動加了/*,隨后多了一行*/。(3)有時候格式化比較亂甚至導(dǎo)致編譯失敗。 Windows平臺上有試用版的SourceFormatX。 結(jié)論:不要企圖把整個工程的源代碼一次性格式化,哪個C文件格式實在太亂了再說。 #/bin/sh # -kr Kernighan & Ritchie style # -nbad -bap -bbo -nbc -br -brs -c33 -cd33 -ncdb -ce -ci4 -cli0 # -cp33 -cs -d0 -di1 -nfc1 -nfca -hnl -i4 -ip0 -l75 -lp -npcs # -nprs -npsl -saf -sai -saw -nsc -nsob -nss # -nbad The ‘-bad‘ option causes `indent‘ to force a blank line after every # block of declarations. The `-nbad‘ option causes `indent‘ not to force # such blank lines. # -cliN Case label indent of N spaces. # -bliN Indent braces N spaces. # -cbiN Indent braces after a case label N spaces. # -nut Use spaces instead of tabs. indent -kr -bli0 -cbi4 -nut $1 Bison 是替代yacc的語法解析器. 有時間研究一下!還有Boost Spirit框架! pyserial是一個Python串口庫,包裝了Python標準庫termios。雖然用C操作串口并不難,但要考慮一些細節(jié),遠不如用pyserial簡單和方便。在編寫測試代碼、原型代碼涉及串口通信時可以考慮它。 wxPython 是wxWidgets的Python綁定,類似的Python GUI庫還有Tkinter(Python事實上標準的GUI toolkit,基于Tk)、PyGtk(基于GTK+)、PyQt。經(jīng)過一番權(quán)衡(網(wǎng)上有個《知名GUI庫簡評》),我決定采用wxPython。我認 為它的跨平臺性非常好,且使用非常簡單(安裝包就帶有大量的范例,這是最好的參考資料)。 The pysvn project‘s goal is to enable Tools to be written in Python that use Subversion. Snack 是一個Python庫,用于創(chuàng)建簡單的基于文本的用戶界面。 紅帽子的Linux在安裝、配置期間出現(xiàn)的那些非常像GUI但又不具有普通窗口控制功能的界面,就是基于文本的用戶界面,它們使用了Snack。例如:配 置系統(tǒng)時區(qū)的命令/usr/sbin/timeconfig包裝了Python腳本/usr/share/system-config- date/timeconfig.py,時區(qū)列表/usr/share/zoneinfo/zone.tab。 Snack is a python library based on newt that can be used to create a simple text based User interface. This is the package that was used by Red Hat to create their installation along with a number of configuration tools. It is an ideal platform upon which to create installation and configuration scripts, particularly if you don‘t want to rely on X, or you want to avoid complexity. 還有Python包也叫做Snack,在http: //www.speech.kth.se/snack/。The Snack Sound Toolkit is designed to be used with a scripting language such as Tcl/Tk or Python. Using Snack you can create powerful multi-platform audio applications with just a few lines of code. 用于創(chuàng)建基于文本的用戶界面的Python包并不只有Snack。“某一類 Python 應(yīng)用程序最好使用交互式用戶界面,這樣可以消除圖形環(huán)境的系統(tǒng)開銷或復(fù)雜性。交互式文本模式程序(在 Linux/UNIX 中),例如封裝在 Python 的標準 curses 模塊中的ncurses 庫,正是您所需要的。 Tinter 是構(gòu)建在 curses 上的高級窗口小部件的一個模塊。Tinter 支持按鈕、文本框、對話框和進展欄。一種沒有充分引起公眾注意的(并且難以捕捉到的) ncurses 和其它各種封裝器的備用產(chǎn)品結(jié)合了slang 和newt 以及 python 封裝器模塊snack。slang 的功能與 curses 一樣,而且newt 的功能與Tinter 一樣。 ” pexpect(http://pexpect./) is a pure Python Expect-like module. Pexpect makes Python a better tool for controlling other applications.Python-dev郵件列表http://mail./pipermail/python- dev/2002-November/thread.html對此有討論。 twill is a simple scripting language intended for programmatic or automated browsing of Web sites. twill strives to be a complete implementation of a Web browser, omitting only JavaScript support. It includes support for cookies, basic authentication, and most (all?) HTTP trickery, including HTTP-EQUIV redirects. Please let me know if you find a situation where it doesn‘t work! It‘s written in Python. It‘s Python API is for Python programmers interested in using twill from Python. twill還支持斷言響應(yīng)中含特定錯誤碼、特定URL、特定文本等。twill還可以用于壓力測試,twill-fork基于Python的os.fork()。其文檔還列舉了許多其他WEB測試相關(guān)的工具(要是twill實在不合適,可以看看它們)。 twill 支持cookie、基本認證等許多東西,唯一不爽的是不支持JavaScript(基于Java的HttpUnit支持一些JavaScript)。 IPCam項目的網(wǎng)頁一般在HTML最后用一段簡單的JavaScript腳本設(shè)置表單各域的值。好在它們的Javascript腳本和Cookie都非 常簡單,可以用Python的正則表達式來提取它們,然后修改twill解析出來的表單相應(yīng)域的值。IPCam項目的網(wǎng)頁用這樣一段JavaScript 腳本來設(shè)置Cookie和跳轉(zhuǎn): <script language=javascript>document.cookie="admin_999999;path=/";parent.location.href="../web/system_1.asp";</script> twill忽略這一段,所以后繼網(wǎng)頁都訪問不了了!可以先用正則表達式解析出Cookie值并存入一個文件,然后用load_cookies命令加載這個Cookie... 服務(wù)器返回的相應(yīng)在HTTP頭中這樣設(shè)置Cookie: Set-Cookie: S=gmail=ZlqdB1eh50LLOD2oHQy-AA:gmail_yj=wYXY0sDUzqa7YGNlHwld8w:gmproxy=r8SkXMoAtqc:gmproxy_yj=0nwuEpFAlkk; Domain=.google.com; Path=/\r\n twill這樣表示Cookie: <Cookie SID=DQAAAGkAAADjG8D7QJIQvqfILHXEzSkXTkoj8CjBwoANMpmfSGsZi2hdp1WmaECgfVyfgGihzZD_aOj30vO_UFH4U6aUrQ3OOF18ePC9owraK0-SVfGxjBwrARvxeWKUDP5QXFG40ehFrk8ynkZ1W7NHI4xz7CUt for .google.com/> twill存儲所有cookies為一個文件,以這樣的格式: #LWP-Cookies-2.0 Set-Cookie3: SID="DQAAAGkAAADjG8D7QJIQvqfILHXEzSkXTkoj8CjBwoANMpmfSGsZi2hdp1WmaECgfVyfgGihzZD_aOj30vO_UFH4U6aUrQ3OOF18ePC9owraK0-SVfGxjBwrARvxeWKUDP5QXFG40ehFrk8ynkZ1W7NHI4xz7CUt"; path="/"; domain=".google.com"; path_spec; domain_dot; discard; version=0 The Python Imaging Library (PIL) adds image processing capabilities to your Python interpreter. This library supports many file formats, and provides powerful image processing and graphics capabilities. SVN統(tǒng)計工具mpy-svn-stats的圖片操作基于它創(chuàng)建RGB模式的PNG圖片。Python圖像處理方面的極好文章:Python and Image processing位于http:///pipermail/python-chinese/2005- October/016910.html。 Trac: Simple, web based, intuitive bug and change tracking. Has a good interface with Subversion. Click around and view a current project using TRAC<http://trac./>. 說 到版本控制,也順便提一下目前越來越熱的Trac,她是一個非常好的融合了wiki、故障跟蹤、版本管理的軟件項目管理平臺。使用Python編寫,版本 管理采用subversion, 不過采用的是subversion自帶的Swig-python接口。其他的數(shù)據(jù)存儲在sqlite中,系統(tǒng)采用clearsliver頁面模板引擎編 寫。 wget的"-r"選項遞歸方式下載整個web站點。 下載/離線瀏覽整個網(wǎng)站的工具非常多...Linux下有個商業(yè)版本的 HTTrack V3.40 For Linux(http://www./,一直連接不上). 一個容易使用的站點鏡像軟件,能將網(wǎng)站傳送到本地目錄,并且會將所有相關(guān)鏈接重新組織,以便順利的離線瀏覽。 cURL is a command line tool for transferring files with URL syntax, supporting FTP, FTPS, TFTP, HTTP, HTTPS, TELNET, DICT, FILE and LDAP. curl supports SSL certificates, HTTP POST, HTTP PUT, FTP uploading, HTTP form based upload, proxies, cookies, user+password authentication (Basic, Digest, NTLM, Negotiate, kerberos...), file transfer resume, proxy tunneling and a busload of other useful tricks. AIX操作系統(tǒng)提供了 ftp客戶端工具/usr/bin/ftp,但是這個工具使用起來不是非常方便。本文介紹一種在世界上廣泛使用的ftp命令行客戶端軟件ncftp,它提 供更方便、快捷、強大的功能,使我們在使用ftp服務(wù)的時候更得心應(yīng)手。ncftp廣泛應(yīng)用于各個版本的Linux上。ncftp與傳統(tǒng)的ftp相比,主 要有以下改進或變化: 1、子目錄下載,采用遞歸的方法,下載整個目錄及其子目錄。 2、支持斷點續(xù)傳。一次傳輸沒有完成,下次可以接著傳輸未完成的文件。 3、匿名ftp自動登錄。目前大部分ftp站點都可以匿名登錄,ncftp可以自動登錄(默認方式)。 ... wxDFast也是一個圖形化的下載工具,支持多線程、斷點續(xù)傳等功能,基于wxWidgets,最大特點是下載速度快。 FlashGot - Best Firefox Download Manager Integration.一個下載管理器,將瀏覽器(Mozilla/Firefox/Flock/Thunderbird)與一些下載工具(GUI的 wxDFast/D4X/KGet等,CLI的wget/cURL/WellGet[適合于邊下載邊播放電影]等)集成起來,使得下載操作就像 Windows下用netants/FlashGet那樣簡單。 我在Linux下經(jīng)常下載一些新鮮軟件嘗試,但是瀏覽器 Firefox常常打不開鏈接或者下載失敗,尤其是隔了防火墻訪問SourceForge之類的較慢站點;而這些鏈接在Windows下是可以下載的,雖 然速度慢一點。用yum升級系統(tǒng),常出現(xiàn)“http: //fedora.cs.wisc.edu/pub/mirrors/linux/download.fedora./pub/fedora/linux/core/updates/5/i386/vim-minimal-7.0.042-0.fc5.i386.rpm: [Errno -1] Header is not complete.”類似的錯誤。而gFTP這樣的FTP客戶端GUI常常這兒或那兒工作得不對勁。用NcFTP或者cURL一般可以解決這些問題。 (注:FTP的URL舉例:ftp://book:book@125.64.92.50/book_h/20060828/c69318f9-1bcb- 4a11-8808-1daca711db4d.chm) CHM是Windows平臺幫助文件標準格式,有許多電子書籍(甚至許多關(guān)于 Unix/Linux的)以此格式發(fā)布.Linux平臺上有一些閱讀/編輯此格式的工具.KchmViewer基于Qt,獨立于KDE/Gnome.我在 make時參照README加上了選項"--with-kde"才編譯成功,否則因為ld找不到Xext庫而失敗.可以把.chm格式關(guān)聯(lián)到 KchmViewer,在FedoraCore4下面這么做:右鍵單擊一個文件,然后選屬性,再點打開方式,選擇添加,然后在自定義命令里面自己寫上 kchmviewer即可. mht是IE另存的一種Web Archive格式,它將html/圖片等存儲在單一文件內(nèi). Linux平臺的kmhtConvert可以將其轉(zhuǎn)化為Konqueror(KDE的一個瀏覽器)支持的war格式(再把此格式關(guān)聯(lián)到 Konqueror). Konqueror中這樣創(chuàng)建war:工具->存檔網(wǎng)頁.kmhtConvert實現(xiàn)了以下格式的相互轉(zhuǎn)化:(*.mhtml, *.mht, *.eml, *.war). 大家都知道網(wǎng)頁格式一般為.htm,.html,.shtml三種格式,其中三種格式的網(wǎng)頁代碼都是通用的.SHTML和HTML的區(qū)別在于shtml是 一種采用了Server Side Include(SSI,服務(wù)器端包含指令)技術(shù)的文件。大多數(shù)(尤其是基于Unix平臺)的WEB服務(wù)器如Netscape Enterprise Server等均支持SSI命令。 和Windows相比,Linux上的詞典、翻譯工具比較少.星際譯王StarDict是利用GTK (GIMP TOOLKIT)開發(fā)的國際化的、跨平臺的詞典工具,它也可以安裝在Windows上,不過,安裝前首先要安裝GTK+環(huán)境。星際譯王的詞典要在安裝完程 序之后才能下載和設(shè)置.官方網(wǎng)站上的這個頁面:http: //stardict./Dictionaries_zh_CN.php,就有很多中英詞典的下載地址。To install these tarball dictionaries, do this:(1)tar -xjvf a.tar.bz2 (2)mv a /usr/share/stardict/dic.我下載安裝了朗道英漢字典5.0漢英詞典5.0。 你可以在 http://www./blog/#19 找到許多好用的XML編輯器。 KXMLEditor是基于KDE的XML顯示和編輯工具。啟動命令kxmleditor。 一 些公司也發(fā)布比商業(yè)版功能少但免費的版本:Eclipse的XMLBuddy插件標準版(www.xmlbuddy.com/,提供以下編輯功能:格式 化、用戶可配置的語法著色、DTD 驅(qū)動的代碼輔助、驗證以及同步的提綱視圖格式化功能),Windows平臺的XMLSpy家庭版(Home Edition,www.altova.com/),基于Java的XMLmind標準版(Standard Edition,www./,網(wǎng)上有中文版)。只發(fā)布商業(yè)版本的有oxygen(www.oxygenxml.com/) Rather than writing DocBook XML documents by hand using a text editor like notepad or vi, it is often conveinent to use an XML editor with a point-and-click graphical user interface (GUI). This tutorial covers the use of one such editor, XMLMind‘s XML Editor (XXE), to create DocBook XML documents. ArgoUML是100%基于J2SE開發(fā)的UML建模工具,支持UML1.4所有7類 圖,支持導(dǎo)入導(dǎo)出XMI,支持導(dǎo)出成PNG等多種圖形文件,支持代碼生成,不支持逆向工程,不支持C++。 FedoraCore4附帶的Umbrello是基于KDE的,在保存和加載XMI文件時很慢。編譯1.5.1時居然提示我編譯器版本被它列入了黑名單以 防止KDE崩潰,要求我更換其他版本編譯器。gcc (GCC) 4.0.0 20050519 (Red Hat 4.0.0-8)。我通過SVN下載了gcc,但擔(dān)心把系統(tǒng)搞壞了,不敢弄。 Win32平臺上的StarUML是一個開源的UML/MDA平臺,據(jù)說很不錯(我用了一下,確實不錯),下載地址:http://www./。 注意:各工具導(dǎo)出的XMI并不完全兼容,可能導(dǎo)致信息丟失甚至解析錯誤! webmin是Unix平臺上的服務(wù)器管理工具,能管理HTTP,FTP,SAMBA等.有許多插件可用.我選擇了"Start at boot",端口號默認10000.但沒有識別我后來安裝的Apahce,不知道怎么回事? jEdit 是基于Java的文本編輯器(自然地在windows,Linux上都可用),支持多種語言的語法著色,就象Windows上的UEStudio和 EditPlus一樣可以作為一個簡單的IDE.有許多插件可用.(FedoraCore4附帶JRE版本1.4.2,jEdit1.4.3pre3運行 不起來:Out of memory...。從SUN下載JDK1.5或者JRE1.5安裝即可) 這兒是Linux內(nèi)核2.6完整的UML文檔,但似乎不實用:http://www./jeneral/open-source-docs.html 永 中Office2004與MS Office文檔格式兼容性很好。有Linux平臺的試用版免費下載。在FederaCore4上安裝失敗,提示找不到 "libgnomeui.so.32"。把FederaCore4光盤上的ORBit-0.5.17-15.i386.rpm和gnome-libs- 1.4.1.2.90-46.i.386.rpm安裝上去就OK了。永中Office要安裝自帶的JVM,不管PC上是否安裝過。 FC5上安裝永中20004Trial過程崩潰;安裝2007Beta版重是在停留在解壓縮階段,按照永中論壇的一個帖子搞定了。 除了 FC系統(tǒng)自帶的up2date以外,我們還有更為強大的在線升級工具 yum 和 apt-get 可用。apt與yum相比,apt歷史更久,且不限于RPM格式的包,可用于多個Linux Release。yum 工具是Fedora 推薦使用的在線升級更新軟件包的工具,在安裝系統(tǒng)時,一般都是默認安裝。主要資源有 freshrpms.net和 rpm.livna.org。例如安裝anjuta: yum install anjuta。幫助:yum --help。 WireShark (原名Ethereal)是個功能強大的協(xié)議分析器。最重要的特性:(1)Capture Filter,(2)Display Filter,(3)Capturer停止條件(時間、包數(shù)、大小),Capture File存儲形式(多文件循環(huán)利用)(這個功能比Windows上的安捷倫Agilent還要強!我用了0.99.3及之前版本,此功能經(jīng)常導(dǎo)致軟件崩 潰)(4)允許指定接口抓包,常用的接口包括以太接口、Lookback接口、所有接口(5)支持tcpdump等許多其他協(xié)議分析器的記錄格式,(6) 支持多達759種協(xié)議,(7)捕獲報文能夠全部或部分存儲、導(dǎo)出、打印,(8)可運行于所有流行的OS上。Ethereal從版本0.99.1開始更名為 WireShark??梢酝瑫r運行多個Wireshark在同一接口上抓包--這樣便于從多個角度觀察網(wǎng)絡(luò)流量,例如區(qū)分多個IPCam的流量以便于判斷 哪個斷線了。鑒于WireShark的多文件循環(huán)存儲功能有BUG,可以用tcpdump或者命令行方式的Wireshark,直接把報文打印到 stdout,不需要考慮尺寸限制--缺點是瀏覽報文不如GUI方式直觀。 Ethereal® is used by network professionals around the world for troubleshooting, analysis, software and protocol development, and education. It has all of the standard features you would expect in a protocol analyzer, and several features not seen in any other product. Its open source license allows talented experts in the networking community to add enhancements. It runs on all popular computing platforms, including Unix, Linux, and Windows. 企鵝輸入法fcitx,比FedoraCore4自帶的智能拼音好用多了. Linux 是很不錯的OS,但現(xiàn)實環(huán)境有許多平時工作要用的軟件都必須在Windows環(huán)境下運行,所以還是沒有辦法使用Linux。 其實安裝了WINE即可使用exe檔,也可以使用ie、word、execl、powerpoint、photoshop、adobe acrobat...... IEs4Linux is the simpler way to have Microsoft Internet Explorer running on Linux. What is the target public? * WebDesigners that want to move to Linux but still need to test their sites on IE. * People who have to open IE-only sites 我為了在WINE上安裝IE6,用winetools幾次都出錯。網(wǎng)上有人說用EasyWine也總是出錯。最后用IEs4Linux輕松搞定! 安裝BII的NetCam客戶端后提示缺少MSVCP60.dll,拷貝過來后運行又發(fā)生"run time error"??磥碛脀ine運行任意一個Windows上的exe不是那么容易! 偶然發(fā)現(xiàn)了一個內(nèi)部網(wǎng)搜索引擎ht://Dig在http://www./。http://www./就是用它作為站內(nèi)搜索引擎。這個軟件在做web站點時可能有用。 [root@KennyLinux kenny]# find / -name "httpd" /usr/sbin/httpd /usr/share/doc/qt-devel-3.3.4/examples/network/httpd /usr/lib/httpd find: WARNING: Hard link count is wrong for /proc: this may be a bug in your filesystem driver. Automatically turning on find‘s -noleaf option. Earlier results may have failed to include directories that should have been searched. /etc/httpd /etc/rc.d/init.d/httpd /etc/logrotate.d/httpd /etc/sysconfig/httpd /var/log/httpd [root@KennyLinux kenny]# find / -name *apx* find: WARNING: Hard link count is wrong for /proc: this may be a bug in your filesystem driver. Automatically turning on find‘s -noleaf option. Earlier results may have failed to include directories that should have been searched. /var/www/manual/programs/apxs.html.en /var/www/manual/programs/apxs.html.ko.euc-kr /var/www/manual/programs/apxs.html 凡 是FedoraCore4光盤上有的,可以從FC4-i386-DVD.iso文件中提取(mount選項-t iso9660 -o loop),也可以從Redhat提供的鏡像站點下載rpm來安裝:http: //fedora./download/mirrors.html。通過RPM名字或者包含的某共享庫名字查找RPM在網(wǎng)站 rpmfind.net, rpm.pbone.net和www.rpmseek.com。 今天偶然發(fā)現(xiàn)有Fortran和Pascal 代碼到C代碼轉(zhuǎn)化工具f2c和p2c。記得以前聽說過Java代碼到C#代碼的轉(zhuǎn)化工具。“如果你有一些用 FORTRAN 或 Pascal 寫的代碼要用 C 重寫的話, f2c 和 p2c 對你非常有用. 這兩個程序產(chǎn)生的 C 代碼一般不用修改就直接能被 GCC 編譯.如果要轉(zhuǎn)換的 FORTRAN 或 Pascal 程序比較小的話可以直接使用 f2c 或 p2c 不用加任何選項. 如果要轉(zhuǎn)換的程序比較龐大, 包含很多文件的話你可能要用到一些命令行選項. ” Zope,Z Object Publishing Environment,它即是http服務(wù)器,又是數(shù)據(jù)庫,又包含腳本編程語言。Zope是一種支持多種平臺開源的Web應(yīng)用服務(wù)器軟件,它提供了完善 的功能和強大的動力,適用于構(gòu)建各種類型的Web應(yīng)用,從小型網(wǎng)站到企業(yè)級分布式網(wǎng)絡(luò)應(yīng)用都有Zope的用武之地。Zope在許多方面都超過了ASP、 PHP、JSP等傳統(tǒng)方法,是一套優(yōu)秀而完整的解決方案。本專題詳述Zope的應(yīng)用開發(fā),帶您領(lǐng)略Zope的強大功能。 Zope是一個應(yīng)用服務(wù) 器, 他是一個讓您的應(yīng)用被英特網(wǎng)訪問(如用您的web瀏覽器)的平臺. 這樣Zope可在內(nèi)部網(wǎng)或者英特網(wǎng)上提供內(nèi)容.非常適合內(nèi)容管理和群件系統(tǒng), Zope被認為這個市場最有效的工具之一. "Zope在創(chuàng)建和管理動態(tài)基于web的商務(wù)應(yīng)用(如內(nèi)部網(wǎng)和門戶網(wǎng))等方面,使團隊協(xié)作成為可能." (Zope.org) Virtual Network Computing (VNC) allows one to view and operate the console of another computer remotely accross the network. RealVNC(www.realvnc.com)和TightVNC(www.)在Linux和Windows上都有 Client/Server合一的版本。我在Windows上安裝TightVNC作為VNC Server,配置非常簡單:服務(wù)器配置只需要設(shè)置密碼即可。Linux上運行VNC客戶端在訪問時指定服務(wù)器IP并提供密碼即可。 Fedora Core 5集成了2個VNC客戶端:krdc和“終端服務(wù)客戶端”,都在Internet分類下面。 在windows中也由一套著名的網(wǎng)絡(luò)遙控軟件――Symantec公司推出的pcAnywhere。 備 份是系統(tǒng)管理中最艱巨、最容易被忽略的工作之一,同時也是最重要的工作之一。備份是防御硬件故障、非法入侵和系統(tǒng)安全的最大威脅——終端用戶的最后一道防 線。有許多備份系統(tǒng)價值數(shù)千美元,它們使用到處都是 Bug 的專有版權(quán)軟件將數(shù)據(jù)存入昂貴的磁帶機中,而實際上有更好的方法:Rsync 和廉價的磁盤陣列。 RFC資源: 詳細列表(近7M大) http://ietfreport./rfclist.htm 簡明列表 http://ietfreport./rfcindex.htm PDF版 http://www./rfc/pdf/rfc000.pdf ftp://ftp./rfc/pdf/rfc000.pdf TXT版 ftp://ftp./rfc/rfc000.pdf RFC文件閱讀器2.0(菊風(fēng)特別版) http://www./cn/support/downloads&updates.htm RFC Viewer破解版 忘記哪兒找到的了。和上面的RFC文件閱讀器2.0差不多,沒必要用這個盜版。 [kenny@kenny gcc_objdir]$ pwd /home/kenny/WorkEnvInit/gcc/gcc_objdir [kenny@kenny gcc_objdir]$ ../gcc-4.0.2/configure --program-suffix=bounds --enable-version-specific-runtime-libs --enable-languages=c,c++ --disable-nls [kenny@kenny gcc_objdir]$ make bootstrap ... gcc -g -DENABLE_CHECKING -DENABLE_ASSERT_CHECKING -DIN_GCC -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -pedantic -Wno-long-long -Wno-variadic-macros -Wold-style-definition -DHAVE_CONFIG_H -o g++ \ gcc.o g++spec.o intl.o prefix.o version.o ../libcpp/libcpp.a ../libiberty/libiberty.a echo | ./xgcc -B./ -B/usr/local/i686-pc-linux-gnu/bin/ -isystem /usr/local/i686-pc-linux-gnu/include -isystem /usr/local/i686-pc-linux-gnu/sys-include -L/home/kenny/WorkEnvInit/gcc/gcc_objdir/gcc/../ld -E -dM - | \ sed -n ‘s/^#define \([^_][a-zA-Z0-9_]*\).*/\1/p ; \ s/^#define \(_[^_A-Z][a-zA-Z0-9_]*\).*/\1/p‘ | \ sort -u > tmp-macro_list sort: sort.c:701:inittables_mb: 斷言“mblength != (size_t)-1 && mblength != (size_t)-2”失敗。 /bin/sh: line 1: 31774 Done echo 31775 | ./xgcc -B./ -B/usr/local/i686-pc-linux-gnu/bin/ -isystem /usr/local/i686-pc-linux-gnu/include -isystem /usr/local/i686-pc-linux-gnu/sys-include -L/home/kenny/WorkEnvInit/gcc/gcc_objdir/gcc/../ld -E -dM - 31776 斷開的管道 | sed -n ‘s/^#define \([^_][a-zA-Z0-9_]*\).*/\1/p ; s/^#define \(_[^_A-Z][a-zA-Z0-9_]*\).*/\1/p‘ 31777 已放棄 (core dumped) | sort -u >tmp-macro_list make[2]: *** [s-macro_list] 錯誤 134 make[2]: Leaving directory `/home/kenny/WorkEnvInit/gcc/gcc_objdir/gcc‘ make[1]: *** [stage1_build] 錯誤 2 make[1]: Leaving directory `/home/kenny/WorkEnvInit/gcc/gcc_objdir/gcc‘ make: *** [bootstrap] 錯誤 2 看sort的在線幫助得知這個對文件的所有行排序的工具受環(huán)境變量LC_ALL的影響: *** WARNING *** The locale specified by the environment affects sort order. Set LC_ALL=C to get the traditional sort order that uses native byte values. sipsak: SIP Swiss Army Knife, very useful test utility (Linux). SIPSAK是一個小的命令行工具,用于開發(fā)者和系統(tǒng)管理員測試SIP系統(tǒng)??蓪IP應(yīng)用和設(shè)備進行簡單的測試。sipsak結(jié)合Python, Perl之類的腳本語言,可以快速構(gòu)建一個簡單測試。http:///上的cdt.pl就是這方面的例子。這比起僅使用腳本語言,省 去了認證、發(fā)送ACK、DNS解析等麻煩。 SIPp: a powerful SIP performance testing tool sponsered by HP. Its main features are basic SIPStone scenarios, TCP/UDP transport, customizable (xml based) scenarios, dynamic adjustement of call-rate and a comprehensive set of real-time statistics. Bison的-g選項輸出語法的自動機的VCG定義。 Visualization of Compiler Graphs。以下兩個地方有相關(guān)工具信息:http://rw4.cs./~sander/html/gsvcg1.html, http://vcg./,directory./Xvcg.html。好像函數(shù)調(diào)用關(guān)系也可以用這個表 達,見http://web./fortran/www/vcg.html。 BuildBot基于Python。 BuildBot是分布式結(jié)構(gòu),master監(jiān)控若干slaves(監(jiān)視狀態(tài),下發(fā)命令,搜集結(jié)果),各個slave按照指示執(zhí)行 update/compile/test并返回結(jié)果。Python和其他許多項目(Python的持續(xù)構(gòu)建報告http: //www./dev/buildbot/;wireshark的構(gòu)建報告http: //buildbot./trunk/)利用它做持續(xù)構(gòu)建。最簡單的調(diào)度器是Periodic,每隔N秒(無論庫有無變化)呼 叫slave一次 ;其次是Scheduler,每次注意到庫變化都呼叫slave一次;最復(fù)雜是Nightly,注意到庫變化后在特定時間點呼叫slave一次。 我嘗試了一下BuildBot,做到了Periodic式持續(xù)構(gòu)建,但沒有做到Scheduler式構(gòu)建--庫變動后,WEB上一直看不到新Build動作,似乎SVNProller檢測不到庫的變化? IPCam小組現(xiàn)在用的Autobuild機制修改為基于BuildBot來實現(xiàn),好處不大,因為BuildBot更適合于那些需要在多個環(huán)境下編譯和測試的軟件項目。 dogtail (http://people./zcerza/dogtail/index.html) is a GUI test tool and automation framework written in Python. It uses Accessibility (a11y) technologies to communicate with desktop applications. dogtail scripts are written in Python and executed like any other Python program. Both dogtail and LDTP (Linux Desktop Testing Project) are test tools that use the same underlying technology (AT-SPI). Beyond that fact, there is no current relationship between dogtail and LDTP.(我最初是在http://directory./devel/prog/Python/這個工具發(fā)現(xiàn)這個工具的簡介。后來發(fā)現(xiàn) 了marathon--一個基于Python和Java的測試Java Swing GUI的測試工具。其實以上這些GUI測試工具的測試步驟都是如下三步:Record[錄制腳本]->Refactor[調(diào)整]-> Replay[重放]) SIP (http:///sip/index.php) is a tool for automatically generating Python bindings for C and C++ libraries. It was originally developed to create PyQt, the Python bindings for the Qt toolkit, but can be used to create bindings for any C or C++ library. 可yum安裝,名稱Python-SIP。 SIP is included with all of the major Linux distributions. However, it may be a version or two out of date. PySWT (http://www.cs./zilin/pyswt/pmwiki.php?n=PySWT.Introduction)是用SIP 擴展Python的一個好例子(它包裝了Eclipse采用的SWT庫,這只是作者做的原始版本而已)。這個頁面比較了SWIG和SIP兩種包裝方法,認 為SIP更易用。 PyChecker is a tool for finding bugs in python source code. It finds problems that are typically caught by a compiler for less dynamic languages, like C and C++. It is similar to lint. Because of the dynamic nature of python, some warnings may be incorrect; however, spurious warnings should be fairly infrequent. Pylint is a python tool that checks if a module satisfies a coding standard. Pylint can be seen as another PyChecker since nearly all tests you can do with PyChecker can also be done with Pylint. But Pylint offers some more features, like checking line-code‘s length, checking if variable names are well-formed according to your coding standard, or checking if declared interfaces are truly implemented, and much more (see the complete check list). Pyreverse is a set of tools for reverse engineering Python code. So far, it features dependency analysis tools, unittest skeleton generation, quick UML like diagrams generation and XMI generation for importation in a UML modeling tool. A special module can be used to generate files readable by Argo UML. Winpdb - An Advanced Python Debugger. Winpdb is an GPL Python debugger, with support for smart breakpoints, multiple threads, namespace modification, embedded debugging, password encrypted communication and speed of up to 20 times that of pdb. 它基于wxPython。我用了一下,感覺比Python自帶的IDLE的調(diào)試功能更強,更好用,速度也更快(IDLE里面執(zhí)行一行代碼慢得像蝸牛)。 Winpdb只有很少的在線文檔,啟動命令:"_winpdb.py -t"。調(diào)試器Launch一個Python腳本時使用的就是啟動調(diào)試器時的那個Python解釋器,似乎沒有辦法更換。 pydb is an expanded version of the Python debugger loosely based on the gdb comand set. It also has all of the features found in an earlier version of pydb.py that was distributed with the debugger GUI ddd. 早期的pydb是DDD的一個插件,而現(xiàn)在的版本基于gdb命令行,所以還可以集成到Emacs中。 免費的Python IDE很多,我選擇了SPE(http://pythonide./)。它基于wxPython,集成了UML, 語法檢查工具PyChecker, 調(diào)試器Winpdb, GUI設(shè)計器wxGlade和XRC, 3D建模器和游戲引擎Blender & more...我用了一下,它像Python自帶的IDLE那樣有命令行,但編輯代碼等功能好了十萬八千里,顯示漢字沒問題。 |
|