2005年4月7日
#
關于MinGW中的glut庫
Mark Kilgard提供的glut庫解壓后包含一個.h,一個.def,一個.lib和一個.dll文件。將.h拷貝到MinGW的include目錄下,.dll拷貝到windows的系統目錄下(windows\system32),.def和.lib文件在eclipse下面不太好使,可以使用reimp工具將.lib文件轉換成.a文件。命令如下:
reimp?glut32.lib
這樣,就會在同一目錄下生成一個glut32.def和一個libglut32.a文件,將libglut32.a拷貝到MinGW的lib目錄下。同時記得要刪除原來的glut庫,否則link時可能會出錯。
glut主程序框架
#include <GL/glut.h> //頭文件。
int main(int argc, char** argv) {
??? //初始化glut并建立窗口
??? glutInit(&argc, argv);
??? glutInitDisplayMode(GLUT_DEPTH | GLUT_SIGNLE | GLUT_RGB);
??? glutInitWindowPosition(100, 100);
??? glutInitWindowSize(200, 200);
??? glutCreateWindow(windowTitle);
???
??? //注冊glut的callback函數
??? glutDisplayFunc(display);
??? glutReshapeFunc(reshape);
??? glutIdleFunc(idle);
??? glutKeyboardFunc(keyboard);
???
??? //啟用光線、深度測試等
??? glEnable(GL_LIGHT0);
??? glEnable(GL_LIGHTING);
??? glEnable(GL_DEPTH_TEST);
??? //進入glut主循環
??? glutMainLoop();
??? return 0;
}
安裝開發平臺
為了保持開發平臺的一致性,采用GCC+eclipse作為開發平臺。
在Debian Linux下安裝GCC和make就可以了。安裝了X環境后,系統中就已經包含了OpenGL的頭文件和庫文件,但是要使用GLUT的話,還需要安裝GLUT的包。我使用的是freeglut3。
$sudo
?apt
-
get?install?gcc?make?freeglut3
-
dev
在Windows下,GCC的解決方案有很多,我使用的是MinGW,可以下載DevCpp,它包括MinGW和一個C/C++的IDE,因為我使用eclipse作為IDE,所以,我使用MinGW的官方開發工具。到MinGW的官方網站上下載以下包:
binutils
gcc-core
gcc-g++
mingw32-make
mingw-runtime
mingw-utils
w32api
最后再下載調試器gdb。
為了能使用Mark Kilgard提供的glut庫(http://www.xmission.com/~nate/glut.html),盡量下載最新的官方版本,該glut庫要求binutils版本至少是2.16.91。
http://www.mingw.org/MinGWiki/index.php/Glut頁面解釋了在MinGW下使用Mark Kilgard的GLUT庫會出現的問題及解決的辦法。
至于Eclipse和CDT的安裝很簡單,在Linux下和Windows下也沒什么區別。需要注意的是:為了讓Eclipse能是別到GCC,需要吧GCC的bin目錄加入系統路徑PATH中,eclipse會自動查找make.exe,而MinGW的Make程序名叫mingw32-make.exe,所以,要么把mingw32-make.exe更名為make.exe,要么指定eclipse使用mingw32-make.exe進行make。
最近發現國內的debian安裝源服務器很不穩定,想換一個速度快的,結果apt-get update運行失敗后,把安裝源換回來再重新安裝其他包時都會報包依賴錯,apt-get update好像起不了作用。研究后發現,刪除/var/cache/apt/下的兩個bin文件,再apt-get update就可以了。
知道java5.0中中文顯示的解決辦法是在jre/lib/fonts/目錄下建立一個fallback目錄,然后把中文字體連接進去就可以了,但我找樂半天都沒找到這個目錄,最后發現用update-alternative --config java指令便可以得到這個目錄的信息。
要讓qemu虛擬機和宿主機位于同一個網絡中被該網絡的其他機器訪問,就需要使用TUN/TAP的網絡方式來啟動qemu虛擬機。具體的啟動指令是:
qemu -m 192 -hda disk.img -net nic,vlan=0 -net tap,vlan=0,ifname=tap0,script=/etc/qemu-ifup
如果是在WindowsXP下面,就不需要script=/etc/qemu-ifup這個啟動腳本了,直接將tap0換成網橋的名字即可。
第一步,建立一個虛擬網絡接口。
在linux下:
1?#?mknod?/dev/net/tun?c?10?200
在Windows下,有開源的虛擬網卡軟件,找一個來裝好就行了。
第二步,建立網橋。
在linux下:
修改/etc/network/interface配置文件。此處建立一個名為br0的網橋,先橋接上eth0,在啟動qemu時,再橋接上tap0。
?1?#?/etc/network/interface
?2?#?This?file?describes?the?network?interfaces?available?on?your?system
?3?#?and?how?to?activate?them.?For?more?information,?see?interfaces(5).
?4?
?5?#?The?loopback?network?interface
?6?auto?lo
?7?iface?lo?inet?loopback
?8?
?9?#?The?bridge?network?interface(s)
10?auto?br0
11?iface?br0?inet?static
12?address?192.168.1.2
13?network?192.168.1.0
14?netmask?255.255.255.0
15?broadcast?192.168.1.255
16?gateway?192.168.1.1
17?bridge_ports?eth0
18?bridge_fd?9
19?bridge_hello?2
20?bridge_maxage?12
21?bridge_stp?off
在windowsXP下,在網絡屬性窗口中,直接將要橋接的兩塊網卡選中,然后點擊鼠標右鍵,選擇“橋”菜單即完成橋接。
第三步,建立qemu-ifup腳本啟動qemu時調用。
在linux下:
建立/etc/qemu-ifup腳本文件(參見qemu指令的-net參數)
1?#!/bin/sh
2?
3?sudo?/sbin/ifconfig?$1?0.0.0.0?promisc?up
4?sudo?/usr/sbin/brctl?addif?br0?$1
5?sleep?2
WindowsXP在下不用這個腳本,直接把-net的ifname參數設為網橋的名字即可。
趁這兩天有點空,終于把本本重裝了。
一切都還順利,只有在安裝Netbeans時需要注意必須先安裝bc包才能安裝Netbeans。
周末和幾個驢友去了趟都江堰,從東光小區出發到達目的地共80公里,行駛時間4小時,感覺不錯,美得達的車就是好。
好幾天來有個問題一個困惑著我。
在Eclipse里使用WTP插件時,總是不能正確的增加一個Server。當點擊“WTP Server Actions”工具圖標時,Eclipse響應速度極慢,并且,整個WTP相關的圖標都會從工具欄上消失掉。
開始我以為這個問題是由于各個插件使用的WTP版本不一致造成的。由于我主要是想使用Exadel Studio 3.5,所以,我按照Exadel網站上的方法,去掉了其它插件的WTP(主要是JBossIDE和WTP本身),仍然不能解決該問題,于是我準備將錯誤信息發送給Exadel。
令我吃驚的是,當我使用-debug參數啟動Eclipse時,一切都正常!我能通過WTP Server Actions圖標創建Web服務器,也能通過其它WTP圖標啟動、停止和部署應用。當我去掉-debug參數時,問題又回來了!看上去非常的不可思議。當我仔細觀察使用與不使用-debug參數時Eclipse的區別時,終于發現當使用-debug參數時,Eclipse沒有使用Windows主題!難道會與這個相關?看上去風馬牛不相及,不過我還是準備試一下。我把%JAVA_HOME%\bin下的javaw.exe.manifest文件刪掉,重新啟動,一切OK了!
不可思議!于此我得出的結論是:不能只看重外表!
剛剛在我的Debian Testing下面比較了一下VMware與qemu安裝Windows2000Professional的速度。
我的機器配置是Compaq Presario2500,512M內存,其中32M劃給顯存。P4 2.4G,ATI340顯卡。Linux內核版本為2.6.12-1-386。
為了保持可比性,我的虛擬機都使用256M內存,4G硬盤,NAT方式接入網絡。
先
在qemu7.0(沒有使用kqemu加速器)下安裝,使用的是雨薇在線提供的無值守安裝方式(安裝完成后會打上一些系統補丁),整個過程(開始安裝到出
現Windows開始菜單)耗時1小時48分鐘。然后在VMWare5.0下安裝,第一次安裝到檢測設備時死機,然后改成使用Bridge方式,整個安裝
耗時28分鐘,性能真的是不可相提并論啊。
在一些輔助功能上,VMWare好象也明顯好用得多,比如,VMWare下能使用我的視頻頭等USB設備,而qemu我還不知道怎么掛上USB設備。對顯
卡的模擬VMWare更是沒話說,最關鍵的時全屏時由于支持“自動匹配客戶機”,所以在我的液晶下就不會出現花屏,qemu好象沒辦法。
看來自由軟件要走的路還很長。
1、工作環境全面轉向Linux。
2、深入學習設計模式。
3、深入學習Hibernate,并用它做一個實際的項目。
4、深入學習JSF,并用它做一個實際的項目。
5、復習C++,尤其是對泛型加強了解,并與Java泛型對照學習。
6、嚴格遵守格律寫詩,盡量使用平水韻。
7、能流暢的演奏阿宮回憶。
平安夜,我生日的前一天,從長沙回到成都,走進住所,面對空蕩蕩的房間,感覺就象從一個客棧到了另一個客棧。
最近在幾個Debian版本間(Sarge、Etch、SID和Ubuntu5.10)做了些試驗,感覺Testing還是不太穩定,尤其是GNOME的任務條老是容易死掉,非常郁悶!不過我還是打算用這個版本,只要C++和Java的開發平臺能夠穩定下來就沒什麼,至於X窗口,還是用XFCE吧。
Ubuntu的確是個不錯的Linux發行版,感覺應該比RedHat更有前途(其實對它的偏好是因為其基於Debian,愛屋及烏了吧)。以前安裝Ubuntu時,不知道可以使用server參數來只安裝最基本的包。不過Ubuntu到是很穩定,至少不象tesing和sid那樣容易死掉。
有空的話,準備玩玩免免和LFS,不過估計有這閒時間的可能性很小。
在公司裡老板還在要我用Powerbuilder寫程序,因此完全放棄Windows是不可能的,最近試驗了一下qemu,其性能實在不敢恭維,使用VMWare就好得多。
晨起,略有雨氣,忽欲飲,無酒,唯詩爾。大夢隨風去
清歡捲雨來
欲醉三千日
神魂到蓬萊
把jdk1.5.0_06裝上了,不需要使用kernel-headers,不知道是記錯了還是現在改正了。
盡量在xfce下干活吧,快捷些,感覺上也更象高手。裝了個KDE下的瀏覽器──Konqueror,雖然大,感覺比FireFox要爽多了,基本上想要的功能它都有。而且是集文件游覽器和Web瀏覽器于一身。
IDEA也裝上了,今天Liuzy推薦我用這個東東來做Java開發,以前一直用Eclipse,前兩天想換換口味,于是下了netbeans5.0 beta2來試試,感覺還可以,至少集成了JSF和struts框架,eclipse下這些框架的免費插件可不太好用。開發Web應用也比Eclipse好用些。不過,IDEA這東東我還沒有玩通,感覺除了書寫代碼很爽外,也沒有多少過人之處,最重要的是不免費,用起總是于心不甘。
今天把Debian換成了最的tesing版本,內核為2.6.12-1-686,可是還沒有找到有哪個源上有這個版本的headers,我記得以前安裝java包時是需要這個包的,不知道現在是否也一樣,明天準備裝jdk-1.5.0_06試試。
第一次在Linux下用Firefox來書寫這個日志,感覺很不錯。
今天把Ubuntu下下來看看了,版本是5.10,結果很失望,完全不象Debian那樣自由,安裝根本沒有選擇,一股腦的全都裝上去了,安全花了近一個鍾頭,啟動速度也很慢,算了,還是裝回Debian好了。
十年落拓功名意 一夢方知歸未遲
丞相多因直諫死 將軍幾度陷城池
常思范蠡遁江去 欲效陶潛隱東籬
曾子堂前何所事 菊花把酒對詩詞
(2004年6月10日,那時候一直在考慮辭職,公司已經沒有前景了,而且也感覺自己在公司里也沒有什么發展空間,混到部門經理似乎就到頭了,所以也準備另謀出路。心情郁悶之際,遂寫此事。)
登翠屏山有感
俗子無知抱石寐 梵音清越向天行
經書難解心頭事 只問野趣不問名
(2004年6月14日,背景同前一首)
(一)
落落蕭條日 無為登古臺
青山臨水起 云氣向園開
雨帶荷花老 風摧竹葉哀
前賢皆已去 當思故人來
(二)
我愛黃山谷 其書意蕩然
詩成出居士 行文過米顛
流杯有筆過 摩壁豈無宣
形負滄桑去 名隨青史全
(大概是2004年5月中旬吧,那時候詩興大發,寫了不少,可能跟看了書畫展有關,也因為公司效益下滑,百無聊賴,寄情于詩了。游園其一我感覺寫的還不錯,格與境都上了一個臺階。)
(一)
黑白有真味 今人多不識
落落觀摩者 幾人可相知
(模仿劉禹錫的“泠泠七弦上,靜聽松風寒,古調雖自愛,今人多不彈”這首詩。2004年五一節,老婆來宜賓,告訴我人民公園有書畫展,便一同去看,結果樓下麻將聲聲,樓上清風雅靜,看書畫展的人還沒有一桌打麻將的人多,遂感嘆傳統文化的流失。) (二)
真草可清心 章白豈無趣
白丁難成行 鴻儒可同路
一騎單車快 兩只飛燕閑
至今思故友 一別五六年
投箸先有淚 舉觴亦無言
明日八百里 前路已茫然
(這首詩應該在98或99年我從銀行辭職的前夕,到溫江找李顯俊兄聊了聊,他還是那么溫文爾雅,書藝也大有進步。如今到了成都,卻沒有的他的聯系方法,也不知他還在不在化工技校教書。)
一直以為,古琴已經不是一種樂器。
對古琴的仰慕,持續了十多年,并且至今是有增無減。古琴帶給我的震撼,不是從聲波對我的耳膜的刺激中來的。從初識古琴時聽到的“陽關三疊”,到后來百聽不厭的“梅花三弄”,以致如今略有所悟得“瀟湘水云”,我一直在很用心的體會這個獨特樂器所帶來的意境。如果說開始聽琴時還有些附庸風雅,那現在我已經是真正體會到古琴的妙處了。
初識妻時,給她聽了很多古琴的曲子。妻是文人,那時對古琴仰慕的一塌糊涂。后來,有一次,樂器店的老板進了一具古琴,我便帶她一同去聽,結果,我和她的感受截然相反。
古琴悅己,古箏悅人,我想,把古琴僅僅當作一種樂器的人是彈不好古琴的。
古琴是一種“道器”、“德器”,以致我見到古琴時,真的怕自己一輩子都沒有機會有資格擁有它。
點絳唇
幾片扁舟,幾番天色又飄淼。幾人同道,幾許聽秋草。
月色蒼茫,攜琴欲遠眺。知音少,也是玩笑,莫惹些煩惱。
原詞如下:
點絳唇.憶
一樹丹楓,一江秋水波微淼。一條長道,一橋連灘草。
黯淡斜暉,無語西樓眺。思年少,盡情歡笑,哪有些煩惱。
今天公司組織職工進行體檢,在30所職工醫院。結束后才發現,醫院抽血好象不是用的一次性針頭,大懼!以后再也不到職工醫院看病了。
老婆今天回家了,衣來伸手飯來張口的幸福生活就此結束,今天開始又是吃伙食團,幸好我上次檢查已經有了乙肝抗體,呵呵。
最近一個月,一直在用Exadel做JSF的練習,發現它的確是一個非常好的Eclipse插件,尤其是對編寫JSP頁面,幾乎沒有其它工具比它更好用。
{安裝}
安裝就不說了,從Exadel的網站上下載,運行Exe或者Jar文件即可。
{配置Exadel}
在“首選項”->“Exadel”->“Running”的“Tomcat”選項卡中配置好Tomcat的路徑。ExadelStudio2.5支持Tomcat、JBoss、JRun和J2EESDK。不過,ExadelStudioPro3.0就支持幾乎所有的應用服務器了。
在“首選項”->“Exadel”->“JSF”->“Project”選項卡中可以配置你使用的JSF的版本、Servlet的版本以及你的JSF項目模板。還有一個選項是在Tomcat的Server.xml文件中注冊你的Web上下文。不過由于Tomcat5.0以后可以使用獨立的上下文配置文件,所以我一般不喜歡使用這個選項。
{新建一個JSF項目}
在剛才的配置中,JSF項目模板有兩個選項,一個的“JSFBlank”,另一個是“JSFKickStart”。JSFBlank將建立一個空白的JSF項目,Exadel會自動在你的項目路徑中產生你需要的文檔。
首先,它會把需要的JSF庫放到應用的/WEB-INF/lib目錄下,在項目中的路徑為/WebContent/WEB-INF/lib。
第二,它會自動設置好項目的構建路徑,讓Eclipse能輕松地使用JSF庫。
第三,它會自動產生幾個重要的文檔:Web.xml、faces-config.xml和build.xml。其中web.xml和faces-config.xml放在/WebContent/WEB-INF/下面,而build.xml放在/ant目錄下面。
注意,如果你需要對你的ManagedBean進行的調試的話,請記住將build.xml的compiler任務中javac的debug屬性設為“on”。
Exadel還會產生一個JavaSource目錄,所有ManagedBean的源碼都應該存放在這里。還有build和deploy目錄是ant用來執行編譯和部署的。deploy里是最終的部署路徑,當然,你要是不喜歡的話,盡管在build.xml里把它換成其它的。
如果想一句代碼都不寫就體會一下JSF的概貌的話,可以將Exadel的JSF項目模板設置為“JSFKickStart”,這時Exadel會為你產生一個比空白JSF項目稍稍多一點功能的項目模板,它有一個歡迎頁面和一個ManagedBean。雖然沒有多大用處,但可以很清晰地看到JSF項目的書寫方法。
到S公司兩個月了,這兩天,公司搞了個令我郁悶的新員工培訓。
說郁悶,有幾個原因。當然,最重要的原因是要和那一大堆剛從大學里分配來的小孩子們坐在一起,聽年紀比我還小的什么經理呀之類的講些膚淺的技術。第二,我們公司的副總工,就是我們部門的老大,給我們講軟件開發技術時,帶有強烈的個人主觀色彩,把Java,尤其是EJB批得一無是處,把WebService奉為放之四海皆準的真理,而且以前也發現他有把自己的主觀意見強加給下屬的趨向,郁悶。
不過也有好處,總算輕松了兩天,沒干什么活。
ExadelStudioPro3.0到期了,沒辦法,只好用免費的ExadelStudio2.5,不過,對我來說,主要用它做JSF,倒是夠用了,唯一不爽的就是要換回成Eclipse3.0。
SQLServer的JDBC驅動在SQLExplorer和Exadel的Database Explorer里老有問題,不知道怎么回事,JDBC本身應該沒有問題,在Tomcat配連接池的情況下也跑得上好的。
前段時間在做一個JSF練習時,總是不能對類文件進行跟蹤調試,Eclipse彈出“cannot install breakpoint”錯誤對話框。依照該錯誤對話框的提示,將項目的complier設為使用workspace的,并且在workspace的java->complier選項中選中“add line number attribute to generate class files”,仍然不能解決問題。結果今天才發現,原來,項目的build.xml文件中,javac沒有使用debug="on",翻看ant的文檔,原來javac默認debug="false"。
南鄉子
霜重暮江寒
一葉扁舟影自單
漸行漸遠漸無意
催眠
收拾心事向管弦
何必理衣冠
老子偏愛獨倚欄
懶問世間沉浮事
何盼
記取蓑翁釣魚桿
這是1999年步韻一位網友的詞,不過原詞和當時和的詞已經記不清了,只能依稀記得兩句。很久沒有寫詞了,故依原詞意,重作此詞。
受不了CSDN不停地出問題,搬到這里落戶來了,希望能讓我堅持寫Blog。
自嘲一首
我無富貴命,所喜性天然。
壁立三千字,家無半吊錢。
蟬鳴深巷里,人語短屋前。
收拾英雄氣,耕作兩分田。
自我來盛安,已過兩月圓,傳聞不實,所憾甚多。奈何機遇已失,良緣未結,故做此詩,以慰心境。
獨臥東郊已越年,開窗納月復無眠。
欲攜琴書歸何處,可憐世上無桃源。
Debian安裝過程(雜項)

昨天基本把系統裝好了,今天上午折騰了一會兒xfce4,不太熟,雖然把firefox之類的裝進去了,但沒再面板上的東西不知道如何調出來,所以又把WM換成了GNOME。
在安裝Debian時自動使用了DHCP獲取網絡地址,也沒有機會讓我指定靜態IP,我不喜歡動態IP,所以修改/etc/network/interfaces文件,將IP地址改為靜態。格式如下:
auto eth0
iface eth0 inet static
address xxx.xxx.xxx.xxx
netmask xxx.xxx.xxx.xxx
network xxx.xxx.xxx.xxx
gateway xxx.xxx.xxx.xxx
用apt安裝了deborphan(用于清除遺留包)、nmap、mysql、apache2,基本沒遇到問題。裝vmware-tools的時候,需要先裝gcc、make、kernel-headers-x.x.xx-x-xxx。
最后裝JDK5.0,首先再SUN的網站下載JDK的BIN文件,再裝一個java-package包,這個包用來將BIN文件生成DEB安裝包。要注意的是,使用make-jpkg工具時不能在root帳號下用,必須是一般用戶使用fakeroot命令來操作,因此要注意這個用戶對bin文件的操作權限。我在裝的過程中出了幾個權限上的問題,但最終還是裝好,并且可以用。
關于掛接Windows文件系統(NTFS、FAT32)不能顯示中文的解決辦法:
使用iocharset選項,如果用命令,則如下所示:
$sudo mount -o iocharset=cp936 /dev/hda1 /mnt/windows
如果在fstab里設置,則如下所示:
/dev/hda1 /mnt/windows auto iocharset=cp936 0 0