vulcan

          低頭做事,抬頭看路

             :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
            41 Posts :: 7 Stories :: 28 Comments :: 0 Trackbacks

          #

          由于項目需要,需要同事的DotNet實現(xiàn)的客戶端用我用Java寫的API,以前都沒有用過webservice,而是用進(jìn)程控制的方法,先在DotNet開一個cmd.exe,然后向cmd.exe的輸入流寫如命令,進(jìn)而啟動java程序。方法是很簡單,但是這樣的集成,卻穩(wěn)定性不高,經(jīng)常有java進(jìn)程死的情況,檢查了了n編程序,但是卻一直沒有發(fā)現(xiàn)同事的程序有什么問題。一直想用C#重新實現(xiàn)底層的通信API,不過一直沒有時間;雖然這樣集成有問題,但是也運(yùn)行了大半年,只是維護(hù)工作量增大了,但是不知道最近為什么,數(shù)據(jù)的下載越來越不穩(wěn)定,程序一天死幾次。決定用webservice重新實現(xiàn)C#和java的互通,而不是格外找時間來用C#重寫API。
          使用webservice,其實過多的準(zhǔn)備工作也不要,推薦兩個IDE,集成了WTP的Eclipse和Netbeans6.用這兩個工具,我從一個對webservice完全生疏的人,兩天之內(nèi)完成了系統(tǒng)的集成工作。Netbeans是基于JDK6的JWS實現(xiàn),主要是靠Annotation,這點很類似DotNet中webservice的實現(xiàn)方法,并且根據(jù)我的理解在JWS中實際的WSDL可以是不存在的,而是在runtime時生成的,用Netbeans非常方便。不過,我們現(xiàn)在的所有的Java環(huán)境全部是JDK5,不想貿(mào)貿(mào)然引入新的環(huán)境,因此JDK6的JWS是不能用了。看看Eclipse。Eclipse在這個方面也不錯,下載jee版的Eclipse3.3就內(nèi)置了WTP,新建一個動態(tài)網(wǎng)站,然后就可以由兩種方法方便的生成webservice了。第一種,先有類,生成wsdl;第二種,先設(shè)計wsdl,類似于java接口的設(shè)計,這里eclipse是可以有個圖形化界面設(shè)計wsdl的,然后由此wsdl生成java類。不過我習(xí)慣第一種,先寫好java類,測試完畢之后,然后直接發(fā)布成web service,axis是非常方便部署web service的,它內(nèi)置的Servlet就可以把你實現(xiàn)的類當(dāng)作一個bean來使用。還能根據(jù)webservice來生成自動的測試頁面,不過不要太相信該測試頁面,下面我就會說到原因。

          由于系統(tǒng)的需要,我的這個webservice是需要維護(hù)狀態(tài)的,因為它實際上是顯示了一個通信API的web service,所以有一個會話的概念。在網(wǎng)上查了很久,但是都沒有我的這種例子:Axis的服務(wù)端,DotNet的客戶端,同時還要使用會話。不過看來一些資料還有Axis的Servlet的源代碼之后,慢慢清晰起來,實際上Servlet就是把HttpServletRequest和HttpServletResponse存到了MessageContext中,對于每個客戶可以用MessageContext.getCurrentContext()并且從中獲取與當(dāng)前會話相關(guān)的request和response,這之后的操作就方便了,這是Servlet API的內(nèi)容了;而在DotNet客戶端,由web引用生成代理類之后,只要給該代理類指定一個CookieContainer就可以維護(hù)狀態(tài)了,記住一定要指定CookieContainer,否則每次連接到web service都會是一個新的sessionId,達(dá)不到我們要求維護(hù)狀態(tài)的效果。

          為什么我說不要相信Eclipse生成的Axis的測試頁面呢?看看它的jsp源碼就知道了,它把你的類當(dāng)作一個bean來用,也就是該類并不是在實際的通過遠(yuǎn)程的web請求來使用了,也就是說它的MessageContext為null,自然也就無法維護(hù)狀態(tài)了,我就是之前沒有專門寫客戶端來測試,而是用它自動生成的測試頁面來測試session吃了虧,大概卡了一個下午的殼吧,怎么弄MessageContext都是null。

          順便說個小tip,使用在我的這個web service接口中,希望也可以對其他人有用:如果要支持一個多用戶,那么把每一個客戶關(guān)聯(lián)的對象:比如數(shù)據(jù)庫的操作類(需要事務(wù)時)或者我這里的終端通信API,它的指令執(zhí)行是有Context的,所以必然注定了要關(guān)聯(lián)到每個用戶。把該對象存入到session是可行的方案,但是如果你需要一個pool自動維護(hù)這些對象的life span時,實現(xiàn)一個連接池肯定比session有優(yōu)勢,但是怎么讓它關(guān)聯(lián)到每個用戶了。看到網(wǎng)上有人在dotnet中實現(xiàn)的方案是生成該對象的GUID,該對象初始化后(比如在連接時)返回該GUID,然后每一個操作(方法)中都帶上這個GUID參數(shù),不過稍微想一下就知道,這種方案的弊端,時間上該GUID僅在服務(wù)端是用意義的,在服務(wù)端客戶端之間傳來傳去,給每個方法都多了一個實際上并沒有多大用處的參數(shù)。我們可以用sessionId來關(guān)聯(lián)到該這一唯一用戶。用Axis的可以在MessageContext中得到Session,這個session即是上是Axis對HttpSession的封裝,但是從這個session已經(jīng)得不到sessionId了。我們需要從MessageContext中的HttpServletRequest下手:
                  MessageContext mc = MessageContext.getCurrentContext();
              HttpServleteRequest    req 
          = (HttpServletRequest) 
                              mc.getProperty(HTTPConstants.MC_HTTP_SERVLETREQUEST);
          通過這個req可以有兩種方法得到sessionId,一種是request.getSession().getId();一種是request.getRequestedSessionId(),分別得到了本次的sessionId還有上一次連接的的sessionId,第二個方法非常有用,如果是新連接,那么getRequestedSessionId()得到的是null值,而request.getSession().getId()每次都會返回本次連接的sessionid。所以我們的思路就明晰起來:通過判斷request.getRequestedSessionId()是否為null決定是否初始化一個對象,并且把該對象用request.getSession().getId()獲取的sessionId作為key存入到pool中。以后每次來了連接都取request.getRequestedSessionId(),并且從pool中取出該sessionId對應(yīng)的對象,執(zhí)行該對象相應(yīng)的方法。這樣就達(dá)到了web service的狀態(tài)維護(hù)了。其實很簡單,只要在DotNet客戶端制定CookiesContainer就可以了。如:
          System.Net.CookiesContainer cc = new System.Net.CookiesContainer();
          MyService service 
          = new MyService();
          service.CookiesContainer 
          = cc;


          posted @ 2007-12-26 19:11 vulcan 閱讀(1245) | 評論 (0)編輯 收藏

          用aptitude裝上Tomcat5之后是不能用的。因為默認(rèn)的JDK沒有包含sun的jdk1.5,tomcat可能都無法啟動起來。需要在/etc/init.d/tomcat5中的jdk路徑中加上新裝的JDK1.5的路徑。并且如果應(yīng)用程序中有基于XML DOM的程序,那么還有可能出錯。在/usr/share/tomcat5/common/endosed下面兩個Jar包和Sun JDK1.5中的類沖突,把這兩個Jar移出該文件夾就好了。另外,貌似現(xiàn)在Apache和tomcat的整合方便了許多,用JkMount,比幾年前方便了很多。
          下面是最簡單的一種配置方法,不要自己去處理什么work.properties等等,也不用額外去處理安全設(shè)置。注意不要把Apache和Tomcat之間Alias到同一個目錄。否則可能引發(fā)安全性問題,比如別人用*.jsP等非法文件名可以得到j(luò)sp源文件的。并且,如果你是一個混合了php等的多語言應(yīng)用程序集成環(huán)境,從tomcat的8080端口也是可以下載php的源代碼的。不過網(wǎng)上的這種漏洞百出的集成jsp和php的apache和tomcat整合方法,比比皆是。
          #加入到httpd.conf的Virtual Host節(jié)或者全局設(shè)置
          JkAutoAlias 
          /var/lib/tomcat5/webapps/ROOT
          JkMount 
          *.jsp ajp13
          JkMount 
          *.action ajp13
          JkMount 
          /webwork/* ajp13
          JkMount /
          */servlet/ ajp13


          posted @ 2007-12-21 14:46 vulcan 閱讀(181) | 評論 (0)編輯 收藏

          我基本上沒有用過KDE~我從5年前最開始用的RedHat開始,一種都是用Gnome,而用Gentoo的時候,由于機(jī)器配置不行用的FVWM+rox。偶然在網(wǎng)上一個人的Blog里面看到KDE4還有20天發(fā)布的消息,并且說是KDE4的很多新特性,穩(wěn)定性和性能都會有很大的提高,所以在現(xiàn)在的Ubuntu上面裝了一個KDE base,試用了一下。
          總的評價來說,KDE很好了,不是傳說中的KDE很容易Crash,也不是傳說中KDE因為過于華麗而速度慢的問題,反而我的體驗是兩者沒有明顯的差別,并且KDE要顯得稍微快一點,不過是不是新鮮感造成的偏愛我就不知道了:)。
          通過進(jìn)一步的Google,我了解到了現(xiàn)在并行KDE和Gnome程序,似乎都可以運(yùn)用對方的風(fēng)格,所以在KDE中運(yùn)行Gnome的程序,其風(fēng)格也是一致的。我記得以前用fvwm時,如果要使用GTK的程序,配置一個gtkrc,指定字體,圖標(biāo),風(fēng)格等,不過這些工作是不是Ubuntu發(fā)行版幫忙做好的,我就不想再去考證了,不過確實舒服。
          對于其版權(quán),我們作為使用者其實沒有必要去追究,Linux下的QT也是GPL的。雖然開源需要一種精神,但是靈活處理也是一種很好的方法,比如我是個開源的愛好者,我作的開發(fā)工作很多都是與開源軟件有關(guān),并且不遺余力的在公司推廣開源軟件(不光是Linux),但是我在筆記本上就用Windows,本本自帶的正版XP操作系統(tǒng),裝了一個Cygwin,足夠應(yīng)付我的學(xué)習(xí)工作還有娛樂了,其實XP也挺好的,至少,我現(xiàn)在還是覺得XP的圖形界面整體性能還是比Linux下用Xwindows+Gnome(KDE)要略微好一些。并且可以免去一些配置問題,還有與其他的Windows兼容性問題解決,這樣挺好的。所以我對于KDE的態(tài)度也是這樣,QT是一個卓越的圖形庫解決方案,我們沒有必要去苛責(zé)它是否完全自由。不過不得不提一下,由于版權(quán)問題,如果做閉源的行業(yè)專用軟件,如果要在QT和GTK+庫中間選,還是選擇GTK+比較好。

          posted @ 2007-12-20 14:38 vulcan 閱讀(114) | 評論 (0)編輯 收藏

          Eclipse Europa 3.3超級不穩(wěn)定,經(jīng)常會莫名奇妙的加載不了插件,以前用基于Eclipse 3.2的JbossIDE2.0Beta時有時有死的情況,但是沒有現(xiàn)在的這么頻繁,真不知道是新版本Eclipse還是我的新機(jī)器或者是JDK的問題。但是反倒NetBeans進(jìn)入到6.0版本之后,已經(jīng)比較對我的胃口了。6.0之前編輯和Eclipse沒得比,連自動糾錯都不行,自動Import都不行。也沒有那么容易Crash。另外默認(rèn)基于Ant構(gòu)建,這樣即使不開IDE也可以編譯。雖然用Eclipse也可以建立基于Ant的構(gòu)建,但是一直懶,不愿意寫B(tài)uild.xml,用Eclipse的工程就好了。但是構(gòu)建起來,NetBeans有點嫌慢,Eclipse的增量編譯體驗還是不錯的。不過說實話,Netbeans用得少,不知道是否真正用得多了也有其他的問題。但是這個Eclipse,總是要重新啟動機(jī)器,甚至多啟動幾次才好,著實煩躁。
          posted @ 2007-12-19 15:04 vulcan 閱讀(122) | 評論 (0)編輯 收藏

          昨天一個下午的時間,包括晚上加班,都沒有把OpenVPN的問題搞定,從網(wǎng)上查的資料也都講得不太明確,openVPN的HowTo讀了N遍,也沒有達(dá)到我的目的。昨晚躺在床上,突然想起,是不是防火墻的問題呢?早上來了,把Forward默認(rèn)策略改為ACCEPT,搞定了,迅速調(diào)整了防火墻策略,搞定。
          我要實現(xiàn)的目標(biāo)很簡單:在外網(wǎng),可以用Openvpn登陸進(jìn)來,并且可以訪問內(nèi)網(wǎng)內(nèi)的所有服務(wù)器,并且VPN Server不是網(wǎng)關(guān),而VPN Server有兩塊網(wǎng)卡,一塊連接公網(wǎng),一塊連接公司內(nèi)網(wǎng)。
          各方資料顯示只要做一個SNAT就可以了,不過怎么搞都是只能聯(lián)通OpenVPN Server而不能聯(lián)通VPN Server所在內(nèi)網(wǎng)網(wǎng)段的其他服務(wù)器!
          我設(shè)置的VPN的網(wǎng)絡(luò)段是172.31.0.0/24,服務(wù)起來之后,在服務(wù)端路由表里面顯示服務(wù)器tun的IP為172.31.0.1,網(wǎng)關(guān)為172.31.0.2;而在
          客戶端獲得了一個172.31.0.6的地址,路由表里面顯示網(wǎng)關(guān)為172.31.0.5.但是卻無法ping通172.31.0.2還有172.31.0.5,之前從來沒有用過OpenVPN,但是根據(jù)以前對路由表的理解,覺得這個網(wǎng)關(guān)怪怪的,所以晚上找資料就是找網(wǎng)關(guān)的問題。
          晚上把思路理了一下,覺得是不是這兩個是個openVPN的虛擬的網(wǎng)關(guān)?這么一想,那么就把注意力放到了防火墻的設(shè)置上。下面把防火墻關(guān)于VPN的設(shè)置總結(jié)一下:

          #eth0 -- internet connection
          #
          eth1 -- intranet connection
          #
          turnoff all the connection first
          iptables -P INPUT DROP
          iptables 
          -P OUTPUT DROP
          iptables 
          -P FORWARD DROP
          #open udp port for the openvpn
          #
          allow client connect to the openvpn server
          iptables -A INPUT -i eth0 -p udp --dport openvpn -j ACCEPT
          iptables 
          -A OUTPUT -o eth0 -p udp --sport openvpn -j ACCEPT
          #allow tun in and out
          iptables -A INPUT -i tun+ -j ACCEPT
          iptables 
          -A OUTPUT -o tun+ -j ACCEPT
          #allow vpn to the intranet
          iptables -A FORWARD -i tun+ -o eth1 -j ACCEPT
          #the following one is very important
          #
          if you miss this one, you will not connection
          #
          to the servers in you intranet
          iptables -A FORWARD -i eth1 -o tun+ -j ACCEPT
          #DO NAT
          iptables -t nat -A POSTROUTING -172.31.0.0/24 -o eth1 -j MASQUERADE
          posted @ 2007-12-19 11:30 vulcan 閱讀(5393) | 評論 (6)編輯 收藏

          不是內(nèi)核bug也不是iptables的原因,問題出在了新內(nèi)核的配置上。在2.6.20之后的內(nèi)核,在netfilter的配置以前在ipv4 netfilter configuration中的相當(dāng)一部分移到了core netfilter configuration中,在core netfilter configuration中配置了state的match之后,另外必須在ip: netfilter configuration中的conntract也選上,否則就會出現(xiàn)本文標(biāo)題中的invalid argument錯誤。這個問題,困擾了我很久,最終在國外的一個maillist上找到了原因。這個問題多出現(xiàn)在內(nèi)核升級之后,對于很多發(fā)行版本,由于把所有的feature都編譯成了模塊,所以不會出現(xiàn)此問題。希望可以幫到大家。
          posted @ 2007-12-16 19:28 vulcan 閱讀(2338) | 評論 (1)編輯 收藏

          自以為是個Gentoo老手,可惜用了幾年的Gentoo都是在我從學(xué)生時代帶來的老機(jī)器,毒龍1.2,256Ram,IDE硬盤上面,昨天在一臺Sata硬盤的電腦上裝Gentoo遇到了不少問題,現(xiàn)在寫下來,給其他同學(xué)做下參考;
          (1) LiveCD支持是沒有問題的,安裝都順利
          (2) 內(nèi)核編譯支持Sata。在這個問題上,我被困擾了很久,通過lspci我知道sata芯片類型,編譯了,在grub中配置root=/dev/sda3,啟動不了,后來嘗試性的改為hda才引導(dǎo)了,但是取到了最后檢查磁盤的時候不成功了,提示Unable to open file or directory /dev/sda3。提示輸入root密碼進(jìn)行維護(hù),輸入進(jìn)去,才發(fā)現(xiàn)udev沒有生成/dev/sda*!但是卻有hda*存在,于是改fstab中所有的sda到hda,于是系統(tǒng)啟動成功。我以為可以了,于是回去了。今天來上班,總覺得心里不爽,并且也發(fā)現(xiàn)了,磁盤的DMA打不開。所以繼續(xù)google,發(fā)現(xiàn)有人和我問題一樣,不過都沒有解決方法,搜了好久,有個人寫了一個關(guān)于gentoo在一個dell機(jī)器上安裝的心得,說是要禁用內(nèi)核中的generic/default IDE support,否則sata硬盤會被認(rèn)成hda.于是重新編譯了內(nèi)核 ,改了fstab和grub配置,系統(tǒng)啟動成功,這個時候/dev/sda*生成了。測試了一下,磁盤IO增加了10倍!
          (3) hdparm對sata設(shè)備的支持有限,可以查看信息,測試,但是卻不能設(shè)置DMA等參數(shù),所以在gentoo的/etc/conf.d/hdparm中sata_all_args=""


          posted @ 2007-12-13 14:33 vulcan 閱讀(339) | 評論 (1)編輯 收藏

          造成人與人之間命運(yùn)懸殊的,往往不只是因為誰比誰更賣命或誰比誰聰明,重要的是因為誰有目標(biāo)及誰的目標(biāo)更清晰。

            既然如此,現(xiàn)在不妨讓我們先花上幾分鐘思考一下:

            我有沒有目標(biāo)?

            我忙嗎?

            我在忙些什么?

            我是在為了自己的目標(biāo)而忙嗎?

            我忙得來不及思考自己的目標(biāo)嗎?

          -----

          將工作分類。

          將相似的零散事務(wù)集中處理。

          創(chuàng)造和利用“整塊”時間。

          盡量不要將時間浪費(fèi)在等待中。

          充分利用等待的時間,安排好隨時可進(jìn)行的備用任務(wù)。

          一次專心做一件事,并且用最快的速度完成。完成一項工作后,立刻進(jìn)入下一項工作。

          養(yǎng)成第一次就把事情做對并做到位的工作習(xí)慣。

          每個人的時間都是有限的,但是每個人的工作效率卻是不同的,關(guān)鍵就在于我們是否能對時間進(jìn)行合理安排和運(yùn)用。合理運(yùn)用以上方法,我們就能成為時間的主人。

          posted @ 2007-12-12 09:13 vulcan 閱讀(128) | 評論 (0)編輯 收藏

          公司的服務(wù)器都是用的Ubuntu LTS,原因很簡單,在我們這里沒有哪個發(fā)行版有Ubuntu這么好的源,用cn99的源,速度很快,速度到M級,并且我作為主要的維護(hù)人員,我自己桌面操作系統(tǒng)上用的就是Ubuntu,這樣維護(hù)起來比較方便。之前引入Linux系統(tǒng)時,也選擇過,最終結(jié)合各種因素選擇了Ubuntu。其實Debian也挺不錯的,在cn99也有源,但是我之前沒有使用過也就算了。對于Redhat系列的東西,最早使用的Linux,但是對RPM沒有好感,出了yum之后,在這邊也苦于沒有合適的源,其實CentOS應(yīng)該是很不錯的,人家RHEL靠Linux實現(xiàn)了盈利了,Redhat在企業(yè)服務(wù)器這里肯定是有經(jīng)驗。
          這次是要做個防火墻兼反向代理服務(wù)器,ubuntu說實在的,可定制性太少,即便是裝完命令行最小系統(tǒng)之后,還是有好多不需要的東西,所以對于防火墻不想使用ubuntu了,但是如果時間不允許,那么還是會考慮用Ubuntu,畢竟維護(hù)也有統(tǒng)一性。于是把目標(biāo)轉(zhuǎn)向了幾個定制性比較高的系統(tǒng)上面。Gentoo,使用時間最長的一個系統(tǒng),但是在這邊同樣源不太好,想當(dāng)初在學(xué)校教育網(wǎng)內(nèi)用tsinghua的源,那叫一個爽字。一般來說用Gentoo做服務(wù)器還是有風(fēng)險的,(1)裝系統(tǒng)編譯費(fèi)時間;(2)升級(主要是為了安全性)會經(jīng)常的有很多包更新,本來可以只是更新安全公告里面出現(xiàn)的軟件包,但是以前用Gentoo養(yǎng)成的習(xí)慣,看不慣有沒有升級的包。不過如果做一個單一行的服務(wù)器,上面要裝的軟件比較少的,所以更新和編譯應(yīng)該不成問題,所以還要努力找找合適的源。ArchLinux,使用過幾天,當(dāng)初在新電腦上死也裝不上Ubuntu的時候用過,但是后來發(fā)現(xiàn)它也在我的新電腦上不能生存,于是卸掉了。不過看源,似乎國內(nèi)的源都是個人網(wǎng)友愛好者架設(shè)的,不太牢靠。另外據(jù)說作為服務(wù)器來講還是不太穩(wěn)定,這是LinuxSir上一個架ArchLinux源的哥們說的。另外,從網(wǎng)上找ArchLinux的SeLinux資料也沒有,只看到了一個抱怨裝不上的帖子。再加上我對ArchLinux不熟,所以也就不堅持了。接下來考慮了BSD系統(tǒng),F(xiàn)reeBSD和OpenBSD,OpenBSD號稱世界上最安全的操作系統(tǒng),但是它的光盤沒有,要用網(wǎng)絡(luò)安裝,看來網(wǎng)絡(luò)依賴太大,所以不考慮了;FreeBSD,從N年起一直對它躍躍欲試,但是卻還沒有真的往自己系統(tǒng)上裝過。不過它是以穩(wěn)定的網(wǎng)絡(luò)操作系統(tǒng)為賣點的,并且Gentoo的Portage機(jī)制也是師從于它,所以對它真的向往,不過國內(nèi)的源是否滿足要求還是要考察,也許裝裝試試就知道了。現(xiàn)在把選擇范圍縮小到Ubuntu,Gentoo和FreeBSD。傾向于gentoo,不過選擇依然很難。另外要做為服務(wù)器操作系統(tǒng),系統(tǒng)管理的文檔必須要齊全,在這點上Debian,ubuntu,gentoo,freebsd都非常的棒。

          原來想,無所謂了,沒有誰比誰絕對優(yōu)秀,并且在防火墻的應(yīng)用領(lǐng)域都還不錯,誰的源快就選擇誰吧,不過還是決定多看看資料,不能那么隨便。
          最終選擇Gentoo:
          (1). 一個老外關(guān)于Mysql在Linux或者FreeBSD運(yùn)行的總結(jié):If you don't have a preference, use Linux. You'll be happier. Trust me.
          (2). 可以使用SeLinux提高系統(tǒng)安全性,它的Hardened kernel是專為服務(wù)器優(yōu)化的,這個方面不吃虧
          (3). 我有Gentoo Linux幾年的使用經(jīng)驗;雖然使用FreeBSD又是一個學(xué)習(xí)的機(jī)會,但是在生產(chǎn)環(huán)境中還是不能太自信
          (4). 又突然想起Gentoo以前的領(lǐng)導(dǎo)者是從FreeBSD轉(zhuǎn)過去的,他之前好像也是FreeBSD的活躍開發(fā)者,這些在gentoo的歷史里面可以看到
          另外,F(xiàn)reeBSD要到7.0才會支持Sata硬盤,現(xiàn)在雖然是在一臺廉價PC機(jī)上實行,但是新進(jìn)來的高性能PC很可能就是Sata硬盤。不過可以肯定的是FreeBSD在快速演化,還是值得期待的。之前考慮FreeBSD主要是因為網(wǎng)上宣稱的在高負(fù)載條件下的性能還有TCP/IP協(xié)議棧,這對于反向代理服務(wù)器和防火墻應(yīng)用非常重要;但是卻好像只是和Linux2.4內(nèi)核的比較的,但是2.6內(nèi)核都已經(jīng)穩(wěn)定好幾年了。不管Linux是否真的現(xiàn)在已經(jīng)優(yōu)越了,畢竟我已經(jīng)有Linux多年的經(jīng)驗了,而我也不是要做防火墻產(chǎn)品,所以也不擔(dān)心GPL協(xié)議的問題。還是對FreeBSD存在著向往,但是時間有限,如果真要用到FreeBSD的時候再學(xué)習(xí)吧,學(xué)了不用也會忘。
          ------12日更新------
          不知道我為什么下意識的把Ubuntu排除在外,因為它是二進(jìn)制發(fā)行包,其實所謂可定制性,我只是希望系統(tǒng)上只有我需要開啟的服務(wù),而其他的不該有的東西都不要開,這其實也是可以定制的,把那些服務(wù)關(guān)掉就可以了,而裝上了就裝上了,現(xiàn)在的電腦也沒有到節(jié)省到那些軟件也不能多裝的地步,做系統(tǒng)管理有潔癖可不行,會給自己太多的麻煩。并且所有的服務(wù)器用統(tǒng)一的版本便于維護(hù),服務(wù)器多起來了之后,甚至可以維護(hù)一個本地源,供這些機(jī)器使用。開始準(zhǔn)備實施Gentoo時,突然有了上面的想法。一年多來,Gentoo世界已經(jīng)發(fā)生了很多的變化,在stage里面已經(jīng)正式出現(xiàn)了hardened stage了,于是在網(wǎng)上查了下它的資料,因為如果是服務(wù)器,那就一次性的全部配好,為安全打好基礎(chǔ)。但是從國內(nèi)外論壇上得到的消息,似乎hardened stage比較容易出問題,突出體現(xiàn)在glibc的問題上。根據(jù)之前用Gentoo的經(jīng)驗,在gentoo的維護(hù)中偶爾還是要出點小狀況的,而解決這些狀況很多時候就需要重新編譯,這可能會導(dǎo)致不必要的down機(jī)時間。而glsa似乎用起來也不是怎么爽,而在ubuntu中,可以配置自動更新security軟件倉庫中的軟件包,達(dá)到自動更新的效果。開始有點畏首畏尾Gentoo的安裝和維護(hù)了。在一個企業(yè)里面引入多個linux發(fā)行版不是太明智的行為,不是每個人對系統(tǒng)管理都有著執(zhí)著的熱情,引入復(fù)雜度太大的Linux,不便于后續(xù)的人員接手和培訓(xùn)。這不是大學(xué)里面了,沒有那么多時間去研究,這對于我和別人都一樣,追求時效性才是準(zhǔn)則。之前剛剛用Ubuntu好像是被鐵鏈困住了雙腳,沒有用Gentoo那么自由,而且出了問題也不知道怎么解決,不向Gentoo用個LiveCD啟動機(jī)器就什么都解決了。后來用了Ubuntu的rescue盤之后,其實也就大同小異。啟動機(jī)器,掛載,chroot到根分區(qū)就可以了。ubuntu有現(xiàn)成可用的debian的文檔資源,這些都是一些增強(qiáng)系統(tǒng)管理自信心的東西。現(xiàn)在是沒有太多時間花在操作系統(tǒng)本身的配置上,如果真的有必要了,再換也不遲嗎,所以就也先ubuntu吧。
          ------13日更新----
          跑到機(jī)房去開始裝機(jī)器,還是忍不住想裝Gentoo,這畢竟是個用于防火墻和VPN服務(wù)器的機(jī)器,我想用我熟悉的發(fā)行版本。從網(wǎng)上找到的mirror.pacific.net.au鏡像網(wǎng)站速度還可以,下載平均速度有500k/s,如果再開上parallel-fetch,幾乎就沒有等待下載的情況了。而從stage3裝起,裝服務(wù)器,其實也沒有多少東西需要編譯,很快就完成了。用gentoo,久違的感受,colorful的字符界面,配置文件的vim加亮顯示,很是舒服。不過我仍然傾向于用gentoo的命令行界面,或者像fvwm,flubox等輕型圖形界面環(huán)境,如果要編譯其他的大型軟件,我倒是真的不太愿意。盡管發(fā)現(xiàn)了一個比較快的鏡像,但是在辦公室還是愿意使用Ubuntu,它讓我可以花更多的時間專注在軟件開發(fā)本身而不是開發(fā)環(huán)境上,并且發(fā)行版本之間的差別對于我的影響,現(xiàn)在很小了。不過在筆記本上,還是想裝個gentoo,因為不想讓ubuntu破壞我的MBR,上面有個正版XP的自動恢復(fù)呢,據(jù)說破壞了MBR就無法用F11鍵激活了,我裝gentoo可以改用個grubfordos啟動起來,這是我要的效果。雖然cygwin基本上可以替代Linux的開發(fā)環(huán)境,不過它始終是一個port過來的運(yùn)行在windows內(nèi)核之上unix環(huán)境,涉及到linux內(nèi)核,防火墻等等東西就沒有辦法用了,還有就是really miss gentoo了。gentoo這兩年的變化真是太大了,今天看到的分布式編譯,cccache,并行下載等等特性著實讓我感到落伍了。

          posted @ 2007-12-11 15:28 vulcan 閱讀(347) | 評論 (0)編輯 收藏

          這兩天參加了Amadeus在我們總部的一個關(guān)于新一代旅客服務(wù)系統(tǒng)的Presentation,感覺還不錯,不過我想國內(nèi)航空公司要脫離TravelSky而轉(zhuǎn)而用一個國外公司的產(chǎn)品,并且從座控,訂座,離港全部切換終究有點冒險。這個系統(tǒng)相對于現(xiàn)在TravelSky的Unisys系統(tǒng),主要的改進(jìn)是利用現(xiàn)在的新技術(shù)和能力,把系統(tǒng)遷移到了開放系統(tǒng)(Linux, Unix),并且用戶界面從老的TPF(命令行)方式編成了圖形化的界面。這個系統(tǒng)據(jù)說投資了3億美元進(jìn)行研發(fā),并且現(xiàn)在有兩個大型航空公司已經(jīng)使用了這個系統(tǒng),與幾大航空聯(lián)盟的談判也在進(jìn)行中。其實我倒是希望航信能做得更好吧,我支持民族企業(yè)。不過Amadeus的Altea系統(tǒng)的架構(gòu)比較有意思:現(xiàn)在仍然是關(guān)系數(shù)據(jù)庫和Unisys數(shù)據(jù)庫兼容的模式,但是未來的架構(gòu)是這樣的:底層數(shù)據(jù)庫是用的Unix(Solaris和Hp unix)系統(tǒng)運(yùn)行著Oracle(那邊的專家解釋說現(xiàn)在Linux對Oracle的支持還不及Unix),應(yīng)用層面全部都是Linux,而在用戶界面的程序全部基于Windows開發(fā),把現(xiàn)在三大系統(tǒng)全部用上了。所以他們形容自己的系統(tǒng)為Open System,看來,應(yīng)用Unix和Linux是一個賣點,不過用Linux也是必須的,主機(jī)是IBM設(shè)計的,有1000個cpu core,2TB 內(nèi)存。其他的一些系統(tǒng)參數(shù)都是驚人。這種機(jī)器看來還只有Linux能在上面運(yùn)行吧。我還具體問了一下接口的問題,說是提供了WebService方式公布API,這一點對于我們開發(fā)人員就比較好了,現(xiàn)在航信的數(shù)據(jù)提供給我們,我們要采取PNR文本分析的形式轉(zhuǎn)存到數(shù)據(jù)庫中,我是做過這個工作,我開發(fā)了分析程序,為了盡可能智能化,采用了基于正則表達(dá)式的方法,不過有些
          PNR的格式還不是特別規(guī)整,有點時候就會出錯,雖然情況比較少,不過還是一件比較郁悶的事情。
          posted @ 2007-11-27 19:13 vulcan 閱讀(232) | 評論 (0)編輯 收藏

          僅列出標(biāo)題
          共5頁: 上一頁 1 2 3 4 5 下一頁 
          主站蜘蛛池模板: 绵竹市| 泸水县| 桃江县| 济宁市| 福安市| 奉贤区| 贵州省| 利津县| 久治县| 濉溪县| 武威市| 阳新县| 凤庆县| 宁蒗| 乐平市| 新竹市| 通化市| 儋州市| 杂多县| 临沧市| 信丰县| 临泉县| 洪泽县| 泉州市| 喀喇沁旗| 长汀县| 固原市| 武穴市| 富阳市| 宣武区| 和平县| 井冈山市| 徐水县| 铜梁县| 济阳县| 眉山市| 社会| 夏邑县| 宜宾市| 大荔县| 丰县|