賢仁居 George Gong
          It's never too late to learn
          posts - 32,comments - 16,trackbacks - 0
          http://blog.csdn.net/function413/article/details/8485822

          一、下載所需類包 (可在http://download.csdn.net/detail/function413/4977751中下載tomcat log4j.rar 里面包含以下JAR包)

          1、下載log4j下載1.2以后的版本

          下載地址:http://logging.apache.org/log4j/1.2/download.html

          2、下載tomcat-juli.jartomcat-juli-adapters.jar

          使用LOG4J來接管tomcat6.0.18的日志文件必須要下載兩個(gè)文件:tomcat-juli.jartomcat-juli-adapters.jar

          下載地址為:http://www.apache.org/dist/tomcat/tomcat-6/v6.0.18/bin/extras/ (如果tomcat為其他版本,請下載對應(yīng)版本的類包)

          二、修改相關(guān)配置文件

          1、修改${catalina.home}/conf/context.xml

          修改:<Context >為<Context swallowOutput="true" >只有這樣才能完全的把tomcat的stdout給接管過來。這一步很關(guān)鍵 在官網(wǎng)及網(wǎng)上找了許多資料都沒有提及。

          2、復(fù)制log4j.jar${catalina.home}/lib

          3、復(fù)制tomcat-juli-adapters.jar${catalina.home}/lib

          4、復(fù)制tomcat-juli.jar${catalina.home}/bin下,在該目錄會(huì)存在該文件,覆蓋 即可

          5、建立log4j.properties,并把其放到${catalina.home}/lib

          posted @ 2013-11-21 14:43 George Gong 閱讀(2039) | 評論 (0)編輯 收藏

          在維護(hù)服務(wù)器時(shí)常常需要用到linux Shell命令,將常用的寫在這里備查:

          telnet 10.10.50.122 7070

          nslookup 查看域名解析

          netstat -anp 顯示系統(tǒng)端口使用情況 a表示全部socket n不解析名稱 p顯示PID

          lsof -i :端口 顯示占用該端口的進(jìn)程情況

          last

          history

          scp root@10.10.10.11:/home/asd/we.zip /home/we/ scp文件傳輸

          w 當(dāng)前登錄用戶

          ps -ef|grep java 不解釋!

          查看機(jī)器吞吐量(throughput)

          sudo ifconfig eth0

          iftop 監(jiān)視網(wǎng)卡即時(shí)吞吐量

          iptraf 監(jiān)視網(wǎng)卡即時(shí)吞吐量

          iostat 磁盤吞吐量查看

          iostat 結(jié)果解釋
          * rrqm/s:   每秒進(jìn)行 merge 的讀操作數(shù)目。即 delta(rmerge)/s
          * wrqm/s:   每秒進(jìn)行 merge 的寫操作數(shù)目。即 delta(wmerge)/s
          * r/s:       每秒完成的讀 I/O 設(shè)備次數(shù)。即 delta(rio)/s
          * w/s:       每秒完成的寫 I/O 設(shè)備次數(shù)。即 delta(wio)/s
          * rsec/s:    每秒讀扇區(qū)數(shù)。即 delta(rsect)/s
          * wsec/s:   每秒寫扇區(qū)數(shù)。即 delta(wsect)/s
          * rkB/s:     每秒讀K字節(jié)數(shù)。是 rsect/s 的一半,因?yàn)槊可葏^(qū)大小為512字節(jié)。(需要計(jì)算)
          * wkB/s:     每秒寫K字節(jié)數(shù)。是 wsect/s 的一半。(需要計(jì)算)
          * avgrq-sz: 平均每次設(shè)備I/O操作的數(shù)據(jù)大小 (扇區(qū))。delta(rsect+wsect)/delta(rio+wio)
          * avgqu-sz: 平均I/O隊(duì)列長度。即 delta(aveq)/s/1000 (因?yàn)閍veq的單位為毫秒)。
          * await:     平均每次設(shè)備I/O操作的等待時(shí)間 (毫秒)。即 delta(ruse+wuse)/delta(rio+wio)
          * svctm:    平均每次設(shè)備I/O操作的服務(wù)時(shí)間 (毫秒)。即 delta(use)/delta(rio+wio)
          * %util:    一秒中有百分之多少的時(shí)間用于 I/O 操作,或者說一秒中有多少時(shí)間 I/O 隊(duì)列是非空的。即 delta(use)/s/1000 (因?yàn)閡se的單位為毫秒)
          

          df -m 硬盤使用情況

          free -m 內(nèi)存使用情況

          top 查看CPU使用情況

          關(guān)于 load   average
          一般來說只要每個(gè)CPU的當(dāng)前活動(dòng)進(jìn)程數(shù)不大于3那么系統(tǒng)的性能就是良好的,如果每個(gè)CPU的任務(wù)數(shù)大于5,那么就表示這臺(tái)機(jī)器的性能有嚴(yán)重問題。
          對于上面的例子來說,假設(shè)系統(tǒng)有兩個(gè)CPU,那么其每個(gè)CPU的當(dāng)前任務(wù)數(shù)為:8.13/2=4.065。這表示該系統(tǒng)的性能是可以接受的。

          查看機(jī)器硬件信息

          測試機(jī)器的硬件信息:
          查看CPU信息(型號(hào))
          # cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
          8  Intel(R) Xeon(R) CPU            E5410   @ 2.33GHz
          (看到有8個(gè)邏輯CPU, 也知道了CPU型號(hào))
          # cat /proc/cpuinfo | grep physical | uniq -c
          4 physical id      : 0
          4 physical id      : 1
          (說明實(shí)際上是兩顆4核的CPU)
          # getconf LONG_BIT
          32
          (說明當(dāng)前CPU運(yùn)行在32bit模式下, 但不代表CPU不支持64bit)
          # cat /proc/cpuinfo | grep flags | grep ' lm ' | wc -l
          8
          (結(jié)果大于0, 說明支持64bit計(jì)算. lm指long mode, 支持lm則是64bit)
          再完整看cpu詳細(xì)信息, 不過大部分我們都不關(guān)心而已.
          # dmidecode | grep 'Processor Information'
          查看內(nèi) 存信息
          # cat /proc/meminfo
          # uname -a
          Linux euis1 2.6.9-55.ELsmp #1 SMP Fri Apr 20 17:03:35 EDT 2007 i686 i686 i386 GNU/Linux
          (查看當(dāng)前操作系統(tǒng)內(nèi)核信息)
          # cat /etc/issue | grep Linux
          Red Hat Enterprise Linux AS release 4 (Nahant Update 5)
          (查看當(dāng)前操作系統(tǒng)發(fā)行版信息)
          查看機(jī)器型號(hào)
          # dmidecode | grep "Product Name"
          查看網(wǎng)卡信息
          # dmesg | grep -i eth
          

          du -ms /usr/local/jdk 查看文件夾使用的空間大小

          du -sm * | sort -n 當(dāng)前路徑下各文件夾大小,并排序顯示

          posted @ 2010-10-18 11:40 George Gong 閱讀(479) | 評論 (1)編輯 收藏

          Ubuntu Linux系統(tǒng)環(huán)境變量配置文件介紹在Ubuntu中有如下幾個(gè)文件可以設(shè)置環(huán)境變量

          /etc/profile:在登錄時(shí),操作系統(tǒng)定制用戶環(huán)境時(shí)使用的第一個(gè)文件,此文件為系統(tǒng)的每個(gè)用戶設(shè)置環(huán)境信息,當(dāng)用戶第一次登錄時(shí),該文件被執(zhí)行。

          /etc/environment:在登錄時(shí)操作系統(tǒng)使用的第二個(gè)文件,系統(tǒng)在讀取你自己的 profile前,設(shè)置環(huán)境文件的環(huán)境變量。

          ~/.profile:在登錄時(shí)用到的第三個(gè)文件是.profile文件,每個(gè)用戶都可使用該文件輸入專用于自己使用的shell信息,當(dāng)用戶登錄時(shí),該文件僅僅執(zhí)行一次!默認(rèn)情況下,他設(shè)置一些環(huán)境變量,執(zhí)行用戶的.bashrc文件。

          /etc/bashrc:為每一個(gè)運(yùn)行bash shell的用戶執(zhí)行此文件.當(dāng)bash shell被打開時(shí),該文件被讀取.

          ~/.bashrc:該文件包含專用于你的bash shell的bash信息,當(dāng)?shù)卿洉r(shí)以及每次打開新的shell時(shí),該該文件被讀取。

          使用source命令刷新環(huán)境變量

          posted @ 2010-10-18 11:39 George Gong 閱讀(380) | 評論 (0)編輯 收藏
          原文地址: http://ifelseif.blog.sohu.com/145381162.html

          聽說支持向量機(jī)是比神經(jīng)網(wǎng)絡(luò)還牛X的分類器,我就拿來玩了玩,用國立臺(tái)灣大學(xué)Chih-Chung Chang和Chih-Jen Lin編寫的libsvm函數(shù)庫。國內(nèi)的網(wǎng)站很多帖子都抄來抄去的,犯錯(cuò)bug都一樣。哎,希望此貼可以正本清源。

              首先下載libSVM的最新版本,他們的主頁在此http://www.csie.ntu.edu.tw/~cjlin/libsvm/index.html源碼手冊都有,真是好人啊!手冊寫的清晰明了通俗易懂,盡管是英文的。想快速上手看具體操作步驟的直接翻到appendix吧。

              在linux下部署libSVM是簡單到不能再簡單了,make一下就完事兒了。什么!你沒有g(shù)cc,沒有python,沒有g(shù)nuplot?自己apt-get去吧。

              用windows的童鞋,首先你們要安裝python和gnuplot。python的主頁為http://www.python.org/,安裝程序可以在這里下載。gnuplot的主頁為http://www.gnuplot.info/download.html,安裝程序在這里。python是需要安裝的,gnuplot是綠色軟件找個(gè)地方解壓就行。如果你網(wǎng)速快的話強(qiáng)烈推薦pythonxy這個(gè)東西,python科學(xué)計(jì)算相關(guān)的軟件包基本都包括了,有功夫好好學(xué)吧開源的哦。

              需要手工添加環(huán)境變量,保證python根目錄,gnuplot的bin目錄,libsvm的windows目錄都在path里面,我的電腦上是c:\python26,C:\Python26\gnuplot\bin,c:\Users\gongwei\program\libsvm-2.9\windows\。然后還要改libSVM\tools目錄下的easy.py和grid.py文件,把gnuplot路徑那一項(xiàng)改成gnuplot_exe = r"C:\Python26\gnuplot\bin\pgnuplot.exe"。gnuplot有三個(gè)exe,這里只能用這個(gè)因?yàn)樗梢酝ㄟ^管道輸入數(shù)據(jù),另外兩個(gè)都不行。都弄完之后,嘗試運(yùn)行一下吧:

              python easy.py train.1 test.1

              其中train.1和test.1都是作者提供的測試數(shù)據(jù)。可以在這里下載guide里面的數(shù)據(jù),這里還有更多。

              好啦下面就等著彈窗吧,會(huì)彈出一個(gè)gnuplot的窗口,里面的圖像會(huì)隨著網(wǎng)絡(luò)的訓(xùn)練逐步更新。大功告成!

              libSVM的使用很簡單,會(huì)用python的可以參考easy.py和grid.py寫自己的script。libSVM使用c++編寫,提供java的源碼,還支持R (also Splus), MATLAB, Perl, Ruby, Weka, Common LISP, CLISP, Haskell, LabVIEW的調(diào)用。想用的話基本都有自己適合的環(huán)境。

              最后還是要感謝libSVM的幾位作者們,寫出這么好的軟件。向臺(tái)灣同胞致敬!

          posted @ 2010-09-19 22:25 George Gong 閱讀(887) | 評論 (0)編輯 收藏

          數(shù)學(xué)之美 系列九 -- 如何確定網(wǎng)頁和查詢的相關(guān)性



          [我們已經(jīng)談過了如何自動(dòng)下載網(wǎng)頁如何建立索引如何衡量網(wǎng)頁的質(zhì)量(Page Rank)。我們今天談?wù)勅绾未_定一個(gè)網(wǎng)頁和某個(gè)查詢的相關(guān)性。了解了這四個(gè)方面,一個(gè)有一定編程基礎(chǔ)的讀者應(yīng)該可以寫一個(gè)簡單的搜索引擎了,比如為您所在的學(xué)校或院系建立一個(gè)小的搜索引擎。]

          我們還是看上回的例子,查找關(guān)于“原子能的應(yīng)用”的網(wǎng)頁。我們第一步是在索引中找到包含這三個(gè)詞的網(wǎng)頁(詳見關(guān)于布爾運(yùn)算的系列)。現(xiàn)在任何一個(gè)搜索引擎都包含幾十萬甚至是上百萬個(gè)多少有點(diǎn)關(guān)系的網(wǎng)頁。那么哪個(gè)應(yīng)該排在前面呢?顯然我們應(yīng)該根據(jù)網(wǎng)頁和查詢“原子能的應(yīng)用”的相關(guān)性對這些網(wǎng)頁進(jìn)行排序。因此,這里的關(guān)鍵問題是如何度量網(wǎng)頁和查詢的相關(guān)性。

          我們知道,短語“原子能的應(yīng)用”可以分成三個(gè)關(guān)鍵詞:原子能、的、應(yīng)用。根據(jù)我們的直覺,我們知道,包含這三個(gè)詞多的網(wǎng)頁應(yīng)該比包含它們少的網(wǎng)頁相關(guān)。當(dāng)然,這個(gè)辦法有一個(gè)明顯的漏洞,就是長的網(wǎng)頁比短的網(wǎng)頁占便宜,因?yàn)殚L的網(wǎng)頁總的來講包含的關(guān)鍵詞要多些。因此我們需要根據(jù)網(wǎng)頁的長度,對關(guān)鍵詞的次數(shù)進(jìn)行歸一化,也就是用關(guān)鍵詞的次數(shù)除以網(wǎng)頁的總字?jǐn)?shù)。我們把這個(gè)商稱為“關(guān)鍵詞的頻率”,或者“單文本詞匯頻率”(Term Frequency),比如,在某個(gè)一共有一千詞的網(wǎng)頁中“原子能”、“的”和“應(yīng)用”分別出現(xiàn)了 2 次、35 次 和 5 次,那么它們的詞頻就分別是 0.002、0.035 和 0.005。 我們將這三個(gè)數(shù)相加,其和 0.042 就是相應(yīng)網(wǎng)頁和查詢“原子能的應(yīng)用”
          相關(guān)性的一個(gè)簡單的度量。概括地講,如果一個(gè)查詢包含關(guān)鍵詞 w1,w2,...,wN, 它們在一篇特定網(wǎng)頁中的詞頻分別是: TF1, TF2, ..., TFN。 (TF: term frequency)。 那么,這個(gè)查詢和該網(wǎng)頁的相關(guān)性就是:
          TF1 + TF2 + ... + TFN。

          讀者可能已經(jīng)發(fā)現(xiàn)了又一個(gè)漏洞。在上面的例子中,詞“的”站了總詞頻的 80% 以上,而它對確定網(wǎng)頁的主題幾乎沒有用。我們稱這種詞叫“應(yīng)刪除詞”(Stopwords),也就是說在度量相關(guān)性是不應(yīng)考慮它們的頻率。在漢語中,應(yīng)刪除詞還有“是”、“和”、“中”、“地”、“得”等等幾十個(gè)。忽略這些應(yīng)刪除詞后,上述網(wǎng)頁的相似度就變成了0.007,其中“原子能”貢獻(xiàn)了0.002,“應(yīng)用”貢獻(xiàn)了 0.005。

          細(xì)心的讀者可能還會(huì)發(fā)現(xiàn)另一個(gè)小的漏洞。在漢語中,“應(yīng)用”是個(gè)很通用的詞,而“原子能”是個(gè)很專業(yè)的詞,后者在相關(guān)性排名中比前者重要。因此我們需要給漢語中的每一個(gè)詞給一個(gè)權(quán)重,這個(gè)權(quán)重的設(shè)定必須滿足下面兩個(gè)條件:

          1. 一個(gè)詞預(yù)測主題能力越強(qiáng),權(quán)重就越大,反之,權(quán)重就越小。我們在網(wǎng)頁中看到“原子能”這個(gè)詞,或多或少地能了解網(wǎng)頁的主題。我們看到“應(yīng)用”一次,對主題基本上還是一無所知。因此,“原子能“的權(quán)重就應(yīng)該比應(yīng)用大。

          2. 應(yīng)刪除詞的權(quán)重應(yīng)該是零。

          我們很容易發(fā)現(xiàn),如果一個(gè)關(guān)鍵詞只在很少的網(wǎng)頁中出現(xiàn),我們通過它就容易鎖定搜索目標(biāo),它的權(quán)重也就應(yīng)該大。反之如果一個(gè)詞在大量網(wǎng)頁中出現(xiàn),我們看到它仍然不很清楚要找什么內(nèi)容,因此它應(yīng)該小。概括地講,假定一個(gè)關(guān)鍵詞 w 在 Dw 個(gè)網(wǎng)頁中出現(xiàn)過,那么 Dw 越大,w 的權(quán)重越小,反之亦然。在信息檢索中,使用最多的權(quán)重是“逆文本頻率指數(shù)” (Inverse document frequency 縮寫為IDF),它的公式為log(D/Dw)其中D是全部網(wǎng)頁數(shù)。比如,我們假定中文網(wǎng)頁數(shù)是D=10億,應(yīng)刪除詞“的”在所有的網(wǎng)頁中都出現(xiàn),即Dw=10億,那么它的IDF=log(10億/10億)= log (1) = 0。假如專用詞“原子能”在兩百萬個(gè)網(wǎng)頁中出現(xiàn),即Dw=200萬,則它的權(quán)重IDF=log(500) =6.2。又假定通用詞“應(yīng)用”,出現(xiàn)在五億個(gè)網(wǎng)頁中,它的權(quán)重IDF = log(2)
          則只有 0.7。也就只說,在網(wǎng)頁中找到一個(gè)“原子能”的比配相當(dāng)于找到九個(gè)“應(yīng)用”的匹配。利用 IDF,上述相關(guān)性計(jì)算個(gè)公式就由詞頻的簡單求和變成了加權(quán)求和,即 TF1*IDF1 + TF2*IDF2 +... + TFN*IDFN。在上面的例子中,該網(wǎng)頁和“原子能的應(yīng)用”的相關(guān)性為 0.0161,其中“原子能”貢獻(xiàn)了 0.0126,而“應(yīng)用”只貢獻(xiàn)了0.0035。這個(gè)比例和我們的直覺比較一致了。

          TF/IDF(term frequency/inverse document frequency) 的概念被公認(rèn)為信息檢索中最重要的發(fā)明。在搜索、文獻(xiàn)分類和其他相關(guān)領(lǐng)域有廣泛的應(yīng)用。講起 TF/IDF 的歷史蠻有意思。IDF 的概念最早是劍橋大學(xué)的斯巴克-瓊斯[注:她有兩個(gè)姓] (Karen Sparck Jones)提出來的。斯巴克-瓊斯 1972 年在一篇題為關(guān)鍵詞特殊性的統(tǒng)計(jì)解釋和她在文獻(xiàn)檢索中的應(yīng)用的論文中提出IDF。遺憾的是,她既沒有從理論上解釋為什么權(quán)重IDF 應(yīng)該是對數(shù)函數(shù) log(D/Dw)(而不是其它的函數(shù),比如平方根),也沒有在這個(gè)題目上作進(jìn)一步深入研究,以至于在以后的很多文獻(xiàn)中人們提到 TF/IDF 時(shí)沒有引用她的論文,絕大多數(shù)人甚至不知道斯巴克-瓊斯的貢獻(xiàn)。同年羅賓遜寫了個(gè)兩頁紙的解釋,解釋得很不好。倒是后來康乃爾大學(xué)的薩爾頓(Salton)多次寫文章、寫書討論 TF/IDF 在信息檢索中的用途,加上薩爾頓本人的大名(信息檢索的世界大獎(jiǎng)就是以薩爾頓的名字命名的)。很多人都引用薩爾頓的書,甚至以為這個(gè)信息檢索中最重要的概念是他提出的。當(dāng)然,世界并沒有忘記斯巴克-瓊斯的貢獻(xiàn),2004年,在紀(jì)念文獻(xiàn)學(xué)學(xué)報(bào)創(chuàng)刊 60 周年之際,該學(xué)報(bào)重印了斯巴克-瓊斯的大作。羅賓遜在同期期刊上寫了篇文章,用香農(nóng)的信息論解釋 IDF,這回的解釋是對的,但文章寫的并不好、非常冗長(足足十八頁),把一個(gè)簡單問題搞復(fù)雜了。其實(shí),信息論的學(xué)者們已經(jīng)發(fā)現(xiàn)并指出,其實(shí) IDF 的概念就是一個(gè)特定條件下、關(guān)鍵詞的概率分布的交叉熵(Kullback-Leibler Divergence)(詳見上一系列)。這樣,信息檢索相關(guān)性的度量,又回到了信息論。

          現(xiàn)在的搜索引擎對 TF/IDF 進(jìn)行了不少細(xì)微的優(yōu)化,使得相關(guān)性的度量更加準(zhǔn)確了。當(dāng)然,對有興趣寫一個(gè)搜索引擎的愛好者來講,使用 TF/IDF 就足夠了。 如果我們結(jié)合上網(wǎng)頁排名(Page Rank),那么給定一個(gè)查詢,有關(guān)網(wǎng)頁綜合排名大致由相關(guān)性和網(wǎng)頁排名乘積決定。
          posted @ 2010-09-19 19:45 George Gong 閱讀(228) | 評論 (0)編輯 收藏
          Ubuntu 10.04下默認(rèn)的即時(shí)通訊是Empathy,但Empathy的plugin還不多,它可以通過安裝plugin來獲取Pidgin下的plugin。Pidgin下只需要安裝pidgin-sipe就可以登錄Communicator賬號(hào)。我查了很多資料,最終Empathy沒有弄好,只弄好了pidgin。
          由于Ubuntu 10.04沒有Pidgin,首先安裝Pidgin,然后通過 sudo apt-get install pidgin-sipe命令安裝,注意這個(gè)pidgin-sipe的版本要在1.8.0+,這個(gè)是10.04下的默認(rèn)版本。然后重啟Pidgin后賬號(hào)類型會(huì)多了一項(xiàng)“Office Communicator”,接著輸入你的賬號(hào)就可以了。

          至于Empathy,有人通過pidgin-sipe + telepathy-haze 兩個(gè)plugin配置成功了,不過我沒有成功,以后再說吧:)

          posted @ 2010-05-21 10:05 George Gong 閱讀(892) | 評論 (0)編輯 收藏
          http://persevere.javaeye.com/blog/653716

          這幾天安裝了Ubuntu 10.04,確實(shí)很不錯(cuò)。但一不小心把頂端的面板給刪除了,這下麻煩了。雖然可以通過“新建面板”“添加到面板”一一恢復(fù),但一一查找都很麻煩,有沒有一種辦法可以恢復(fù)默認(rèn)的頂端面板。可以通過以下步驟:

          通過ALT+F2呼出應(yīng)用程序?qū)υ捒颍斎雊nome-terminal打開終端輸入以下命令:
           gconftool --recursive-unset/apps/panel  
             
           rm -rf ~/.gconf/apps/panel  
             
           pkill gnome-panel

          這樣就OK了

          posted @ 2010-05-21 09:45 George Gong 閱讀(693) | 評論 (1)編輯 收藏
          最近開始用eclipse3.5,下載了maven插件m2eclipse,使用后才發(fā)現(xiàn)每次project clean的時(shí)候這個(gè)maven builder都會(huì)自動(dòng)執(zhí)行,這個(gè)很惡心。google了半天也沒找到解決辦法,惡心。
          posted @ 2010-04-30 11:24 George Gong 閱讀(7470) | 評論 (2)編輯 收藏

          系統(tǒng)之前一直用的是maven-artifact-ant-2.0.4-dep.jar,但最近對一些jar包支持不好,運(yùn)行ant腳本出現(xiàn)以下問題:

          [artifact:dependencies] [WARNING] POM for 'ch.qos.logback:logback-classic:pom:0.9.9' is invalid. It will be ignored for artifact resolution. Reason: The POM expression: ${parent.version} could not be evaluated. Reason: ch.qos.logback:logback-classic:jar:${parent.version} references itself.

          這樣的話這個(gè)忽略的jar包就得手動(dòng)copy了,這樣你還得找這個(gè)jar包依賴的其他jar包是不是存在。后來在網(wǎng)上google了一下,發(fā)現(xiàn)現(xiàn)在都用maven-ant-tasks-2.1.0.jar,然后對build.xml稍作改動(dòng),如下即可:
          <?xml version="1.0" encoding="UTF-8"?>
          <project name="hehe" default="maven-jar" xmlns:artifact="urn:maven-artifact-ant">
              
          <property file="build.properties" />
                  
          <target name="maven-jar" description="Use Maven2 to manage jars' dependencies">
                  
          <echo message="deleting old jar .. " />
                  
          <delete dir="${web.dir}/WEB-INF/lib" />
                  
          <copy todir="${web.dir}/WEB-INF/lib">
                      
          <fileset id="runtimeFiles" dir="lib/mylib">
                          
          <include name="**/*.jar" />
                      
          </fileset>
                      
          <mapper type="flatten" />
                  
          </copy>
                  
          <echo message="Use Maven2 to manage jar." />
                  
          <typedef resource="org/apache/maven/artifact/ant/antlib.xml" uri="urn:maven-artifact-ant">
                      
          <classpath>
                          
          <pathelement location="lib/maven-ant-tasks-2.1.0.jar" />
                      
          </classpath>
                  
          </typedef>

                  
          <artifact:pom file="pom.xml" id="my.pom" />

                  
          <artifact:dependencies pathId="dependency.classpath" filesetId="dependency.fileset" usescope="runtime">
                      
          <pom refid="my.pom" />
                  
          </artifact:dependencies>

                  
          <copy todir="${web.dir}/WEB-INF/lib">
                      
          <fileset refid="dependency.fileset" />
                      
          <mapper type="flatten" />
                  
          </copy>
              
          </target>
          </project>
          這樣就OK了
           
          posted @ 2010-04-30 00:12 George Gong 閱讀(2207) | 評論 (0)編輯 收藏

          這兩天調(diào)試一個(gè)asp.net程序,用戶在首頁登錄成功后,系統(tǒng)會(huì)在客戶端添加一個(gè)Cookie,然后重定向到首頁,首頁檢測到這個(gè)Cookie后就屏蔽掉登錄。我在本機(jī)調(diào)試的時(shí)候本能的用localhost,結(jié)果每次都不成功,Cookie不起作用。后來在hosts文件中將127.0.0.1 隨便映射成一個(gè)域名,一試就好了。到現(xiàn)在也不明白這是為什么,莫非是微軟覺得localhost的程序給自己添加Cookie是多此一舉?

          posted @ 2010-01-22 16:31 George Gong 閱讀(386) | 評論 (0)編輯 收藏

          這兩天開始研究一個(gè)韓國人寫的asp.net(C#)程序,好多年沒玩.net了,發(fā)現(xiàn)很生疏。首先要把源代碼在本機(jī)跑起來,安裝VS2005。然后打開網(wǎng)站把項(xiàng)目到進(jìn)去后,啟動(dòng)debug(F5)后出現(xiàn)問題, <add assembly="System.Web.DataVisualization, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />這一行報(bào)錯(cuò),google了一下發(fā)現(xiàn)必須要安裝.net framework 3.5 sp1 ,如果還不行還要安裝MS Chart.exe,看來這個(gè)是圖形報(bào)表需要的東西。

          安裝完成后點(diǎn)擊自動(dòng)調(diào)試模式,還是報(bào)錯(cuò),這次提示web.config里的全局路徑出問題,后來仔細(xì)琢磨了一下發(fā)現(xiàn)VS默認(rèn)啟動(dòng)的Development Server自作聰明的在啟動(dòng)的URL后面加了一個(gè)項(xiàng)目名稱作為子路徑,這個(gè)導(dǎo)致了很多問題,項(xiàng)目里定義的相對路徑找不到,導(dǎo)致圖片、JS、CSS等無法顯示。好多人在罵微軟的這個(gè)stupid。

          google了一下解決方案,如下:點(diǎn)擊VS上面的“工具”--->“外部工具”,然后添加一個(gè)Development Server,自己定義名稱、端口號(hào)、虛擬路徑、物理路徑等。我的位置如下:
          標(biāo)題:Web Server Port:8080
          命令:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\WebDev.WebServer.EXE
          參數(shù):/port:8080 /path:D:\vs_workspace\ibt 這里沒有定義虛擬路徑,即為/
          然后勾選“使用輸出窗口”,這樣就有打印信息了。

          完成后你會(huì)發(fā)現(xiàn)“工具”里多了一個(gè)你定義的“Web Server Port:8080”,點(diǎn)擊一下就啟動(dòng)了。

          好多國內(nèi)的帖子到這里后就完事了,其實(shí)不然。因?yàn)檫@樣的話是解決了端口號(hào)和虛擬路徑的問題,但我發(fā)現(xiàn)這時(shí)候不能debug程序了,斷點(diǎn)沒用。
          國外的帖子找到了解決辦法,原來還差一步,就是替換VS給項(xiàng)目設(shè)置的默認(rèn)Development Server。在“解決方案資源管理區(qū)(solution explore)”里點(diǎn)擊項(xiàng)目工程(project),右鍵點(diǎn)擊并選擇“屬性頁”,選擇左邊的“啟動(dòng)選項(xiàng)”,在“服務(wù)器”里選擇“使用自定義服務(wù)器”,在基URL里填寫“http://localhost:8080/”,這樣就OK了。但跟默認(rèn)有區(qū)別的是,這次VS不管自動(dòng)啟動(dòng)Development Server,需要手動(dòng)啟動(dòng),然后才能點(diǎn)擊“啟動(dòng)調(diào)試(F5)”按鈕

          posted @ 2010-01-22 10:37 George Gong 閱讀(1104) | 評論 (0)編輯 收藏

          由于項(xiàng)目中的小文件太多,都是幾K的小文件,有100多G,所以必須要提升靜態(tài)文件的訪問速度。一開始用Nginx 與 Tomcat做集群,Nginx負(fù)責(zé)靜態(tài)資源的響應(yīng)。Nginx在Linux下跑的很爽,到Windows下就不太好了。Nginx前段時(shí)間推出了Windows版,拿來一試,感覺不太穩(wěn)定。在一個(gè)刀片機(jī)下作測試很好,但弄到正式環(huán)境下就不行了,ext tree顯示不出來,而且要等很久,最后頁面提示:ext無法顯示。最后跟同事商量,覺得還是apache+tomcat在windows下比較穩(wěn)定,轉(zhuǎn)手弄apache+tomcat。

          apache官方?jīng)]有提供win64版本,就找了一個(gè)外國哥們在Vistual Studio 2005 下自己編譯的win64 apache,在測試機(jī)上安裝很輕松,然后布了2個(gè)tomcat,又在apache的mem cache中設(shè)置了3G的內(nèi)存做緩存,測試一切OK。接著弄正式服務(wù)器,第一臺(tái)正式服務(wù)器很順利,幾分鐘就搞定了。第二臺(tái)服務(wù)器就出了問題,apache無法啟動(dòng),提示:“由于應(yīng)用程序配置不正確 應(yīng)用程序未能啟動(dòng)。重新安裝應(yīng)用程序可能會(huì)糾正這個(gè)問題”。然后查看這兩臺(tái)服務(wù)器有何差異,最后發(fā)現(xiàn)第一臺(tái)上有.net framework 2,3,3.5,第二臺(tái)上一個(gè).net framework 都沒有。接著裝.net framework 2.0 service,還是不行。有文章說要安裝 vc redistribute 包,到微軟官方下載安裝,還是不行,郁悶。最后沒辦法,又下載安裝.ner framework 3.0,還是不行,靠!這時(shí)候我都不報(bào)希望了,又下載安裝.net framework 3.5,然后發(fā)現(xiàn)apache 可以了!最后一分鐘搞定第二臺(tái)服務(wù)器的apache+tomcat。

          我的apache+tomcat用的是ajp proxy通信方式,設(shè)置session sticky。

          好了,接下來觀察幾天看看效果如何

          posted @ 2010-01-15 11:28 George Gong 閱讀(2443) | 評論 (2)編輯 收藏

          SkillSoft的Business Skills課程的Objectives數(shù)據(jù)封裝方式與PagePlayer.properties的LMS_AICC_VERSION,LMS_AICC_V2_POST這兩項(xiàng)屬性值有關(guān)。
          LMS_AICC_VERSION值為2.2 or 3.5,默認(rèn)是3.5。當(dāng)LMS_AICC_VERSION=3.5時(shí),Objectives的Score的值以分號(hào)割開,如下:

          [Objectives_status]
          j_id.
          1=LEADA201001005000X020001
          j_status.
          1=c
          j_id.
          17=LEADA201001003000X820001
          j_score.
          17=33;33;-84
          j_id.
          2=LEADA201001002000X020001
          j_status.
          2=c
          j_id.
          16=LEADA201001005000X820001
          j_score.
          16=20;20;-21
          而LMS_AICC_VERSION=2.2時(shí),數(shù)據(jù)以逗號(hào)隔開,如下:
          [Objectives_status]
          j_id.
          1=LEADA201001005000X020001
          j_status.
          1=c
          j_id.
          17=LEADA201001003000X820001
          j_score.
          17=33,33,-84
          j_id.
          2=LEADA201001002000X020001
          j_status.
          2=c
          j_id.
          16=LEADA201001005000X820001
          j_score.
          16=20,20,-21

          LMS_AICC_V2_POST的值為ture or false,默認(rèn)為false。當(dāng)LMS_AICC_V2_POST=false時(shí),每次課程向LMS提交的數(shù)據(jù)都是最新的數(shù)據(jù),如果學(xué)員進(jìn)行了一次測試,課程的putparam提交的數(shù)據(jù)如下:
          [CORE]
          Lesson_Status
          =Incomplete
          Lesson_Location
          =LEADA201001MXX999X810001
          score
          =12
          time
          =00:04:18
          [Core_Lesson]
          20
          [Core_Vendor]
          20 May 2009 07:38:48 GMT,\u9AD8 \u7EA7 \u9886 \u5BFC \u539F \u5219
          [Objectives_status]
          j_id.
          1=LEADA201001005000X020001
          j_status.
          1=c
          j_id.
          17=LEADA201001003000X820001
          j_score.17=55

          j_id.
          2=LEADA201001002000X020001
          j_status.
          2=c
          j_id.
          16=LEADA201001005000X820001
          j_score.16=44

          當(dāng)LMS_AICC_V2_POST=true時(shí),課程向LMS提交的是完整數(shù)據(jù),如下:
          [CORE]
          Lesson_Status
          =Incomplete
          Lesson_Location
          =LEADA201001MXX999X810001
          score
          =12
          time
          =00:04:18
          [Core_Lesson]
          20
          [Core_Vendor]
          20 May 2009 07:38:48 GMT,\u9AD8 \u7EA7 \u9886 \u5BFC \u539F \u5219
          [Objectives_status]
          j_id.
          1=LEADA201001005000X020001
          j_status.
          1=c
          j_id.
          17=LEADA201001003000X820001
          j_score.
          17=55,33,33,-84
          j_id.
          2=LEADA201001002000X020001
          j_status.
          2=c
          j_id.
          16=LEADA201001005000X820001
          j_score.
          16=44,20,20,-21
          也就是課程保留了之前LMS返回給它的數(shù)據(jù),然后把最新的Score分?jǐn)?shù)添加到原來值的前面,至于這些值是用逗號(hào)隔開還是分號(hào)隔開取決于前門的LMS_AICC_VERSION值,值為3.5時(shí)分號(hào)隔開,2.2時(shí)逗號(hào)隔開。

          因?yàn)橄到y(tǒng)要用這些值統(tǒng)計(jì)學(xué)院的每次測試成績,所以會(huì)注意到這些值的封裝方式。如果不需要使用這些值的話,就不用管了,只接簡單的存取就是了
          posted @ 2009-05-20 16:36 George Gong 閱讀(302) | 評論 (0)編輯 收藏
               摘要:   PagePlayer.Properties General SCP Properties PagePlayerProperties.version=7.0.1 ...  閱讀全文
          posted @ 2009-05-20 16:08 George Gong 閱讀(600) | 評論 (0)編輯 收藏

          由于項(xiàng)目中用到,特在此做一筆記:

                 1.Tomcat為6.0.14,解壓版。首先說明一點(diǎn):Tomcat本身是32位的,所以64位操作系統(tǒng)的話要覆蓋兩個(gè)文件。
                     到http://svn.apache.org/viewvc/tomcat/tc6.0.x/tags/TOMCAT_6_0_14/res/procrun/amd64/  下載tomcat6.exe和tomcat6w.exe兩個(gè)文件。

                 2.將上面下載的兩個(gè)文件覆蓋$TOMCAT_HOME/bin下對應(yīng)的文件。

                 3.命令行到$TOMCAT_HOME/bin下,運(yùn)行service install命令。

                 4.修改服務(wù)為自啟動(dòng),OK。


                PS:


                這里有點(diǎn)小問題,系統(tǒng)中用的Java為Oracle jrockit,所以安裝后的路徑同SUN的Java有所不同。而$TOMCAT_HOME/bin下的service.bat顯然是為SUN的Java準(zhǔn)備的,如下:

          rem Set the server jvm from JAVA_HOME
          set PR_JVM=%JAVA_HOME%\jre\bin\server\jvm.dll
          if exist "%PR_JVM%" goto foundJvm
          rem Set the client jvm from JAVA_HOME
          set PR_JVM=%JAVA_HOME%\jre\bin\client\jvm.dll
          if exist "%PR_JVM%" goto foundJvm
          set PR_JVM=auto
          :foundJvm
          echo Using JVM:              %PR_JVM%

              標(biāo)紅的是Sun Java的安裝路徑,而Jrockit為%JAVA_HOME%\jre\bin\jrockit\jvm.dll


              還有一點(diǎn)是:有的帖子說覆蓋文件前要先運(yùn)行tomcat6w.exe記錄下各參數(shù),其實(shí)完全沒必要。運(yùn)行server install命令后參數(shù)會(huì)自動(dòng)添入。
          posted @ 2009-03-31 17:32 George Gong 閱讀(3461) | 評論 (2)編輯 收藏

          1、使用system登錄Oracle,利用dbms_xdb修改端口設(shè)置

          SQL> -- Change the HTTP/WEBDAV port from 8080 to 8081
          SQL> call dbms_xdb.cfg_update(updateXML(dbms_xdb.cfg_get() , '/xdbconfig/sysconfig/protocolconfig/httpconfig/http-port/text()', 8081));


          Call completed.
          posted @ 2008-11-10 10:03 George Gong 閱讀(512) | 評論 (0)編輯 收藏
          鏈接為:http://www.zw1840.com/oracle/translation/concepts/index.htm

          收藏之
          posted @ 2008-01-30 17:39 George Gong 閱讀(424) | 評論 (0)編輯 收藏

          1.安裝AS4
              
              這個(gè)不多說,安裝過程沒什么難度。

          2.安裝Oracle10g

              AS4下安裝Oracle10g的文章一搜一堆,都是那幾個(gè)步驟:
              
              1、檢查oracle所需的RPM包是否齊全:

          gcc-3.2.3-34
          gcc-c++-
          3.2.3-34
          glibc-
          2.3.2-95.20
          make-
          3.79.1
          openmotif21-
          2.1.30-8
          setarch-
          1.3-1
          compat-db-
          4.0.14-5
          compat-gcc-
          7.3-2.96.128
          compat-gcc-c++-
          7.3-2.96.128
          compat-libstdc++-
          7.3-2.96.128
          compat-libstdc++-devel-
          7.3-2.96.128

              版本問題不大,大于等于都可以,沒有的在安裝盤或者Down下來裝上。

          2、建立oracle用戶及oinstall,dba用戶組:

          # /usr/sbin/groupadd oinstall /創(chuàng)建組用戶/
          # /usr/sbin/groupadd dba /創(chuàng)建組用戶/
          # /usr/sbin/useradd -g oinstall -G dba oracle /創(chuàng)建用戶,并設(shè)定用戶組/
          # passwd oracle /設(shè)定oracle用戶的密碼/

          3、修改oracle用戶的.bash_profile文件,將oracle相關(guān)的環(huán)境變量加進(jìn)去:

          ORACLE_BASE=/oracle/app
          ORACLE_HOME
          =$ORACLE_BASE/product/10.1.0/db_1
          ORACLE_SID
          =demo1
          PATH
          =$PATH:$HOME/bin:$ORACLE_HOME/bin
          LD_LIBRARY_PATH
          =$ORACLE_HOME/lib:/usr/lib
          export ORACLE_BASE ORACLE_HOME ORACLE_SID PATH LD_LIBRARY_PATH


          4、修改系統(tǒng)屬性,在/etc/sysctl.conf文件中加入kernel相關(guān)的屬性配置:

          kernel.shmall = 2097152
          kernel.shmmax 
          = 2147483648
          kernel.shmmni 
          = 4096
          kernel.sem 
          = 250 32000 100 128
          fs.file-max 
          = 65536
          net.ipv4.ip_local_port_range 
          = 1024 65000
          net.core.rmem_default 
          = 262144
          net.core.rmem_max 
          = 262144
          net.core.wmem_default 
          = 262144
          net.core.wmem_max 
          = 262144

          這里重要的是kernel.shmmax,這里設(shè)置的值為2G,這個(gè)值跟oracle的SGA有很大關(guān)系,很容易出錯(cuò)。有的文章說這個(gè)值應(yīng)該設(shè)置成內(nèi)存的一半。另一個(gè)是kernel.shmall,有文章說這個(gè)值應(yīng)該是kernel.shmmax除以系統(tǒng)的PAGE_SIDE得到的商。

          5、根據(jù)步驟3里的設(shè)置創(chuàng)建相關(guān)目錄。

          6、修改redhat發(fā)行標(biāo)識(shí):
          由于oracle10g具有系統(tǒng)安裝監(jiān)測,當(dāng)檢測到的系統(tǒng)不符合安裝配置規(guī)定的要求時(shí),安裝不能正常進(jìn)行,故要更改操作系統(tǒng)的版本標(biāo)識(shí),這一操作不會(huì)影響任何系統(tǒng)問題,可以在安裝結(jié)束后恢復(fù)為正常狀態(tài)。
          操作如下:
          備份/etc/redhat-release文件為/etc/redhat-release.bak
          以root權(quán)限修改/etc/redhat-release文件
          將文件的內(nèi)容Red Hat Enterprise Linux AS release 4 (Nahant)
          修改為Red Hat Enterprise Linux AS release 3 (Taroon)
          用于滿足 Disk1/install/oraparam.ini的檢查要求

          7、開始安裝
          這里可能會(huì)遇到一些問題,比如X-Windows啟動(dòng)不起來,這時(shí)候需要運(yùn)行命令:xhost+。如果IP是DHCP的話可能還需要修改local.localdomian的值。
          運(yùn)行oracle安裝盤里的runInstaller會(huì)出現(xiàn)安裝頁面,如果是亂碼的話還要設(shè)置系統(tǒng)的字符集。
          需要運(yùn)行orainstRoot.sh命令。
          接下來oracle要驗(yàn)證安裝需要的RPM包是否齊全,有的高級版本可能檢驗(yàn)不出來。
          安裝最后還要執(zhí)行root.sh命令。

          8、DBCA建庫問題
          這個(gè)問題因機(jī)器而異,在我的機(jī)器上出了問題,害我折騰了兩三天。在建表的時(shí)候,最后一步有SGA的設(shè)置,默認(rèn)選的是內(nèi)存的40%。我的機(jī)器的內(nèi)存是8G,40%是3G多,這樣就出問題了,開始建表操作后2%進(jìn)度的時(shí)候報(bào)ORA-27123錯(cuò)誤,說是sharedmomery問題,一開始弄的我一頭霧水,找不到北。有的文章提到32位的操作系統(tǒng)及Oracle,SGA應(yīng)該不高于1.7G,這是32位系統(tǒng)的上限。后來我把SGA調(diào)到小于1.7G就OK了。后來我試著更改kernel.shmmax的值,當(dāng)改為4G后再運(yùn)行DBCA建庫,會(huì)報(bào)ORA-27101(可能是這個(gè)號(hào)),out of memory的問題,內(nèi)存溢出。有文章說到應(yīng)該改limits.conf設(shè)置,去掉限制。但對此我還沒有進(jìn)行嘗試。

          9、Oracle的自啟動(dòng)
          在這個(gè)問題上我花費(fèi)了不少時(shí)間,一開始在/etc/init.d/目錄下建dbora啟動(dòng)腳本的時(shí)候有問題,系統(tǒng)重啟的時(shí)候一會(huì)執(zhí)行一會(huì)不執(zhí)行。后來根據(jù)別的文章采用令一種辦法:

          root 登錄,在  /etc/rc.d/init.d 下創(chuàng)建名為dbora,編輯增加以下內(nèi)容

          =================================================


          #!/bin/bash
          #參考http://staff.in2.hr/denis/oracle/10g1install_fedora3_en.html#n4_4
          # chkconfig: 
          35 95 1
          # description: init script to start/stop oracle database 10g
          , TNS listener, EMS
          #

          # match these values to your environment:
          export ORACLE_BASE
          =/u01/app/oracle
          export ORACLE_HOME
          =$ORACLE_BASE/10.2.0/db_1
          export ORACLE_SID
          =dssdb
          export PATH
          =/home/oracle/bin:$ORACLE_HOME/bin:$PATH
          export ORACLE_USER
          =oracle

          # see how we are called:
          case $
          1 in
              start)
              su - 
          "$ORACLE_USER"<<EOO
              dbstart
          EOS
              emctl start dbconsole
          EOO
              
          ;;

              stop)
              su - 
          "$ORACLE_USER"<<EOO
              dbshut
          EOS
              emctl stop dbconsole
          EOO
              
          ;;

              *)
              echo 
          "Usage: $0 {start|stop}"
              
          ;;
          esac


          ==========================

          打開終端執(zhí)行:
          chown oracle.oinstall /etc/rc.d/init.d/dbora
          chmod 
          755 /etc/rc.d/init.d/dbora

          使用chkconfig 設(shè)置運(yùn)行權(quán)限
          chkconfig dbora reset

          檢查
          chkconfig --list dbora
          結(jié)果如下:
          ora10            
          0:off   1:off   2:off    3:on    4:off    5:on    6:off

          這時(shí)你可以試試手動(dòng)啟動(dòng)及關(guān)閉oracle服務(wù):
          service dbora start
          service dbora stop

          總結(jié):
          現(xiàn)在的服務(wù)器配置越來越高,我的這臺(tái)機(jī)器是dell2950,4核CPU×2,8G內(nèi)存,64位。因?yàn)闆]有64位的redhat系統(tǒng)盤,只好操作系統(tǒng)及oracle都裝的32位的,這點(diǎn)很不爽。所以64位的硬件最好還是裝64位的系統(tǒng)及軟件,否則硬件上會(huì)有限制,不能充分利用。

          posted @ 2008-01-26 17:38 George Gong 閱讀(1895) | 評論 (1)編輯 收藏

          Oracle Server - Enterprise Edition - Version: 9.2.0.1 to 10.2.0.3
          Linux x86

          Symptoms

          ORA-27102, Out of memory error


          Cause

          For 32 bit system running smp kernel, we cannot have SGA > 1.7 GB directly. This is because of
          limitation of 32 bit systems of not being able to address memory > 4GB directly by a user process.
          If SGA is kept higher than 1.7 GB, it will results in ORA 27102 errors.

          While invoking dbca or creating starter database, by default it takes 40% of memory for SGA.
          Hence the size can accidentally exceed 1.7 GB




          Solution

          The workaround is to create a new database, and specify the size of SGA approximate to be 1.5 to
          1.7 GB.


          References

          Note 260152.1 - Summary About the Large SGA & Address Space on RH Linux

          Errors

          ORA-27102 out of memory

          posted @ 2008-01-26 15:17 George Gong 閱讀(1356) | 評論 (0)編輯 收藏
          主站蜘蛛池模板: 江油市| 泗水县| 西乌珠穆沁旗| 乌拉特中旗| 大同市| 雷波县| 德州市| 枣强县| 浪卡子县| 肇州县| 大渡口区| 苗栗市| 乾安县| 丰城市| 莱西市| 台州市| 安庆市| 芜湖市| 台安县| 太保市| 革吉县| 开平市| 光山县| 江都市| 吴忠市| 武定县| 河源市| 富锦市| 淳化县| 赣州市| 永平县| 张家界市| 合肥市| 清水河县| 曲靖市| 淳安县| 卢氏县| 柳江县| 亚东县| 彭阳县| 柯坪县|