<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    junctioner

    2005年12月28日

    序:給自己找點(diǎn)事做

    時(shí)間和日子在無知無覺中過去,問自己收獲了什么?

    每天無所事事。


    列個(gè)標(biāo)題,挖個(gè)坑,希望每天能來挑一點(diǎn)土。

    《解讀eclipse_3.50_galileo 源碼》

    從第一次使用eclipse(大概是03年的事,那時(shí)比較好用的是2.1版還是1.4版已記不清了)就想看看這么巧妙的一個(gè)玩意兒是怎么實(shí)現(xiàn)的,一直懶散無度,從未下手。

    這段時(shí)間用SWT做個(gè)小工具,是邊找邊抄,為什么要那么寫,不知道--真是有違一慣的作風(fēng)。

    每天下班后,都不是為什么奔忙著,網(wǎng)頁?網(wǎng)游?都不知道自己看了些什么,玩了些什么。

    eclipse 的jar很多,核心的是core.runtime和osgi(早些版本里,是沒有osgi的),core.runtime比較小,就幾個(gè)類,先攻擊小的少的--毛主席真是偉大的軍事家呀。

    敬禮,睡覺去。

    posted @ 2009-09-16 22:17 junctioner 閱讀(235) | 評(píng)論 (0)編輯 收藏

    一窮二白學(xué)習(xí)C語言(1)

    前言
      一直想學(xué)習(xí)C,在剛知道有計(jì)算機(jī)的時(shí)候就想學(xué)習(xí)C,上學(xué)時(shí),偷上計(jì)算機(jī)專業(yè)的課,學(xué)了半年Turbo C,學(xué)到指針時(shí),暈了,也就沒有下文。工作之后,時(shí)有心血來潮之時(shí),但還是沒怎么學(xué)習(xí),Java還是比較簡(jiǎn)單,Java幾乎占據(jù)了工作全部,更少有學(xué)習(xí)C了。用Java,研究到Java的核心,發(fā)覺還是得學(xué)C,學(xué)呀,學(xué)吧。
      今天也是一時(shí)的心血來潮了,趁著有股勁,開始動(dòng)手,記錄一下,以期待和方便下次來潮。

      寫出的代碼,得編譯才可以運(yùn)行,這個(gè)編譯環(huán)境,得先搭起來。VC、Visual Studio,都微軟的東西,有點(diǎn)抵觸,也有些大,不安裝了,手工配一套環(huán)境吧。
      網(wǎng)上搜了一下,Windows系統(tǒng)配C的編譯環(huán)境,得要MinGW或者cygWin,以前都下載過,但一直不知道它們本身是個(gè)什么東西,再查,知道大概:二者均基于GCC(GNU Compiler Collection -格努編譯套件),再加一些基本的類庫(kù)。去各自的官網(wǎng)分別下載安裝,感受:cygWin更象是一個(gè)linux的模擬器,把linux環(huán)境下的GCC給模擬出來,其它的就都一樣需要基本的編譯器、類庫(kù),其它的如make工具。使用的時(shí)候,個(gè)人取向選擇minGW,在環(huán)境變量中指向{$minGW}\bin,gcc和make就可以在cmd中運(yùn)行了。
      寫個(gè)簡(jiǎn)單的hello world源程序,gcc一把,生產(chǎn)可執(zhí)行文件,運(yùn)行,結(jié)果出來,OK!

      注,下載minGW時(shí),我選擇了自動(dòng)安裝下載,一個(gè)個(gè)的下載,點(diǎn)來點(diǎn)去,累的慌。
    單獨(dú)下載minGW,要如下幾個(gè)包,再分別解開放在同一目錄中。
    gcc-core
    C語言編譯器
    gcc-c++
    C++語言編譯器
    mingw-runtime
    MinGW的運(yùn)行時(shí)庫(kù)(這個(gè)必須安裝)

    win32api

    win32API函數(shù)頭文件和連接庫(kù)

    binutils

    MinGW的匯編器和連接器等基礎(chǔ)工具

    gdb

    MinGW中的調(diào)試工具
    mingw32-make
    Make工具,用以更好的管理你的項(xiàng)目
    make解后,沒有通常的make.exe,只有一個(gè)mingw32-make.exe文件,其實(shí),把這個(gè)文件改名為make.exe就行。

    posted @ 2008-12-22 15:53 junctioner 閱讀(1701) | 評(píng)論 (6)編輯 收藏

    年跡

    1978:第一個(gè)關(guān)鍵的年份
    1988:雖然是第一個(gè)十年,但十歲的生日沒多少印象了,更多的是開始注意的第一個(gè)年份。
    1993:初中結(jié)束了,
    1997:高中結(jié)束了,
    2000/06/30:大學(xué)畢業(yè)了,世紀(jì)之交呀!
    2000/08/03:子身跑到汕頭的一個(gè)小鎮(zhèn)開始第一份工作,真正的人生地不熟。到目的地時(shí),身上只有20塊錢了,還是年青的老板給我付的“摩的”費(fèi)。
    2001/11/03:混到一份跟自己所學(xué)專業(yè),所做的工作一點(diǎn)也不相關(guān)的工作,毅然一個(gè)人跑到北京。首都呀!當(dāng)時(shí)天很冷,比我想象的要冷,下車后把能穿的都穿上,不知象什么熊。打22塊錢的車找到公司,競(jìng)?cè)贿€沒到上班時(shí)間。
    2004/06/xx:一個(gè)傷感的月份,也注定要離開這個(gè)做了好幾年有公司。
    2004/08/04:換了一個(gè)比較遠(yuǎn)的公司,在朝陽,自己租住在西直門。
    2005/02/28:一個(gè)沒有29日的月份,還沒開始工作,就沒有選擇的離開了。
    2005/07/03:
    2006/07/03:換了一份工作,不知什么感受。

    posted @ 2007-06-19 16:35 junctioner 閱讀(273) | 評(píng)論 (0)編輯 收藏

    Velocity之首次研究

        與Velocity的第一次見面,是03年,有個(gè)新同事推薦使用,因當(dāng)時(shí)我在做別的項(xiàng)目,也沒怎么仔細(xì)了解,簡(jiǎn)單的知曉類似如模板一類的東西。之后有過幾次接觸,但,都沒花時(shí)間仔細(xì)看,前段時(shí)間,幫朋友做一個(gè)小東西,覺得用個(gè)模板做,會(huì)省很多事,想到Velocity。東西很小,做完了都沒時(shí)間看Velocity,今天正好有時(shí)間,研究研究。
        Velocity是apache下的一個(gè)開源項(xiàng)目,其網(wǎng)址:http://velocity.apache.org/;下載地址:http://velocity.apache.org/download.cgi,可直接下載源碼,也可通過SVN獲取源碼。
        在eclipse中創(chuàng)建一個(gè)web應(yīng)用工程,把Velocity的源碼拷到j(luò)ava資源目錄下,自動(dòng)編譯后,報(bào)幾個(gè)錯(cuò),拷貝下載的Velocity源碼lib目錄下的commons-collections-3.1.jar、oro-2.0.8.jar、commons-lang-2.1.jar這個(gè)三類包到web應(yīng)用工程的lib目錄下即可。
        準(zhǔn)備就緒,就寫個(gè)例子跑跑試試。寫一個(gè)hello.vm的模板文件,創(chuàng)建一個(gè)對(duì)應(yīng)的Servlet,就可以運(yùn)行了。兩文件源碼貼出如下:
        hello.vm
    <html>
        
    <body>
        #set($greet = "你好哇!")
            Hello!$name, $greet
        
    </body>
    </html>
        HelloServlet.java
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.util.Hashtable;
    import java.util.Properties;

    import javax.servlet.ServletConfig;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;

    import org.apache.velocity.Template;
    import org.apache.velocity.app.Velocity;
    import org.apache.velocity.context.Context;
    import org.apache.velocity.servlet.VelocityServlet;

    public class HelloServlet extends VelocityServlet {

        
    protected Properties loadConfiguration(ServletConfig config)
                
    throws IOException, FileNotFoundException {

            Properties p 
    = new Properties();

            String path 
    = config.getServletContext().getRealPath("/");

            
    if (path == null) {
                path 
    = "/";
            }

            p.setProperty(Velocity.FILE_RESOURCE_LOADER_PATH, path);
            p.setProperty(
    "runtime.log", path + "velocity.log");
            p.setProperty(Velocity.INPUT_ENCODING, 
    "GBK");
            p.setProperty(Velocity.OUTPUT_ENCODING, 
    "GBK");
            
    return p;
        }

        
    public Template handleRequest(HttpServletRequest request,
                HttpServletResponse response, Context ctx) {
            Template template 
    = null;
            
    try {
                ctx.put(
    "name","Velocity");
                template 
    = Velocity.getTemplate("/hello.vm");
            } 
    catch (Exception e) {
                e.printStackTrace();
            }
            
    return template;
        }
    }
        創(chuàng)建servelt要注意的幾個(gè)地方。
        1、新建的Servlet要擴(kuò)展Velocity的VelocityServlet
        2、在servlet中要實(shí)現(xiàn) public Template handleRequest(HttpServletRequest request,HttpServletResponse response, Context ctx)
           A)把要返回到頁面上的數(shù)據(jù)放到context中對(duì)應(yīng)到指定鍵值(鍵值名為對(duì)應(yīng)模板中定義的變量名)
           B)引入指定模板文件
        3、導(dǎo)入配置文件的方法protected Properties loadConfiguration(ServletConfig config),是否實(shí)現(xiàn),是可選的 ,其作用在后面說明。

    發(fā)布運(yùn)行后,訪問http://localhost:8080/vt/HelloServelt,就可看到結(jié)果了。

    運(yùn)行起來,看到結(jié)果,是覺得很簡(jiǎn)單,其運(yùn)行過程,就要跟蹤看源碼才能知道了。

        看源碼,先看的,肯定是VelocityServlet.java。發(fā)現(xiàn)源碼注釋中,這個(gè)類已不推薦使用,推薦使用Velocity的一個(gè)子項(xiàng)目tool中的VelocityViewServlet.java,我沒有當(dāng)tool子項(xiàng)目,就先看這個(gè)“過時(shí)的”實(shí)現(xiàn)。
         VelocityServlet.java,擴(kuò)展了HttpServlet,實(shí)現(xiàn)了doGet、doPost、init基本方法,前兩個(gè)方法都直接調(diào)用新實(shí)現(xiàn)的doRequest方法,這些都是很常規(guī)的操作。
        doRequest方法做如下幾件事:創(chuàng)建上下文、設(shè)置響應(yīng)內(nèi)容文件類型、獲取模板(調(diào)用每個(gè)請(qǐng)求中的具體實(shí)現(xiàn))、合并數(shù)據(jù)做出響應(yīng)、出錯(cuò)處理及資源清理。看到這兒,整個(gè)請(qǐng)求和響應(yīng)過程很清晰,并沒什么特別的處理。
        接下來,看看它的初始化做了些什么事。就做了三件事,超類初始化、自己的初始化、緩存內(nèi)容類型數(shù)據(jù)。自己的初始化,也就是(i)導(dǎo)入配置信息,(ii)根據(jù)配置信息做初始化設(shè)置。導(dǎo)入配置信息,是根據(jù)指定的幾個(gè)地方,獲取配置數(shù)據(jù)(在提供的樣例中,重載了它的獲取配置數(shù)據(jù)的方法,自己靈活的寫入一些配置信息);根據(jù)配置信息做初始化的工作,應(yīng)用單例設(shè)計(jì)模式,保證初始化工作的處理唯一。
        VelocityServlet自已的初始化,調(diào)用另一個(gè)類org.apache.velocity.app.Velocity的init( Properties p )方法,就看看Velocity里做了些什么。Velocity里全是靜態(tài)方法。主要有如下幾個(gè)方法:
        1、初始化;2、預(yù)演傳入的數(shù)據(jù)(發(fā)現(xiàn)在應(yīng)用中沒有使用,只在單元測(cè)試代碼中引用到);3、合并數(shù)據(jù)和模板;4、設(shè)置/獲取屬性;5、操作信息提示(不過,都不推薦使用了),整個(gè)的看下來,有兩點(diǎn):1、主要的還是初始化和數(shù)據(jù)合并了;2、這個(gè)類只是一個(gè)中轉(zhuǎn)類,所有的方法,最終都是調(diào)另一個(gè)類org.apache.velocity.runtime.RuntimeSingleton的方法。
        打開RuntimeSingleton的代碼,看一看,發(fā)現(xiàn)它同Velocity類差不多,類本身不做實(shí)際的處理操作。它與Velocity不同的是,它是申明一個(gè)靜態(tài)的實(shí)例,再調(diào)用這個(gè)實(shí)例,個(gè)別地方(init())加了同步控制。如此處理體現(xiàn)它這個(gè)類的名字--單例,核心的還是這個(gè)靜態(tài)實(shí)例org.apache.velocity.runtime.RuntimeInstance。
        到RuntimeInstance,就開始接觸到Velocity的處理核心了。

        寫到這兒,突然沒有寫下去的沖動(dòng)了,暫切休息一下。
       
        抽時(shí)間看了一下Velocity子項(xiàng)目tool下的VelocityViewServlet的源碼,比VelocityServlet要實(shí)現(xiàn)的好多了,與struct接合的比較好。
        Velocity,不僅僅適合于web應(yīng)用,還可以作生成SQL、XML的模板,內(nèi)容比較多,待一一挖掘。

    posted @ 2007-05-30 15:49 junctioner 閱讀(2913) | 評(píng)論 (3)編輯 收藏

    開源需要一個(gè)良好的商業(yè)模式

    在網(wǎng)上看到“蓋茨北大演講遭開源人士抗議”一事,對(duì)開源兄的行為,我選擇不置可否,但對(duì)軟件而言,我選擇開源。
    現(xiàn)在的局面是,商業(yè)化的軟件比開源的軟件,要活地滋潤(rùn)、舒展多了,所以也會(huì)發(fā)生這次事件。

    為什么會(huì)出面這種局面?為什么需要開源?在這里我不闡述自己的觀點(diǎn)--持有同感的人都有自己的想法。

    開源如果想要活得不那么艱難,我想:需要一個(gè)良好的商業(yè)模式支持。
    開源不是免費(fèi)!
    開源要生存發(fā)展,也需要營(yíng)養(yǎng)供應(yīng),不能僅靠一部分懷開源激情的人或者組織無償奉獻(xiàn)能支撐起來的。
    linux、jboss的生存模式算是比較成功的,但還不能夠同商業(yè)化軟件相比較,還需要更充足的營(yíng)養(yǎng)源。
    這二者的模式也是一定范圍內(nèi)有效,不能做到推而廣之。

    開源軟件生存模式的探索之路還很廣,還很遠(yuǎn),需要有志之士共同努力。

    posted @ 2007-04-24 10:03 junctioner 閱讀(997) | 評(píng)論 (0)編輯 收藏

    在eclipse 3.3m6發(fā)布之際的感慨

         摘要:   閱讀全文

    posted @ 2007-03-28 13:20 junctioner 閱讀(2972) | 評(píng)論 (9)編輯 收藏

    再次開始centric crm研究

    上次看centric crm,是一年多前的事了,這一年中,忙忙碌碌的,都不知道做了些什么,但還是一直關(guān)注crm的相關(guān)信息。
    年初,有個(gè)朋友需要一套CRM軟件,我就給他推薦centric crm,但他不懂技術(shù),希望我?guī)退愀悖@就應(yīng)了下來,又一次開始認(rèn)真的看centric crm。
    [溫故而知新] 看以前貼的關(guān)于centric crm的blog,心有慚愧,希望產(chǎn)生誤導(dǎo)的影響不會(huì)很大。

    今天作一些更正,算是補(bǔ)償。
    1、獲取centric crm源碼,得先注冊(cè),注冊(cè)地址:http://www.centriccrm.com/Register.do
    ?  先輸入你的郵箱地址(登錄用這個(gè));
    ?  個(gè)人名稱可隨便填寫;
    ?  注冊(cè)成功后,密碼會(huì)發(fā)送到你郵箱中,

    2、官方用SubVersion管理centic crm的源碼,可以當(dāng)一個(gè)subverion的客戶端,指定到要下載版本的鏈接,   輸入注冊(cè)的郵箱和密碼,就可以獲取源碼。
      現(xiàn)在有4.0和4.1兩個(gè)版本,subverion鏈接分別如下,   
      4.1源碼:https://svn.centricsuite.com/webapp/branches/branch-41   
      4.0源碼:https://svn.centricsuite.com/webapp/tags/rel-200611151353-402   

      我使用eclipse,裝了個(gè)SVN插件,配好后,直接check out成eclipse的項(xiàng)目。   
      SVN eclipse plugin是subclipse,插件獲取網(wǎng)站:http://subclipse.tigris.org/update_1.2.x

    3、源碼獲取下來目錄如下圖
    centric crm源文件目錄結(jié)構(gòu)

    [源碼check out到eclipse后,把整個(gè)項(xiàng)目編碼方式改為UTF-8,因源文件注釋中有些時(shí)間戳是中文簡(jiǎn)體字,不設(shè)成UTF-8,就顯示為亂碼,看起來沒什么大礙,但若修改源文件再保存就會(huì)彈出編碼格式不正確錯(cuò)誤信息]
    bin:暫沒看這個(gè)目錄中的內(nèi)容
    doc:基本文件目錄
    ??? Binary EULA.rtf:版權(quán)申明的文件;
    ??? CRM Installation and Setup.pdf:安裝配置文件,描述的比較簡(jiǎn)單;
    ??? db-schema.html:庫(kù)表設(shè)計(jì)說明文件,了解centric CRM表結(jié)構(gòu)這個(gè)文件最佳參考資料
    lib:項(xiàng)目需要的jar文件目錄
    pref:特定情況下需要的配置文件目錄
    src:源碼基本目錄
    ??? src目錄內(nèi)有下面四個(gè)主要目錄:
    ??? java:java源文件目錄
    ??? web:web展示源文件目錄
    ??? sql:庫(kù)表腳本文件目錄
    ??? testcases:單元測(cè)試文件目錄

    ??? src目錄內(nèi)有下面四個(gè)主要文件:
    ??? build.xml:項(xiàng)目編譯、發(fā)布的ant配置文件
    ??? home.properties.example:build.xml的輔助文件樣例,定義一些基本路徑信息,如:服務(wù)發(fā)布目錄
    ??? master.properties:build.xml的輔助文件,定義系統(tǒng)的一些屬性配置
    ??? README.txt:比較詳細(xì)的安裝配置文件(我就是看這個(gè)文件進(jìn)行安裝配置的,有時(shí)間可以把安翻譯成中文)
    4、開始安裝配置
    ??? 1)安裝需求Java JDK,就不用說了,1.4以上都可以,1.4以下行不行,我也沒試,有興趣的朋友可試試,測(cè)試結(jié)果能告之當(dāng)是感激了。我裝的是JDK 5.0。
    ??? 2)應(yīng)用服務(wù)用tomcat 5.0,5.5都可以(不過tomcat5.5得在JDK5.0上才能運(yùn)行起來),Jboss、Weblogic、WebSphere、Resin也可以運(yùn)行。我用Tomcat 5.5.3。
    ??? 3)數(shù)據(jù)庫(kù)支持DB、MSSQL、MySQL、Oracle等,具體信息可看README.txt。我用的是MySQL 5.0.21。驅(qū)動(dòng)jar是MySQL官網(wǎng)下載的 mysql-connector-java-5.0.4-bin.jar。
    ??? 4)還需要有ant工具,申明是要1.6的,我用eclipse自帶的1.6.5。
    ??? 5)centric CRM中用到WebServices,可去下載一個(gè),
    ??? 下載地址:http://apache.downlod.in/ws/axis/1_4/axis-src-1_4.zip。
    ??? 解開zip包,把webapp下面的axis目錄拷貝到$tomcat/webapps/目錄下。

    ??? 準(zhǔn)備好上幾步要求的,可以開始配置build.xml運(yùn)行的兩個(gè)屬性文件。
    ??? 復(fù)制home.properties.example文件為 home.properties,相關(guān)屬性做如下修改:
    ##?The?following?properties?can?be?set?instead?of?using?environment?variables

    ##?Declare?the?webapp?server's?directory?to?compile?using?web?app?server?libraries
    ##?based?on?the?webapp?type?configured?in?build.properties
    ## 設(shè)置Tomcat安裝路徑
    CATALINA_HOME=D:/java/tomcat5.5.3
    #GERONIMO_HOME=/path/to/geronimo?or?websphere?ce
    #JBOSS_HOME=/path/to/jboss
    #WEBLOGIC_HOME=/path/to/weblogic
    #WEBSPHERE_HOME=/path/to/websphere

    ##?CENTRIC_HOME?can?be?used?to?compile?directly?to?the?webapp's?deployment
    ##?directory?(for?development),?or?to?any?directory?for?later?generating?a?.war
    ## 設(shè)置centric CRM 發(fā)布到tomcat中的路徑
    CENTRIC_HOME=D:/java/tomcat5.5.3/webapps/centric
    #CENTRIC_HOME=/path/to/weblogic/domain/autodeploy/directory

    ##?At?times,?scripts?will?need?to?install?or?upgrade?fileLibrary?documents?when
    ##?deploying?from?source
    ## 設(shè)置項(xiàng)目中配置文件存放目錄
    CENTRIC_FILELIBRARY=D:/Project.java/Centric?CRM?4.1/fileLibrary
    ##?To?skip?web?based?GUI?the?fileLibrary?must?be?in?the?WEB-INF?folder,?useful
    ##?for?development
    ## 設(shè)置配置文件發(fā)布目錄
    CENTRIC_FILELIBRARY=D:/java/tomcat5.5.3/webapps/centric/WEB-INF/fileLibrary

    ##?If?using?Axis?Web?Services,?then?declare?the?webapp?home?so?that?the
    ##?Centric?CRM?descriptors?can?be?installed?with?"ant?ws"
    ## 設(shè)置axis在tomcat中的發(fā)布目錄
    AXIS_HOME=D:/java/tomcat5.5.3/webapps/axis
    ? ??
    ??? master.properties 相關(guān)屬性做如下修改:

    ##
    ## NOTE: Do not edit "master.properties" -- edit a copy of it
    ## These settings are used by ant for the build and installation process
    ##




    ## PART 1: Are you reading the instructions? (required)

    ## The following is a control, uncomment the following line after modifying
    ## these properties... we just want to make sure you're paying attention and
    ## the build process doesn't do something it shouldn't!
    ## 確認(rèn)修改過此配置文件標(biāo)識(shí)
    PROPERTIES=configured




    ## PART 2: Deployment settings (required for compiling)

    ## Default language setting: even though any locale can be specified, the
    ## following have Centric CRM translations and supporting database data
    ## args="de_DE,en_US,es_VE,fr_FR,it_IT,ja_JP,nl_NL,pt_BR,ro_RO,ru_RU,sl_SI"/>
    SYSTEM.LANGUAGE=en_US

    ## Web server debug level:
    ## Extended debug information can be displayed in the web server's log file
    ## Comment out for no debugging, especially production server
    DEBUGLEVEL=2
    #DEBUG=true
    #DEBUGLEVEL=lines,vars,source

    ## Specify the web server to build/deploy against (required):
    ## Use catalina for Tomcat
    ## Use geronimo for WAS-CE or Apache Geronimo
    ## All others untested but planned for
    ## 指定Web Server 應(yīng)用服務(wù)類型
    WEBSERVER.TYPE=catalina
    #WEBSERVER.TYPE=geronimo
    #WEBSERVER.TYPE=jboss
    #WEBSERVER.TYPE=weblogic
    #WEBSERVER.TYPE=websphere

    ## A self-signed SSL Certificate will be generated with the following parameters,
    ## which can then be added to Tomcat's SSL configuration and/or
    ## signed by an authority
    ## Common name should be a domain name
    ## Ex. *.yourcompany.com or www.yourcompany.com
    KEYSTORE.COMMONNAME=127.0.0.1
    KEYSTORE.ORGANIZATION=Company
    KEYSTORE.ORGANIZATIONALUNIT=Unit
    KEYSTORE.CITY=City
    KEYSTORE.STATE=State
    KEYSTORE.COUNTRY=US
    KEYSTORE.VALIDITY=1000

    ## Force users to use SSL in Centric CRM
    ## The web server must be configured for SSL if this option is set to true as
    ## Centric CRM will redirect non-secure URLs to the secure URL
    FORCESSL=false




    ## PART 3: Database installation settings (required for database installation)

    ## Uncomment and set the connection information for your specific database
    ## NOTE: The gatekeeper URL includes your database name, the site URL does not;
    ## The ant script will insert the database name after the specified url


    ## DB2
    ## CREATE DATABASE centric USING CODESET UTF-8 TERRITORY US pagesize 32 k
    #GATEKEEPER.DBTYPE=db2
    #GATEKEEPER.DRIVER=com.ibm.db2.jcc.DB2Driver
    #GATEKEEPER.URL=jdbc:db2://127.0.0.1:50000/centric
    #GATEKEEPER.USER=db2admin
    #GATEKEEPER.PASSWORD=
    #SITE.DBTYPE=db2
    #SITE.DRIVER=com.ibm.db2.jcc.DB2Driver
    #SITE.URL=jdbc:db2://127.0.0.1:50000/
    #SITE.USER=db2admin
    #SITE.PASSWORD=

    ## POSTGRESQL
    ## createdb -E UNICODE centric_crm
    #GATEKEEPER.DBTYPE=postgresql
    #GATEKEEPER.DRIVER=org.postgresql.Driver
    #GATEKEEPER.URL=jdbc:postgresql://127.0.0.1:5432/centric_crm
    #GATEKEEPER.USER=postgres
    #GATEKEEPER.PASSWORD=
    #SITE.DBTYPE=postgresql
    #SITE.DRIVER=org.postgresql.Driver
    #SITE.URL=jdbc:postgresql://127.0.0.1:5432/
    #SITE.USER=postgres
    #SITE.PASSWORD=

    ## MySQL
    ## CREATE DATABASE centric_crm CHARACTER SET utf8 COLLATE utf8_general_ci
    ## 指定數(shù)據(jù)庫(kù)類型及連接配置
    GATEKEEPER.DBTYPE=mysql
    GATEKEEPER.DRIVER=com.mysql.jdbc.Driver
    GATEKEEPER.URL=jdbc:mysql://127.0.0.1:3306/my_centric_crm
    GATEKEEPER.USER=my_centric_crm
    GATEKEEPER.PASSWORD=crm
    SITE.DBTYPE=mysql
    SITE.DRIVER=com.mysql.jdbc.Driver
    SITE.URL=jdbc:mysql://127.0.0.1:3306/
    SITE.USER=my_centric_crm
    SITE.PASSWORD=crm


    ## MS SQL SERVER
    #GATEKEEPER.DBTYPE=mssql
    #GATEKEEPER.DRIVER=net.sourceforge.jtds.jdbc.Driver
    #GATEKEEPER.URL=jdbc:jtds:sqlserver://127.0.0.1:1433/centric_crm
    #GATEKEEPER.USER=centric_crm
    #GATEKEEPER.PASSWORD=
    #SITE.DBTYPE=mssql
    #SITE.DRIVER=net.sourceforge.jtds.jdbc.Driver
    #SITE.URL=jdbc:jtds:sqlserver://127.0.0.1:1433/
    #SITE.USER=centric_crm
    #SITE.PASSWORD=

    ## CodeGear's InterBase (formally owned by Borland) www.codegear.com
    ## Do NOT put the database in the centric file library, or at least the root,
    ## as the build.xml copies its prefs into there using the same name as your database file!
    ## "e:/centriccrm_db" is only an example
    #GATEKEEPER.DBTYPE=interbase
    #GATEKEEPER.DRIVER=interbase.interclient.Driver
    #GATEKEEPER.URL=jdbc:interbase://127.0.0.1:3050/e:/centriccrm_db/centric_crm.ib
    #GATEKEEPER.USER=sysdba
    #GATEKEEPER.PASSWORD=masterkey
    #SITE.DBTYPE=interbase
    #SITE.DRIVER=interbase.interclient.Driver
    #SITE.URL=jdbc:interbase://127.0.0.1:3050/e:/centriccrm_db/
    #SITE.USER=sysdba
    #SITE.PASSWORD=masterkey

    ## FIREBIRD SQL
    #GATEKEEPER.DBTYPE=firebird
    #GATEKEEPER.DRIVER=org.firebirdsql.jdbc.FBDriver
    #GATEKEEPER.URL=jdbc:firebirdsql:127.0.0.1/3050:${CENTRIC_FILELIBRARY}/centric_crm.fdb
    #GATEKEEPER.USER=sysdba
    #GATEKEEPER.PASSWORD=masterkey
    #SITE.DBTYPE=firebird
    #SITE.DRIVER=org.firebirdsql.jdbc.FBDriver
    #SITE.URL=jdbc:firebirdsql:127.0.0.1/3050:${CENTRIC_FILELIBRARY}/
    #SITE.USER=sysdba
    #SITE.PASSWORD=masterkey

    ## DAFFODIL DB EMBEDDED
    #GATEKEEPER.DBTYPE=daffodildb
    #GATEKEEPER.DRIVER=in.co.daffodil.db.jdbc.DaffodilDBDriver
    ## YOU MUST EDIT THE path in the following line to where you want the database
    ## created.
    ## The user and password must be set to daffodil
    #GATEKEEPER.URL=jdbc:daffodilDB_embedded:centric_crm;create=true;path=/home/fileLibrary/centric_crm/daffodildb
    #GATEKEEPER.USER=daffodil
    #GATEKEEPER.PASSWORD=daffodil
    #SITE.DBTYPE=daffodildb
    #SITE.DRIVER=in.co.daffodil.db.jdbc.DaffodilDBDriver
    #SITE.URL=jdbc:daffodilDB_embedded:
    ## YOU MUST EDIT THE path in the following line to where you want the database
    ## created.
    ## Ex. Use the same path as Centric CRM's deployed file library, then the name of
    ## the database, then end in daffodildb
    ## The user and password must be set to daffodil
    #SITE.APPEND=;create=true;path=/home/fileLibrary/centric_crm/daffodildb
    #SITE.USER=daffodil
    #SITE.PASSWORD=daffodil

    ## ORACLE
    ## During installdb, use XE (or whatever you add under gatekeeper) for the
    ## database name since the install has not been adjusted for Oracle yet
    #GATEKEEPER.DBTYPE=oracle
    #GATEKEEPER.DRIVER=oracle.jdbc.driver.OracleDriver
    #GATEKEEPER.URL=jdbc:oracle:thin:@//127.0.0.1:1521/XE
    #GATEKEEPER.USER=
    #GATEKEEPER.PASSWORD=
    #SITE.DBTYPE=oracle
    #SITE.DRIVER=oracle.jdbc.driver.OracleDriver
    #SITE.URL=jdbc:oracle:thin:@//127.0.0.1:1521/
    #SITE.USER=
    #SITE.PASSWORD=

    ## Derby
    #GATEKEEPER.DBTYPE=derby
    #GATEKEEPER.DRIVER=org.apache.derby.jdbc.EmbeddedDriver
    ## YOU MUST EDIT THE path in the following line to where you want the database
    ## created.
    #GATEKEEPER.URL=jdbc:derby:/home/fileLibrary/centric_crm/derbydb;create=true;upgrade=true
    #GATEKEEPER.USER=centric_crm
    #GATEKEEPER.PASSWORD=
    #SITE.DBTYPE=derby
    #SITE.DRIVER=org.apache.derby.jdbc.EmbeddedDriver
    ## YOU MUST EDIT THE path in the following line to where you want the database
    ## created.
    #SITE.URL=jdbc:derby:/home/fileLibrary/centric_crm/
    #SITE.APPEND=;create=true;upgrade=true
    #SITE.USER=centric_crm
    #SITE.PASSWORD=


    ## PART 4: Advanced configuration (optional)

    ## Web-based configuration is recommended and is the default setting
    ##
    ## If you uncomment the following CONTROL line then you must configure the
    ## remaining parameters yourself. You will also have to create a new Centric
    ## CRM user and password before using Centric CRM.
    ##
    ## If you DO NOT uncomment the CONTROL line, then the first time you use
    ## Centric CRM, you will be presented with a configuration wizard which will
    ## assist you in defining these parameters and creating a new Centric CRM
    ## user and password.
    ##
    #CONTROL=BYPASS_WEB-BASED_APPLICATION_SETUP

    ## The following are methods for working with multiple development databases
    ## The APPCODE must be the same for the following Gatekeeper prefs and Site prefs
    GATEKEEPER.APPCODE=centric
    SITE.APPCODE=centric

    ## Define the web address used in communications when using a single development
    ## database
    #WEBSERVER.URL=127.0.0.1:8080/centric

    ## Define the web address used in communications when using multiple development
    ## databases
    #WEBSERVER.ASPMODE=true
    #WEBSERVER.PORT=8080
    #WEBSERVER.CONTEXT=/centric

    ## The server's default timezone for new users (using standard Java names)
    SYSTEM.TIMEZONE=America/New_York
    ## Default currency for all users
    SYSTEM.CURRENCY=USD
    ## Default country for all users
    SYSTEM.COUNTRY=UNITED STATES

    ## External Servers used by the system
    MAILSERVER=127.0.0.1
    FAXSERVER=127.0.0.1
    FAXENABLED=false
    PROXYSERVER=false
    PROXYSERVER.HOST=
    PROXYSERVER.PORT=

    ## Apache Axis Web Services
    ## 指定WebService 服務(wù)路徑
    AXIS.WEBAPP=/axis
    AXIS.HOST=127.0.0.1
    AXIS.PORT=8080


    ## Asterisk integration
    ASTERISK.OUTBOUND.ENABLED=false
    ASTERISK.INBOUND.ENABLED=false
    ASTERISK.URL=
    ASTERISK.USERNAME=
    ASTERISK.PASSWORD=
    ASTERISK.CONTEXT=from-internal

    ## XMPP/Jabber integration
    XMPP.ENABLED=false
    XMPP.CONNECTION.SSL=false
    XMPP.CONNECTION.URL=
    XMPP.CONNECTION.PORT=5222
    XMPP.MANAGER.USERNAME=
    XMPP.MANAGER.PASSWORD=

    ## LDAP integration
    LDAP.ENABLED=false
    # Validate username OR email against LDAP: username|email
    LDAP.CENTRIC_CRM.FIELD=username
    LDAP.FACTORY=com.sun.jndi.ldap.LdapCtxFactory
    LDAP.SERVER=ldap://127.0.0.1:389
    # Search by attribute, otherwise composite DN: true|false
    LDAP.SEARCH.BY_ATTRIBUTE=true
    LDAP.SEARCH.USERNAME=cn=admin,ou=IT,o=COMPANY
    LDAP.SEARCH.PASSWORD=
    LDAP.SEARCH.CONTAINER=o=COMPANY
    LDAP.SEARCH.ORGPERSON=inetOrgPerson
    LDAP.SEARCH.SUBTREE=true
    LDAP.SEARCH.ATTRIBUTE=mail
    #LDAP.SEARCH.BY_ATTRIBUTE=false
    #LDAP.SEARCH.PREFIX=cn=
    #LDAP.SEARCH.POSTFIX=,o=COMPANY

    ## Define the system's email address
    EMAILADDRESS=Centric CRM <noreply@127.0.0.1>

    ## Timed events, definitely turn on for a production server
    CRON.ENABLED=true

    ## Connection Pool Settings
    CONNECTION_POOL.DEBUG=false
    CONNECTION_POOL.TEST_CONNECTIONS=false
    CONNECTION_POOL.ALLOW_SHRINKING=true
    CONNECTION_POOL.MAX_CONNECTIONS=10
    CONNECTION_POOL.MAX_IDLE_TIME.SECONDS=60
    CONNECTION_POOL.MAX_DEAD_TIME.SECONDS=300

    ## Layout Settings
    ## Template replaces the following files which MUST exist:
    ## CSS:
    ## template1.css
    ## template1-8pt.css
    ## template1-10pt.css
    ## JSP:
    ## template1nav.jsp
    ## template1style.jsp
    ## template1styleNoSession.jsp
    ## template1styleContainer.jsp
    LAYOUT.TEMPLATE=template1
    LAYOUT.JSP.WELCOME=welcome.jsp
    LAYOUT.JSP.LOGIN=login.jsp
    #LAYOUT.JSP.LOGIN.LOGO=<img src="images/centric/logo-centric.gif" width="295" height="66" alt="" border="0" />
    #LAYOUT.JSP.LOGIN.TEXT=Centric CRM

    ## Max Imports that can run concurrently
    IMPORT_QUEUE_MAX=1

    ## Opportunity behavior
    # OPPORTUNITY.DEFAULT_TERM=52
    # OPPORTUNITY.DEFAULT_UNITS=W
    # OPPORTUNITY.MULTIPLIER=52
    # OPPORTUNITY.CLOSE_PROBABILITY=25,50,75

    完成上述兩文件的修改后,打開eclipse的ant視圖,

    ??? 運(yùn)行:ant deploy 完成項(xiàng)目的編譯發(fā)布工作。

    下一步是創(chuàng)建庫(kù)表,可運(yùn)行 ant installdb 創(chuàng)建庫(kù)表。
    ??? 運(yùn)行 ant installdb前,先在啟動(dòng)MySQL,創(chuàng)建一個(gè)表空間及用戶,
    ??? CREATE DATABASE my_centric_crm CHARACTER SET utf8 COLLATE utf8_general_ci;
    ??? GRANT ALL PRIVILEGES ON my_centric_crm.* TO my_centric_crm@"%" IDENTIFIED BY "crm";


    ??? 創(chuàng)建庫(kù)表時(shí),若出現(xiàn)類似"Specified key was too long; max key length is 765bytes"的錯(cuò)誤,是因?yàn)闃?biāo)識(shí)"UNIQUE NOT NULL"的字段長(zhǎng)度>255(255=765/3)了。MySQL數(shù)據(jù)庫(kù)的unique類字段長(zhǎng)度限制比較短,視不同版本,有的限制為765個(gè)字節(jié),有的限制為1000個(gè)字節(jié),UTF是占用3個(gè)字節(jié)位的,所以在這個(gè)限制上還要除以3。centric CRM的mysql庫(kù)腳本中,unique類字段的長(zhǎng)度是設(shè)為300長(zhǎng)字符的,出現(xiàn)上述問題一個(gè)可行的妥協(xié)辦法是修改腳本unique類字段的長(zhǎng)度。

    建完表后,可以啟動(dòng)tomcat服務(wù),運(yùn)行 ant ws 激活WebService,應(yīng)用服務(wù)配置安裝完成!

    通過 http://localhost:8080/centric,第一次進(jìn)入centric crm系統(tǒng)。

    ??? 第一次進(jìn)入系統(tǒng)時(shí),是一個(gè)登錄界面,用戶是dhvadmin,密碼是admin,登錄進(jìn)入,是一步步的系統(tǒng)參數(shù)設(shè)置操作,操頁面提示,就可完成設(shè)置。最后是創(chuàng)建應(yīng)用系統(tǒng)公司名稱和管理員用戶密碼的界面,再次使用系統(tǒng)時(shí),就以管理員名稱和密碼登錄,對(duì)系統(tǒng)進(jìn)行設(shè)置及添加管理其他用戶。(至此,告一段落。)

    posted @ 2007-03-02 14:53 junctioner 閱讀(3746) | 評(píng)論 (1)編輯 收藏

    男孩、年青的父親、男人

     有一段時(shí)間沒寫blog了,個(gè)中的理由就是這段時(shí)間心情浮躁,沉不下來。

      畢業(yè)后參加工作已整整6個(gè)年頭了。從一個(gè)只知道找父母要錢花,不知道社會(huì)是什么樣的“弱冠”到現(xiàn)在剛開始意識(shí)到要靠自己養(yǎng)家糊口,照顧父母的準(zhǔn)“而立”,要考慮的事情比以前復(fù)雜的多了,這段時(shí)間工作也是動(dòng)蕩的,沒有一個(gè)穩(wěn)定的基礎(chǔ)考慮自己要考慮的問題,愈是浮萍一樣的沒有根。

      今,得空閑一會(huì),瀏覽blog,看到一個(gè)blog,它的公告圖片上是一個(gè)漂亮的小女孩,它的ICO是卡通的唐老鴨,抑郁的心情忽的開闊了。想那小女孩肯定是作者的女兒,唐老鴨肯定是作者女兒的所愛。如果年青的媽媽,她的blog上放這些,是很容易理解的,而作者是一個(gè)大老爺們,他的blog上放這些與“大老爺們”身份有巨大的反差,但正是這種反差,讓我看到一位父親對(duì)女兒的喜愛。

    posted @ 2006-07-17 14:51 junctioner 閱讀(316) | 評(píng)論 (0)編輯 收藏

    信息化市場(chǎng)中,用戶就是上帝否?

    粗讀王永強(qiáng)的 解析管理信息化的“十大陷阱”?,最有同感的是“買方?jīng)Q定性陷阱”。

    ???中國(guó)信息化的現(xiàn)狀說:鄧小平提出建設(shè)有中國(guó)特色的社會(huì)主義,或許是因?yàn)橹袊?guó)的政治宣傳力度比較強(qiáng),企業(yè)的發(fā)展管理策略也帶上“特色”,信息化就自然而然的要有自己的特色,如果拷貝另一企業(yè)的信息化經(jīng)驗(yàn)成果,就是沒有特色--你用你的槍,我用我的炮。
    ???企業(yè)信息化軟件實(shí)施說:信息化是一把手工程,如果一把手支持稍有松懈,所有的工作就有可能失敗,原因什么呢??縣官不如現(xiàn)管,現(xiàn)管的人不支持,這工作就開展不了。而上一個(gè)新系統(tǒng),對(duì)于現(xiàn)管的人來說,就如同是一次革命,牽扯到的利益太多,稍有一點(diǎn)不均衡,不滿意的人出來了,你的工作就得暫停一下。所以,新系統(tǒng)必須考慮到企業(yè)的實(shí)際情況,現(xiàn)有的模式,你再先進(jìn)、再科學(xué),也得適合我的腳,我才穿。
    ???信息化系統(tǒng)提供商說:我們是公司行為,先生存,再發(fā)展;客戶要什么東西,我們就做什么東西;先做項(xiàng)目,再做產(chǎn)品。????
    ???圈內(nèi)流傳消息說:中國(guó)軟件不如印度,更比不上歐美。歐美做內(nèi)核,簡(jiǎn)單重復(fù)的勞力就支援第三世界發(fā)展,換句話說是中國(guó)幫外國(guó)做產(chǎn)品,但沒有自己的產(chǎn)品,而且作為勞動(dòng)關(guān)系雇員還不如同桌。

    ???在這條“生態(tài)鏈”中,誰是誰非?作為一個(gè)局外人看其中的問題很清楚,但身處某一個(gè)鏈節(jié)中時(shí),沒有誰能是我這是問題。如果企業(yè)說,我要一個(gè)產(chǎn)品,不要項(xiàng)目,這樣,中國(guó)肯定會(huì)出現(xiàn)一些響當(dāng)當(dāng)?shù)漠a(chǎn)品;如果系統(tǒng)提供商說,我有非常好的產(chǎn)品,可以做實(shí)施,不做項(xiàng)目,產(chǎn)品有吸引力應(yīng)能取到市場(chǎng)的一杯羹。

    posted @ 2006-04-03 11:11 junctioner 閱讀(268) | 評(píng)論 (0)編輯 收藏

    ajax-json-rpc處理過程

    在web.xml文件中,可以發(fā)現(xiàn)
      <servlet-mapping>
        <servlet-name>com.metaparadigm.jsonrpc.JSONRPCServlet</servlet-name>
        <url-pattern>/JSON-RPC</url-pattern>
      </servlet-mapping>
    所有的請(qǐng)求提交到這個(gè)Servlet后分發(fā)處理并做出響應(yīng)。

    JSONRPCServlet.java中實(shí)現(xiàn)了init()和service(),

    init() 中只是取了些配置參數(shù)作了相關(guān)設(shè)置;

    service() 中實(shí)現(xiàn)了請(qǐng)求處理;

    1.從session中創(chuàng)建/獲取JSONRPCBridge對(duì)象;

    2.把提交的數(shù)據(jù)裝入一個(gè)JSONObject對(duì)象中;

    3.用JSONRPCBridge對(duì)象的call方法處理JSONObject對(duì)象并返回JSONRPCResult對(duì)象。

    這個(gè)處理較ajax-buffalo 中的處理單調(diào)了不少。

    再來看看JSONRPCBridge.java是如何構(gòu)建的。

    1.內(nèi)置6個(gè)內(nèi)部類:CallbackData、ClassData、LocalArgResovleData、MethodCandidate、MethodKey、ObjectInstance;

    2.還有一些輔助處理的方法,比較多(提取為一個(gè)或者多個(gè)輔助類比較好);

    3.核心的就是call()方法了。運(yùn)用的是java反射機(jī)制,進(jìn)行方法調(diào)用。這個(gè)方法寫的也比較長(zhǎng),沒仔細(xì)看,只看到有它兩個(gè)可取的地方,一個(gè)就返回對(duì)象的序列化,另一個(gè)是對(duì)不同異常,給出相應(yīng)返回的處理比較細(xì)致,這樣有利于找到異常在什么地方,估計(jì)是原因引起的。

    在客戶端的處理,是把各方法、對(duì)象串連在一起,封裝后,便于應(yīng)用。

    它把請(qǐng)求的數(shù)據(jù)對(duì)象化再以串的形式提交,后端再做一個(gè)反向操作,方便了數(shù)據(jù)處理。這種方式比ajax-buffalo 中把數(shù)據(jù)組織成一個(gè)XML結(jié)構(gòu)的數(shù)據(jù)包提交、處理效率高。



    posted @ 2006-03-16 13:57 junctioner 閱讀(1753) | 評(píng)論 (2)編輯 收藏

    加強(qiáng)對(duì)(Oracle)SQL語句的學(xué)習(xí)(0)

    --沉浸在技術(shù)之中,如同喝高度白酒,比較麻醉人。

    工作中,遇到比較復(fù)雜的SQL語句,也挺費(fèi)時(shí)間的。今天有時(shí)間就研究一下,找到如下幾個(gè)資源鏈(比較懶,也懶得COPY,避嫌抄襲)

    http://www.51one.net/study/Oracle/list1.htm

    學(xué)習(xí)兩個(gè)關(guān)鍵字的用法,intersect(取交集),minus(取差集)

    (select?a.name from a) intersect (select b.name from b)

    (select?a.name from a)?minus (select b.name from b)

    {重學(xué)高等數(shù)學(xué),全還給老師了,現(xiàn)在自己去要回來,上Google:)

    并集:A和B相加的全部;交集:A和B相交疊的部分;差集:并集-交集;補(bǔ)集:如果集合B是集合I的子集,我們把I看作全集,那么I與B的差集I-B,叫做B在I中的補(bǔ)集}

    SQL語句優(yōu)化技術(shù)分析

    http://www.pconline.com.cn/pcjob/other/data/oracle/0501/536463.html

    避免用

    ?避免使用 ?替代方法
    field?in(a,b,c) ?field=a or field = b or field=c
    field?is null /is not null ?field > ' ' 、field > 0

    ?select * from a???

    ?union

    ?select * from b

    先取兩表,再合并

    ?select * from a

    ?union all

    ?select * from b

    簡(jiǎn)單的將兩個(gè)結(jié)果合并后就返回

    ? ?


    posted @ 2006-03-16 13:51 junctioner 閱讀(1956) | 評(píng)論 (2)編輯 收藏

    1kg,What?

    1kg?

    1kg代表什么?

    一公斤么?對(duì)!

    一公斤什么?

    #¥%@&×。

    這里(http://www.1kg.cn)有一個(gè)答案,一公斤的書籍文具。

    這是一項(xiàng)民間發(fā)起的公益旅游活動(dòng),它通過傳遞-交流-分享三個(gè)簡(jiǎn)單的步驟帶給旅游者豐富的旅游體驗(yàn),受惠的是每一位參與者的心,更多的是千萬雙渴望知識(shí)的眼睛。



    posted @ 2006-03-16 13:49 junctioner 閱讀(207) | 評(píng)論 (0)編輯 收藏

    國(guó)產(chǎn)Ajax實(shí)現(xiàn)-buffalo

    早上剛發(fā)現(xiàn)的國(guó)產(chǎn)Ajax實(shí)現(xiàn),現(xiàn)在版本是1.2,其網(wǎng)址是:http://www.amowa.net/buffalo

    當(dāng)下buffalo-1.2.zip 4,770KB ,

    解開,發(fā)現(xiàn)項(xiàng)目配置文件是eclipse(切喜!eclipse,my love。),

    導(dǎo)入eclipse中,紅色的報(bào)錯(cuò):三個(gè)類庫(kù)變量沒找到,是web服務(wù)要的三個(gè)包servlet-api.jar、jsp-api.jar、jasper-runtime.jar,在tomcat對(duì)應(yīng)目錄可以找到。其實(shí)還有第四個(gè)類庫(kù)變量--junit.jar,只不過eclipse中自帶的有,如果不用eclipse,找到這四個(gè)jar包引入。

    項(xiàng)目是以java文件為主的,有一個(gè)war目錄是演示用的web應(yīng)用代碼目錄,web應(yīng)用項(xiàng)目得自己建,這個(gè)感覺不爽,雖然它有一個(gè)build.xml文件可以打web應(yīng)用包,但想調(diào)試跟蹤,還是缺一步(我站在研究的角度,如果應(yīng)用的話,加入那幾個(gè)包,看看使用方法就可以了)。

    首先研究了一下ApplicationServlet.java

    1.這個(gè)Servlet初始化時(shí),創(chuàng)建/獲取了一個(gè)服務(wù)倉(cāng)庫(kù)(ServiceRepository);

    2.所有的請(qǐng)求、響應(yīng)都封裝成一個(gè)自定義的請(qǐng)求上下文本(RequestContext);

    3.根據(jù)請(qǐng)求的路徑調(diào)用不同的RequestWorker;(這一點(diǎn)好,又不好)

    4.剩下的就是worker開始工作了,初始化、校驗(yàn)、處理。

    重要的也是“處理”,現(xiàn)在看看worker的結(jié)構(gòu)。

    接口類:interface RequestWorker 定義三個(gè)基本方法。

    抽象類:abstract class AbstractRequestWorker 實(shí)現(xiàn)初始化和校驗(yàn)這兩個(gè)基本方法,另實(shí)現(xiàn)一些其它方法。

    具體實(shí)現(xiàn)類:ViewWorker、BuffaloWorker、UploadWorker 當(dāng)然,你也可以寫自己的worker

    當(dāng)?shù)捻?xiàng)目源碼中,ViewWorker、UploadWorker的處理方法中都是拋出UnsupportedOperationException,想處理的話,你也可以加。現(xiàn)在重要的講講BuffaloWorker的處理。

    1.通過封裝的請(qǐng)求上下文件(RequestContext),獲取服務(wù)倉(cāng)庫(kù)(ServiceRepository);

    2.通過請(qǐng)求的相對(duì)路徑(此方法感覺欠妥),獲取相應(yīng)的服務(wù);

    3.有了“業(yè)務(wù)處理方法”、“業(yè)務(wù)請(qǐng)求”后,就是調(diào)用“粗麻布調(diào)用(BurlapInvoker)”處理余下的工作了。

    前面寫的是一些流程,沒什么復(fù)雜的東西,這最后的 invoker,是比較核心,也很經(jīng)典的處理。在這里,我也不多寫了,再寫下去,大家也一路的看下去,沒什么感覺。相信看完了 invoker的實(shí)現(xiàn),一定能學(xué)到不少東西。

    下次看看前端是怎么實(shí)現(xiàn)的,今天到此為止,休息一會(huì)!



    posted @ 2006-03-16 13:45 junctioner 閱讀(375) | 評(píng)論 (0)編輯 收藏

    試玩Ajax-json-rpc

    一、下載

    下載網(wǎng)站:http://freshmeat.net/projects/json-rpc-java/?branch_id=49217&release_id=214415

    下載地址:http://freshmeat.net/redir/json-rpc-java/49217/url_zip/json-rpc-java-1.0rc2.zip (版本1.0rc2)

    解壓后有三個(gè)文件夾、三個(gè)文件:

    src  jsonrpc的核心代碼

    test 演示用的java代碼

    webapps 演示用的web代碼

    build.xml ant文件

    jsonrpc.jar 編譯好的jsonrpc核心包

    jsonrpc.war 編譯好的演示web包

    二、安裝運(yùn)行

    1、如果不想用javaIDE編譯發(fā)布,配置好ant 和tomcat,用ant運(yùn)行解壓后的build.xml,把jsonrpc的demo發(fā)布到tomcat中,啟動(dòng)tomcat,打開http://127.0.0.1:8080/jsonrpc/ 就可以看到演示了。

    不過,build.xml文件要做一點(diǎn)適應(yīng)的改動(dòng),

    <property name="tomcat" location="../jakarta-tomcat-5.0.19"/>中的location值要設(shè)置為tomcat的安裝目錄

    <property name="tomcat" location="D:\java\Tomcat5.0"/>

    2、用javaIDE的話,我是用eclipse 3.01+myeclipse 3.84

    新建一個(gè)空的web項(xiàng)目,

    web root folder=webapps,

    context root url =jsonrpc,OK。

    (這兩個(gè)值可以用默認(rèn)設(shè)置,但用默認(rèn)設(shè)置后面改動(dòng)比較多,所以就迎合它自己的口味)

    把解開的src和test目錄放到新建項(xiàng)目的根目錄中,webapps/jsonrpc目錄下的內(nèi)容拷貝到項(xiàng)目webapps目錄中,eclipse自動(dòng)編譯,會(huì)報(bào)一些錯(cuò)誤,是因?yàn)閠est/src中有一部分java源碼未作為java文件編譯,鼠標(biāo)右鍵點(diǎn)擊項(xiàng)目圖標(biāo)->屬性->Java編譯路徑->資源->添加test/src目錄到資源中,確定OK。

    jsp文件沒有因java文件的重新編譯而更新所以還會(huì)顯示一些紅色的錯(cuò)誤,就得手工讓它再編譯一次,鼠標(biāo)右鍵點(diǎn)擊項(xiàng)目中webapps目錄->myeclipse->運(yùn)行校驗(yàn),OK,剩下的是一些警告信息,如果你不想看到它們,可以去程序中一個(gè)個(gè)的去掉。

    在eclipse中發(fā)布jsonrpc、啟動(dòng)tomcat服務(wù),大功告成。

    簡(jiǎn)單的看了一下它的設(shè)計(jì)實(shí)現(xiàn)過,明天接著寫。



    posted @ 2006-03-16 13:43 junctioner 閱讀(2106) | 評(píng)論 (0)編輯 收藏

    有感覺錢鐘書的認(rèn)真

        近日忽有興致想讀錢鐘書的《圍城》,一時(shí)沒時(shí)間去買書,就在網(wǎng)上搜了一下,果有電子版的。

        先看前言,說得多的是第幾次印刷,又改了幾個(gè)錯(cuò)漏--對(duì)于這一點(diǎn),象他們那一輩人給我們的印象都是這樣,事不分巨細(xì),都特別認(rèn)真,再一次感受到他們的這種精神,也增加我接著往下看的興趣。當(dāng)讀到第一章時(shí),就發(fā)現(xiàn)有幾個(gè)字明顯是打詞組時(shí)帶出來的,很簡(jiǎn)單就能處理的事情,就留它一個(gè)結(jié)疤在這兒,讀得很不順暢,有幾處的用詞,意思上差不多可以說過去,但感覺很繞口,為增加讀下去的興致,就自己給自己找借口:錢老那時(shí)的白話文跟現(xiàn)在的有差別。不過,讀到第三節(jié)時(shí),實(shí)在沒有興致了。累呀!

        前兩天網(wǎng)上有關(guān)于張海迪的提案事件,事情也是沸沸揚(yáng)揚(yáng)的,實(shí)情是什么樣子的我不知道,但大部分人應(yīng)是認(rèn)同張海迪的為人。事件中就提到新聞報(bào)到提用人名,要經(jīng)當(dāng)事人同意這一點(diǎn),我想,如果是一個(gè)認(rèn)真的人,這件事情是應(yīng)該去做的,人云亦云的轉(zhuǎn)抄不去實(shí)究更是不該做的事情。

       現(xiàn)在的人難道都這么浮躁么!

    posted @ 2006-03-16 10:47 junctioner 閱讀(222) | 評(píng)論 (0)編輯 收藏

    開放源代碼,是軟件發(fā)展的最終模式

          剛看了《Jboss創(chuàng)始人Marc Fleury:我要為開放源代碼辯護(hù)》的文章,第一反應(yīng)就是要為Marc Fleury鼓掌!
          
          我不是計(jì)算機(jī)專業(yè)科班出身,對(duì)計(jì)算機(jī)知識(shí)的理解都是基于興趣愛好--我喜歡,我就做。記得上大學(xué)前填報(bào)志愿時(shí),好多同學(xué)都是沒有考慮第一志愿就填的計(jì)算機(jī)專業(yè)(因?yàn)樗麄兌枷矚g,甚至癡狂),我也非常喜歡計(jì)算機(jī),也想跟他們一樣,但瞬間的冷靜一想,基于計(jì)算機(jī)會(huì)是每一個(gè)人的基本工具,懂計(jì)算機(jī)是必然的事,就報(bào)了其它專業(yè)。雖然不是學(xué)計(jì)算機(jī),但課余時(shí)間幾乎都是在學(xué)計(jì)算機(jī)知識(shí)上面,還經(jīng)常去旁聽計(jì)算機(jī)專業(yè)的課。我學(xué)習(xí)編程,都是看著寫好的例子一句句的琢磨,最后就知道怎么用那些方法,關(guān)鍵字,雖然是很原始的學(xué)習(xí)方法,但還是比較有效的--這也許就是我支持開放源碼的“第一”原因吧。
          爾后,也接觸到很多軟件,對(duì)那些軟件,或多或少有自己的想法,希望能去完善它們,但大部分是編譯過的,想完善它們只能是隔靴撓癢的事。有一部分軟件也提供二次開發(fā)的接口,也有相應(yīng)的開發(fā)接口文檔,但發(fā)現(xiàn)問題是在它原有程序里的,就沒辦法。為此,有一段時(shí)間特別熱中于反編譯,覺得那是僅次于做黑客的事情,隨后,無奈的知道這是觸犯一些商人權(quán)利的事(現(xiàn)階段這些商人創(chuàng)造社會(huì)財(cái)富,也給制定法律的政府交稅,個(gè)人還是無法超越在法律之外的)。對(duì)此,只有噴墻。
          后來,發(fā)現(xiàn)開源軟件不僅免費(fèi)使用,更重要的是它的源碼是對(duì)所有人開放的,這無疑點(diǎn)亮了我學(xué)習(xí)開源軟件中的編程精華、設(shè)計(jì)思想的光明之路,也促使我更偏愛使用開源軟件。

    posted @ 2006-03-07 19:15 junctioner 閱讀(259) | 評(píng)論 (0)編輯 收藏

    開源ETL工具--kettle

    在google上查到兩款java的開源ETL工具
    Kettle(http://www.kettle.be/)和
    Octopus(http://www.enhydra.org/tech/octopus/index.html
    先看Kettle

    下載kettle的源碼(也可以下載BIN的),在eclipse中啟動(dòng),出現(xiàn)配置Repository的小窗口,在這小窗口中配置的Repository,輸入口令后老報(bào)口令錯(cuò)誤(可能是沒配置好),就直接點(diǎn)No Repository進(jìn)入主窗口,這就開始ETL工作了。

    待繼。。。

    posted @ 2006-03-02 12:39 junctioner 閱讀(2974) | 評(píng)論 (4)編輯 收藏

    政府這根紅線如何用?

    媒婆=政府
    女方=企業(yè)
    男方=IT公司

    現(xiàn)在,男方擺出什么家當(dāng)來,可以讓媒婆一上門,女方就高興的嫁過來呢?

    第一眼,感覺有很大的空間,可show的東西很多,隨便挑一個(gè)都成,但要確定一個(gè)具體的東西時(shí),張開口不知說哪一個(gè)了。

    企業(yè)信息化?這個(gè)題目還是太大。
    ERP?是大火過后的冷靜,廣大中小企業(yè)一直也是作避上觀。
    SCM?政府對(duì)企業(yè)這方面的東西好象沒說話的實(shí)質(zhì)內(nèi)容。
    CRM?政府做的工作是招商引資,投資環(huán)境,切實(shí)的工作還是得企業(yè)自己搬磚砌墻,牽強(qiáng)的說有點(diǎn)表親關(guān)系。

    換個(gè)思路,現(xiàn)在的女方最看中的是什么呢?看她關(guān)注什么。

    企業(yè)價(jià)值最大化,是任何一個(gè)企業(yè)追求的目標(biāo),怎么樣才能實(shí)現(xiàn)企業(yè)價(jià)值最大化呢?

    提高生產(chǎn)效率、提高產(chǎn)品質(zhì)量、提高服務(wù)質(zhì)量、提高管理執(zhí)行力、提高企業(yè)競(jìng)爭(zhēng)力;
    擴(kuò)展市場(chǎng)、提高市場(chǎng)占有率、維系老客戶,發(fā)展新客戶、提升企業(yè)品牌價(jià)值;
    控制成本、減少不必要的支出;

    怎么就感覺這些都是站在書堆里說的話呢!

    企業(yè)公共關(guān)系?

    posted @ 2006-02-17 10:25 junctioner 閱讀(257) | 評(píng)論 (0)編輯 收藏

    從程序中漢語拼音命名說開來去

    寫程序也有幾個(gè)年頭了,對(duì)程序中變量、方法、目錄之類的東西命名,總要花點(diǎn)時(shí)間--讀書的時(shí)候不認(rèn)真,對(duì)不起在上面講課的老師。對(duì)一些命名規(guī)則也了解一些,也努力那去做,不過,表意的關(guān)鍵字就沒有什么規(guī)則好參照,只有自己找資料根據(jù)業(yè)務(wù)找最接近的單詞來表述,每每這個(gè)時(shí)間,就想要努力學(xué)習(xí)英語。

    今天看了幾個(gè)政府的網(wǎng)站,點(diǎn)到其中的鏈接,看了半天,愣是沒看明白那鏈接中路徑表達(dá)的是什么意思,英語太差,慚愧!后來看到網(wǎng)站中欄目分類的名稱,一個(gè)個(gè)的對(duì)一下,原來是每個(gè)漢字的拼音首字母的組合,一個(gè)字,累!爾后看到網(wǎng)站上還標(biāo)明“中文簡(jiǎn)體版”、“中文繁體版”、“英文版”。點(diǎn)進(jìn)繁體版看看,繁簡(jiǎn)轉(zhuǎn)換得不錯(cuò),但鏈接的路徑描述還是那樣,看來是技術(shù)處理的不錯(cuò);點(diǎn)進(jìn)英文版瞧瞧,內(nèi)容跟中文版的完全不一樣,是另做的一套網(wǎng)站內(nèi)容,這時(shí)的鏈接路徑描述還可以看出是什么意思來。

    今天這事,我想到以前接觸的一些項(xiàng)目,其中的表意命名也是這么處理,甚至數(shù)據(jù)庫(kù)的字段名也按這個(gè)“規(guī)則”處理,我想他們工作的時(shí)候也是煞費(fèi)了一番苦心呀。以前還看到一個(gè)牛人寫的程序,程序中的命名全是漢字,在他的那個(gè)編輯器中,還一點(diǎn)問題沒有,而且也能跑起來,但把代碼一移到其他人的編輯器中,就“萬里江山一片紅”--漢字命名的全報(bào)錯(cuò),后來那GG一拍屁股走人,他的代碼沒人能接過來,只有“咔嚓”,項(xiàng)目頭頭無奈、老板心底流血。

    如果在程序中用漢字作變量不出問題的話,估計(jì)漢字命名會(huì)很風(fēng)靡。但電腦是洋人發(fā)明的,它認(rèn)識(shí)它媽媽的語言很親切,對(duì)于漢字,它也經(jīng)常頭痛,怎么辦呢?要用它,就得遷就它--這是我們中國(guó)程序員的無奈。

    計(jì)算機(jī)是死的,人是活的,說不定哪天,中國(guó)出了一牛人,讓計(jì)算機(jī)認(rèn)識(shí)漢字跟認(rèn)識(shí)英文一樣暢通無阻,那時(shí)中國(guó)程序員就有福了!這只是個(gè)期望,現(xiàn)在還沒有出現(xiàn)這種情況,我們還沒能改變計(jì)算機(jī),只有改變自己--跟兩個(gè)人談朋友一樣,總得有一個(gè)人改變,讓兩個(gè)人相處的更和諧!

    posted @ 2006-02-15 17:39 junctioner 閱讀(461) | 評(píng)論 (0)編輯 收藏

    eclipse 的體積越來越大,福兮?禍兮?

    經(jīng)過eclipse的好幾個(gè)發(fā)布版本,最先用順手的是2.1,之后就一直用它。

    記得第一次聽同事介紹eclipse時(shí),說了很多eclipse的優(yōu)勢(shì),但沒體會(huì),自己也是抱著試試的心態(tài)拷了一個(gè)備份玩玩。
          Eclipse 2.1 整個(gè)文件包才20多MB,比當(dāng)時(shí)使用的Jbuilder9來說,Jbuilder真是龐然大物。只要把ZIP包解壓就就可以運(yùn)行,不用復(fù)雜的安裝。做完相關(guān)配置后,看到如期的界面了,接近windows界面的顏色比Jbuilder的那種界面顏色更易接受。做了一些簡(jiǎn)單的應(yīng)用,操作功能跟Jbuilder差不多,但系統(tǒng)配套的代碼開發(fā),eclipse依賴于相關(guān)的插件,插件化是一個(gè)好的idea,但eclipse這方面的插件還沒有一個(gè)能達(dá)到Jbuilder的那種高度的效果。問題是eclipse是免費(fèi)的,也不能太高要求,想要高質(zhì)量的服務(wù),可以花點(diǎn)錢去買個(gè)插件MyEclipse裝上,使用起來還不錯(cuò)。
          時(shí)間長(zhǎng)了后,Jbuilder快從記憶中消去了(這幾天看到Borland要出賣它的IDE部門,甚是為Jbuilder擔(dān)憂,畢競(jìng)是一套不錯(cuò)的產(chǎn)品,也留下過美好的回憶),這期間,eclipse也更新了好幾個(gè)版本,從2字頭的到3字頭的,體積變化比較顯著,基于eclipse3.01使用比較習(xí)慣了,也接受它變得“豐滿”。但后面幾個(gè)版本還是保持在肥胖的狀況,而且使用方面,新版本的取向在編輯功能,程序調(diào)試的性能大不如前,對(duì)此情況,我保持止步不前了。寄希望

    版本號(hào) 發(fā)布日期 文件大小 備注
    3.11 2005-9-29 103.41MB
    3.1 2005-6-27 105.47MB
    3.01 2004-9-16 88.50MB
    2.1
    1.0 19.32MB

    posted @ 2006-02-14 13:06 junctioner 閱讀(678) | 評(píng)論 (1)編輯 收藏

    再學(xué)習(xí)log4j筆記

    log4j,字面意思就是針對(duì)j(Java)的日志。
    log4j,可以記錄顯示Java程序運(yùn)行的每一步的數(shù)據(jù),相當(dāng)于System.out.print,不過,它是以一個(gè)日志文件顯示所標(biāo)識(shí)的運(yùn)行信息,不用在java運(yùn)行顯示臺(tái)上看輸出信息,比較方面。
    log4j,記錄的數(shù)據(jù),可以作為判斷程序運(yùn)行狀態(tài)的重要依據(jù),更多的應(yīng)是查找程序運(yùn)行BUG的重要依據(jù),特別是程序已發(fā)布,不能做單步調(diào)試的情況下,它的優(yōu)越性就突顯出來了。
    引用一個(gè)對(duì)log4j的功能比較專業(yè)的描述:

    1、監(jiān)視代碼中變量的變化情況,周期性的記錄到文件中供其他應(yīng)用進(jìn)行統(tǒng)計(jì)分析工作;
    2、跟蹤代碼運(yùn)行時(shí)軌跡,作為日后審計(jì)的依據(jù);
    3、擔(dān)當(dāng)集成開發(fā)環(huán)境中的調(diào)試器的作用,向文件或控制臺(tái)打印代碼的調(diào)試信息。

    以前偶爾的用過幾次,但一次沒形成習(xí)慣和一套良好的應(yīng)用機(jī)制,自咎主要原因是對(duì)log4j掌握的還是不夠,亟待提升。

    今天就花時(shí)間找些資源研究研究。

    在網(wǎng)上搜到一些文章,首先看的是IBM中國(guó)網(wǎng)站上的一篇技術(shù)文章(http://www-128.ibm.com/developerworks/cn/java/l-log4j/index.html)講得比較基礎(chǔ),也很詳細(xì),對(duì)log4j的使用講得全面而貼切,甚利于初次學(xué)習(xí),發(fā)表日期是2002/6/19(有點(diǎn)早)。

    1、去網(wǎng)站(http://logging.apache.org/log4j/docs/download.html)下載log4j的jar包,直接下載log4j-1.2.13版鏈接:http://mirror.vmmatrix.net/apache/logging/log4j/1.2.13/logging-log4j-1.2.13.zip
    2、解開log4j.jar文件放到web應(yīng)用程序的WEB-INF/lib下面;
    3、編寫文件名為log4j.properties 配置文件到j(luò)ava源文件的根目錄中;
    4、在自己的程序中構(gòu)建日志記錄器;
    5、利用記錄器標(biāo)識(shí)要輸入的信息。

    第二步如果是在java的一般應(yīng)用程序中應(yīng)用log4j,則在環(huán)境變量CLASSPATH中添加一個(gè)指向log4j.jar的值。
    第三步把命名為log4j.properties的log4j配置文件放在java源文件目錄中是一個(gè)簡(jiǎn)潔的辦法,可以在程序中自定義的指定log4j的配置文件,配置文件名稱和存放路徑都可自定義。

    當(dāng)獲得了日志記錄器之后,第二步將配置Log4j環(huán)境,其語法為: 
    BasicConfigurator.configure (): 自動(dòng)快速地使用缺省Log4j環(huán)境。 
    PropertyConfigurator.configure ( String configFilename) :讀取使用Java的特性文件編寫的配置文件。 
    DOMConfigurator.configure ( String filename ) :讀取XML形式的配置文件。

    Log4j支持兩種配置文件格式,一種是XML格式的文件,一種是Java特性文件(鍵=值)。下面引用的是使用Java特性文件做為配置文件的方法(不用XML解析器):

    配置根Logger,其語法為: 
    log4j.rootLogger = [ level ] , appenderName, appenderName, …

    其中,level 是日志記錄的優(yōu)先級(jí),分為OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者您定義的級(jí)別。Log4j建議只使用四個(gè)級(jí)別,優(yōu)先級(jí)從高到低分別是ERROR、WARN、INFO、DEBUG。通過在這里定義的級(jí)別,您可以控制到應(yīng)用程序中相應(yīng)級(jí)別的日志信息的開關(guān)。比如在這里定義了INFO級(jí)別,則應(yīng)用程序中所有DEBUG級(jí)別的日志信息將不被打印出來。 
    appenderName就是指定日志信息輸出到哪個(gè)地方。您可以同時(shí)指定多個(gè)輸出目的地。 
    配置日志信息輸出目的地Appender,其語法為 
    log4j.appender.appenderName = fully.qualified.name.of.appender.class
    log4j.appender.appenderName.option1 = value1

    log4j.appender.appenderName.option = valueN其中,Log4j提供的appender有以下幾種: 
    org.apache.log4j.ConsoleAppender(控制臺(tái)), 
    org.apache.log4j.FileAppender(文件), 
    org.apache.log4j.DailyRollingFileAppender(每天產(chǎn)生一個(gè)日志文件),org.apache.log4j.RollingFileAppender(文件大小到達(dá)指定尺寸的時(shí)候產(chǎn)生一個(gè)新的文件), 
    org.apache.log4j.WriterAppender(將日志信息以流格式發(fā)送到任意指定的地方) 
    配置日志信息的格式(布局),其語法為: 
    log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class
    log4j.appender.appenderName.layout.option1 = value1

    log4j.appender.appenderName.layout.option = valueN其中,Log4j提供的layout有以下幾種: 
    org.apache.log4j.HTMLLayout(以HTML表格形式布局), 
    org.apache.log4j.PatternLayout(可以靈活地指定布局模式), 
    org.apache.log4j.SimpleLayout(包含日志信息的級(jí)別和信息字符串), 
    org.apache.log4j.TTCCLayout(包含日志產(chǎn)生的時(shí)間、線程、類別等等信息) 

    下面是一個(gè)log4j配置文件的例子(內(nèi)容不含前面的行號(hào)):
     1log4j.rootLogger=INFO, A1 , R
     2
     3log4j.appender.A1=org.apache.log4j.ConsoleAppender 
     4log4j.appender.A1.layout=org.apache.log4j.PatternLayout 
     5log4j.appender.A1.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%n 
     6
     7log4j.appender.R=org.apache.log4j.RollingFileAppender
     8log4j.appender.R.File=$TOMCAT_HOME/logs/log4j.log
     9##將$TOMCAT_HOME換成tomcat的安裝目錄,也可以指定一個(gè)存在的任意目錄
    10log4j.appender.R.MaxFileSize=100KB
    11log4j.appender.R.MaxBackupIndex=1
    12log4j.appender.R.layout=org.apache.log4j.PatternLayout
    13log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n


    第1行的值INFO,表示輸出INFO級(jí)以上的日志,如果設(shè)成OFF則表示不輸出,A1和R是自定義的兩種輸出方式(可以自定義n種輸出方式),其詳細(xì)內(nèi)容在后面有定義;
    第3行定義A1是輸出到控制臺(tái);
    第7行定義R是輸出到文件,并且控制文件在指定大小,超過指定大小自動(dòng)按指定形式創(chuàng)建一個(gè)新名稱的日志文件;

    一般是以指定格式的文本輸出日志,輸出比較快捷,也可以定義HTML格式的日志輸出,閱讀方便,但稍微有點(diǎn)慢。

    現(xiàn)在,可以象使用System.out.println一樣標(biāo)識(shí)程序輸出信息了看一個(gè)在程序中應(yīng)用log4j的簡(jiǎn)單例子。
    import org.apache.log4j.Level;
    import org.apache.log4j.Logger;
    import org.apache.log4j.SimpleLayout;
    import org.apache.log4j.FileAppender;
    public class simpandfile {
        //獲取log4j日志記錄器
       
    static Logger logger = Logger.getLogger(simpandfile.class);
       
    public static void main(String args[]) {
           //新建一個(gè)日志輸出樣式
          SimpleLayout layout 
    = new SimpleLayout();

          FileAppender appender 
    = null;
          
    try {
               //定義輸出文件
             appender 
    = new FileAppender(layout,"output1.txt",false);
          }
     catch(Exception e) {}

          logger.addAppender(appender);
           //設(shè)置日志輸出等級(jí)為DEBUG
          logger.setLevel((Level) Level.DEBUG);
          //以各種等級(jí)標(biāo)識(shí)輸出信息
          logger.debug(
    "Here is some DEBUG");
          logger.info(
    "Here is some INFO");
          logger.warn(
    "Here is some WARN");
          logger.error(
    "Here is some ERROR");
          logger.fatal(
    "Here is some FATAL");
       }

    }

    如果定義了log4j的輸出配置文件,在程序中獲取日志記錄器后就可以直接標(biāo)識(shí)日志輸出信息。

    [***] 在判斷DEBUG/INFO級(jí)別的信息是否要加入日志文件前,記錄器提供isDebugEnabled()/isInfoEnabled()方法判斷當(dāng)前級(jí)別是否激活,這樣處理減少日志處理信息時(shí)再判斷當(dāng)前級(jí)別是否激活消耗的資源,提高運(yùn)行性能。

    補(bǔ)加:

    剛發(fā)現(xiàn)log4e(http://log4e.jayefem.de/index.php/Download)這個(gè)eclipse的插件,它實(shí)現(xiàn)的功能是鼠標(biāo)點(diǎn)擊幾下,就可以自動(dòng)生產(chǎn)log標(biāo)識(shí),免去手敲的體力。
    至于怎么用,就很簡(jiǎn)單了,跟它的插件一樣安裝,裝完后,在eclipse的編輯區(qū)右鍵菜單中會(huì)多一個(gè)log4e項(xiàng),所有操作都在這里了。

    posted @ 2006-02-13 10:52 junctioner 閱讀(3808) | 評(píng)論 (0)編輯 收藏

    注冊(cè)機(jī)是什么顏色的?

    注冊(cè)機(jī)是什么顏色的?黑色的。看過很多注冊(cè)機(jī),都是黑色的界面,挺醒目的。

    注冊(cè)機(jī)、破解碼、散布的注冊(cè)碼、激活。。。。。

    這些都是搜索引擎中熱門的詞語,因?yàn)樗鼈兡苡庠揭恍┥虡I(yè)軟件的保護(hù)殼,讓復(fù)制者不用花什么代價(jià)就能使用那些軟件。

    我對(duì)開源、共享軟件是比較感興趣的,也愿意在這方面做出自己的努力。特別欣賞Jboss Group,看到他們,仿佛是看到軟件業(yè)最終的發(fā)展方向和模式。但在當(dāng)前商業(yè)軟件為主的狀態(tài)下,特別是一些軟件企業(yè)依靠一份份軟件換來的錢活命的情況下,我們不能做那種下石頭的事吧。

    我是一個(gè)poor programmer,使用很多free工具,也使用黑色的工具,但我的原則是:自己使用,但不散發(fā)。

    我很可憐,也可憐別人,留給自己一點(diǎn)尊嚴(yán)。

    posted @ 2006-02-09 14:31 junctioner 閱讀(705) | 評(píng)論 (0)編輯 收藏

    企業(yè)應(yīng)用鏈接收集

    SAP攜IBM推CRM托管服務(wù) 月收75美元

    posted @ 2006-02-07 20:15 junctioner 閱讀(272) | 評(píng)論 (0)編輯 收藏

    Jira 3.5 Enterprise EAR/WAR + mysql 安裝手記

    前段時(shí)間很容易的就試裝了jira的Professional Standalone, 寫得比較簡(jiǎn)單,今天準(zhǔn)備裝一下Enterprise EAR/WAR ,寫個(gè)詳細(xì)一點(diǎn)安裝手記。

    最開始的工作自然是下載了。
    把zip包解壓到一個(gè)目錄中,展開的內(nèi)容如下:
    edit-webapp:這個(gè)目錄中放的是指定數(shù)據(jù)庫(kù)類型的配置文件;
    etc:這個(gè)目錄中存放有三個(gè)xml文件;分別是換ear/war包用的配置文件;
             打war包的配置文件有兩一個(gè),jira.xml是通用的,tomcat-5.5-jira.xml是專為tomcat-5.5準(zhǔn)備的。
    src:這是一個(gè)空目錄,可以放自己添加的要編譯的功能源文件;
    tools:這個(gè)目錄中自帶一個(gè)ant(如果你沒有安裝ant,就用得到它);
    updater:為更新jira配備的一個(gè)更新工具目錄;
    webapp:主要的程序文件目錄;
    appendcp.bat:這個(gè)批處理文件沒怎么用到;
    build.bat:這個(gè)批處理文件把修改過的配置文件和程序文件打成一個(gè)可發(fā)布的war/ear包;
    build.sh:功能同build.bat,是在linux下用的;
    build.xml:ant的配置文件;
    readme.txt:軟件說明文件;

    展開的這些東西還只是“材料”,接下來就是做一些配置并把它們打成可發(fā)布的包。

    應(yīng)用服務(wù)選用Tomcat5.0;
    數(shù)據(jù)庫(kù)選用mysql Ver 14.7 Distrib 4.1.14 for Win32;

    先建表空間,再分配用戶指定權(quán)限,

    create database jiradb;
    grant all privileges on jiradb.* to jiradbuser@localhost identified by 'jira';

    做好外部了準(zhǔn)備工作,就進(jìn)行配置。
    接著修改edit-webapp\WEB-INF\classes\entityengine.xml
    找到
        <datasource name="defaultDS" 
            field-type-name
    ="hsql"
            helper-class
    ="org.ofbiz.core.entity.GenericHelperDAO"
            check-on-start
    ="true"
            use-foreign-keys
    ="false"
            use-foreign-key-indices
    ="false"
            check-fks-on-start
    ="false"
            check-fk-indices-on-start
    ="false"
            add-missing-on-start
    ="true"
            check-indices-on-start
    ="true">
    替換為
        <datasource name="defaultDS" 
            field-type-name
    ="mysql"
            helper-class
    ="org.ofbiz.core.entity.GenericHelperDAO"
            check-on-start
    ="true"
            use-foreign-keys
    ="false"
            use-foreign-key-indices
    ="false"
            check-fks-on-start
    ="false"
            check-fk-indices-on-start
    ="false"
            add-missing-on-start
    ="true"
            check-indices-on-start
    ="true">

    再修改etc\jira.xml(如果應(yīng)用服務(wù)用tomcat5.5,則修改etc\tomcat-5.5-jira.xml
    找到
        <parameter>
          
    <name>driverClassName</name>
            
    <!-- NOTE: if you change the database type, you will need to change it in WEB-INF/classes/entityengine.xml -->
          
    <value>org.hsqldb.jdbcDriver</value>
        
    </parameter>
        
    <parameter>
          
    <name>url</name>
          
    <value>jdbc:hsqldb:@JIRA_HOME@/database/jiradb</value>
        
    </parameter>
        
    <parameter>
          
    <name>username</name>
          
    <value>sa</value>
        
    </parameter>
        
    <parameter>
          
    <name>password</name>
          
    <value></value>
        
    </parameter>
    修改為
        <parameter>
          
    <name>driverClassName</name>
            
    <!-- NOTE: if you change the database type, you will need to change it in WEB-INF/classes/entityengine.xml -->
          
    <value>com.mysql.jdbc.Driver</value>
        
    </parameter>
        
    <parameter>
          
    <name>url</name>
          
    <value>jdbc:mysql://localhost:3306/jiradb?autoReconnect=true</value>
        
    </parameter>
        
    <parameter>
          
    <name>username</name>
          
    <value>jiradbuser</value>
        
    </parameter>
        
    <parameter>
          
    <name>password</name>
          
    <value>jira</value>
        
    </parameter>

    配置完后,就可以build一個(gè)jira的war包了。
    如果系統(tǒng)中已裝有ant,則直接運(yùn)行build.bat文件,沒有安裝的話,它會(huì)運(yùn)行自帶的ant。

    build運(yùn)行完后,會(huì)在當(dāng)前目錄生成三個(gè)目錄,
    dist-generic:存放通用的war包,直接拷貝到應(yīng)用服務(wù)的服務(wù)目錄中就可以運(yùn)行;
    dist-tomcat:存放發(fā)布到tomcat中的外部war包及配置文件;
    tmp:build運(yùn)行過程中的臨時(shí)文件目錄;

    dist-tomcat目錄中,有一個(gè)war包,和對(duì)應(yīng)三個(gè)tomcat版本的配置文件目錄。

    在此,拷貝dist-tomcat/tomcat-5/jira.xml$Tomcat/conf/Catalina/localhost/
    啟動(dòng)tomcat,在IE地址樣中輸入:http://localhost:8080/jira
    第一次運(yùn)行jira,顯示安裝配置頁面。(沒有裝截圖軟件,就不顯示截圖)
    在這個(gè)配置頁面,jira會(huì)根據(jù)操作系統(tǒng)的語言設(shè)置,選用相應(yīng)的語言包(漢包的效果也不錯(cuò),不存在語言問題:)),依照著相關(guān)的提示做相應(yīng)的設(shè)置就OK,唯一花時(shí)間的事,就是要在線生成一個(gè)授權(quán)碼,用下載jira的用戶名登錄,可以獲得一個(gè)援權(quán)碼,填好援權(quán)碼下一步。
    接下來是添加管理員,設(shè)置好后下一步。
    再接下來是郵件通知的設(shè)置,此處你可以暫時(shí)禁用郵件通知,以后也可以重新啟動(dòng)郵件通知。
    設(shè)置完成后就可以以剛才添加的管理員登錄,創(chuàng)建BUG跟蹤管理項(xiàng)目了。

    posted @ 2006-02-06 12:01 junctioner 閱讀(2137) | 評(píng)論 (0)編輯 收藏

    開源殺毒軟件

    用過國(guó)內(nèi)的多款殺毒軟件,也用過國(guó)外的數(shù)款殺毒軟件,用到最后是,機(jī)子里什么殺毒軟件都不裝。
    病毒還是防為主要的,真正中招了,輕傷,沒什么,這樣的病毒功力比較淺,也比較容易手工清除;重傷的話,機(jī)子里的文件已面目全非,就是用殺毒軟件也是提示“刪除該文件”。
    今天發(fā)現(xiàn)一開源的殺毒軟件(http://www.clamwin.com/),想看看他到底怎么樣,下載安裝試試。
    安裝很簡(jiǎn)單,界面也很簡(jiǎn)潔,三個(gè)功能按鈕,一看就知道怎么操作,點(diǎn)擊查毒,還真那么回事,開始掃描了。我機(jī)子的沒有中招,不知會(huì)不會(huì)掃出一些可疑文件出來:)
    這款軟件還有一個(gè)partner,功能是防毒,下載網(wǎng)址是:http://www.softpedia.com/get/Antivirus/Winpooch.shtml
    先裝上觀察幾天,過幾天給試用報(bào)告。

    posted @ 2006-01-20 09:19 junctioner 閱讀(2609) | 評(píng)論 (2)編輯 收藏

    學(xué)習(xí)python

    早就知道有這么一個(gè)東西了,一直沒時(shí)間看,今天就看看。
    第一件事,找官網(wǎng):http://www.python.org/,東西還真多,不知從哪看起。
    不喜歡看些介紹的東西,就看新手向?qū)В?A s Guide ),
    python也有它的“jdk”,最新版本是2.4.2,先下載下來再說,當(dāng)!
    裝上之后,做什么呢?
    發(fā)現(xiàn)有代碼樣例,怎么讓它跑進(jìn)來呢?
    找python的開發(fā)工具,一查,有好多,其中一種是eclipse+pydev的,試試這個(gè)
    pydev是eclipse做python開發(fā)的插件,官網(wǎng)是:http://pydev.sourceforge.net/
    對(duì)應(yīng)版本有很多種,我裝有eclipse3.1,就當(dāng)最新的,pydev0.9.8.6
    下載解開的文件,拷貝到eclipse的extplugin目錄,新建link文件,啟動(dòng)eclipse,呵呵,還裝好了!
    在IBM的網(wǎng)站上找到這個(gè)資料:http://www-128.ibm.com/developerworks/cn/opensource/os-ecant/#resources,比較老,是2004年的,但可以參照一下。
    還是在eclipse的windows-preferences-pydev中指定一個(gè)python的編輯器(剛才下載安裝python的“jdk”)。
    把其中的樣例代碼下載到項(xiàng)目中,還真跑起來了。
    也可以調(diào)試(調(diào)試運(yùn)行的比較慢,可能是eclipse3.1的問題,呆會(huì)裝個(gè)eclipse3.0的調(diào)試看看)
    現(xiàn)在不知道python的語法,代碼看不懂,這是主要的。


    posted @ 2006-01-13 15:44 junctioner 閱讀(361) | 評(píng)論 (1)編輯 收藏

    Centric CRM 開源的客戶關(guān)系管理系統(tǒng)

    官網(wǎng)下載:http://www.centriccrm.com/Portal.do?key=home
    點(diǎn)了下載圖標(biāo)后,半天沒找到下載的鏈接,左找右找,找到一個(gè)tab,上寫在download,復(fù)雜呀,還得點(diǎn)一下,看到下載的列表了,但點(diǎn)上去,還是沒反應(yīng),到底是啥回事呢?發(fā)現(xiàn)類型是.torrent,好象是BT下載的種子,以前沒用過BT,今天為了它,還得下載個(gè)BT玩玩。
    上網(wǎng)找了一個(gè),裝上,還是沒反應(yīng),快暈了。
    再左看看,右看看,上看看,哦,要求是登錄了才可以下載,注冊(cè)登錄吧,這才發(fā)現(xiàn)下載的連接是活的了。當(dāng)下了種了,再才開始下載。以前聽說BT是用來下載電影的,速度應(yīng)很快,但怎么我今天用BT,它就不快呢,每秒才幾K,才10幾M的東西,得多長(zhǎng)時(shí)間呀

    posted @ 2006-01-05 16:50 junctioner 閱讀(1527) | 評(píng)論 (1)編輯 收藏

    選用jira

    jira現(xiàn)在是商業(yè)化的軟件,先找個(gè)demo版看看。
    jira官網(wǎng):http://www.atlassian.com/software/jira/
    jira分企業(yè)版、專業(yè)版、標(biāo)準(zhǔn)版三個(gè)版本,我選專業(yè)版。
    每個(gè)版本又分standalone和war/ear兩種發(fā)布形式,standalone是被推薦使用的,就先用它。
    下載完解開,從readme里找到j(luò)ira的安裝說明鏈接:http://www.atlassian.com/software/jira/docs/v3.4.2/install.html
    照著安裝說明做,非常容易的就運(yùn)行起來了。

    裝后感覺:
       1、standalone的jira中自帶一個(gè)tomcat,jira的資源包通過修改一些配置文件已發(fā)布到這個(gè)tomcat中,只要運(yùn)行一下startup.bat就啟動(dòng)了。
       2、漢化做的不全,后臺(tái)控制部分還是英文。
       3、功能還是比較多呀,得花時(shí)間研究怎么用呀。
       4、安裝配置的時(shí)候,未配置郵件分發(fā)服務(wù)(沒仔細(xì)看怎么配置,直接選禁用郵件分發(fā)),暫缺郵件分發(fā)這一功能。
       5、產(chǎn)品試用期是30天的,得想法辦法解決
       6、安裝的時(shí)候沒有指定數(shù)據(jù)庫(kù),使用默認(rèn)的hsql,可參考下面的鏈接更換應(yīng)用數(shù)據(jù)庫(kù) http://www.atlassian.com/software/jira/docs/v3.4.2/standalone-dbconfig.html
    下面這個(gè)鏈接是講怎么更換到oracle上的
    http://www.tkk7.com/waterye/archive/2005/08/24/10959.aspx

    發(fā)現(xiàn)商業(yè)版的用戶可以獲取jira源碼,真是羨慕ing。

    posted @ 2006-01-05 09:11 junctioner 閱讀(494) | 評(píng)論 (1)編輯 收藏

    java和調(diào)用動(dòng)態(tài)鏈接庫(kù)

    Java的運(yùn)行是基于Java虛擬機(jī)的,Java虛擬機(jī)中又是一些動(dòng)態(tài)鏈接庫(kù)文件,一直不清楚它們之間是怎么樣協(xié)同工作?

    什么是動(dòng)態(tài)鏈接庫(kù)?在微軟中文網(wǎng)站(http://support.microsoft.com/default.aspx?scid=kb;zh-cn;815065)上有很清楚的介紹。
    DLL 是一個(gè)包含可由多個(gè)程序同時(shí)使用的代碼和數(shù)據(jù)的庫(kù)。

    介紹jvm.dll裝入過程:http://www.matrix.org.cn/resource/article/1/1650_jvm_loading_progress.html

    把java應(yīng)用生成本地應(yīng)用的介紹:http://community.borland.com/article/0,1410,20679,00.html

    posted @ 2005-12-31 16:45 junctioner 閱讀(972) | 評(píng)論 (0)編輯 收藏

    SWT學(xué)習(xí)樣例源碼

    昨天裝了SWT Designer后,摸索了半天,畫出幾個(gè)界面,但要讓它“活”起來,還是得寫一些代碼,暫時(shí)沒打算系統(tǒng)的去學(xué)習(xí)SWT,就偷懶,照別人的代碼畫瓢了。
    找到幾個(gè)不錯(cuò)的SWT學(xué)習(xí)源碼網(wǎng)址:
    http://www.java2s.com/ExampleCode/SWT-JFace-Eclipse/CatalogSWT-JFace-Eclipse.htm

    posted @ 2005-12-31 15:13 junctioner 閱讀(274) | 評(píng)論 (0)編輯 收藏

    安裝 SWT Designer

    我機(jī)子裝有兩個(gè)版本的eclipse,3.0.1和3.1.0
    經(jīng)常用的是3.0.1,裝上3.1.0發(fā)現(xiàn)它在調(diào)試運(yùn)行的效率上沒有3.0.1高,但它的編輯操作3.0.1方便了很多--這方面的人性化做得比較好。用eclipse主要還是用它的調(diào)試運(yùn)行,就一直沒怎么用3.1.0。

    SWT Designer主要是做界面設(shè)計(jì)的,下載匹配eclipse3.1.0的版本,看它的編輯操作是不是也很簡(jiǎn)便。

    SWT Designer的官網(wǎng):http://www.swt-designer.com/
    下載列表網(wǎng)址:http://www.instantiations.com/swt-designer/download_content.html

    我的eclipse插件都是放在$eclipse/extplugin目錄中,再到$eclipse/links目錄下建一個(gè)連接配置文件,方便插拔。

    這里有一個(gè)SWT Designer v4..1.1 的破解方法(個(gè)人使用):http://www.tkk7.com/gufen/archive/2005/11/08/14184.html

    eclipse3.0.1+swtDesigner4.2.1的,沒找到破解的方法,今天做不了比較。
    eclipse3.1.0+swtDesigner4.2.1按上面的方法,破解成功。
    運(yùn)行起來,使用感覺跟VB很象,非常容易的就能拖拽出一個(gè)界面

    posted @ 2005-12-30 10:52 junctioner 閱讀(2329) | 評(píng)論 (0)編輯 收藏

    讀報(bào)時(shí)間

    生老病死與企業(yè)無關(guān) http://gb.chinabroadcast.cn/8606/2005/12/29/381@840770.htm

    這句話甚是刺眼,競(jìng)出現(xiàn)在一些企業(yè)的合同中,對(duì)此只有感嘆無限!警醒正工作和準(zhǔn)備工作的同仁多注意勞動(dòng)合同的簽訂。

    結(jié)合個(gè)人的教訓(xùn)列幾點(diǎn):
    1、要有明確的試用期
    2、要有明確的薪資,包括試用期
    3、國(guó)家規(guī)定的三險(xiǎn)一金,(新提出的:四險(xiǎn)一金)
    4、合同或者協(xié)議一定要有一份在自己手中
    5、注意看看雙方的違約權(quán)責(zé)

    《做最好的自己》 作者:李開復(fù) http://book.sina.com.cn/nzt/spi/zuozuihaodeziji/index.shtml

    被推薦看一看的。沒仔細(xì)瞧,只簡(jiǎn)單的看了一下做父母怎么樣培育子女。

    朋友、自由、鼓勵(lì)

    “今天的中國(guó)青年,非常聰明,但是不夠自信。”

    posted @ 2005-12-30 10:14 junctioner 閱讀(184) | 評(píng)論 (0)編輯 收藏

    感慨

    最近才開始用博克,經(jīng)常上CSDN,就在CSDN上的開了一個(gè),但用了幾次,不爽!編輯、瀏覽都很慢,難以忍受,迫使我另覓“新歡”。
    看到博克園,注注試試吧,填好郵箱名后,發(fā)給我的連接就轉(zhuǎn)到BLOGJAVA上來了。在填博克類型時(shí),我選的是JAVA,也許這是轉(zhuǎn)到BLOGJAVA上來的原因之一吧。
    管它哪兒的博克服務(wù),好用就用,先試試看。
    進(jìn)來之后,發(fā)現(xiàn)它跟CSDN上的博克在風(fēng)格上象是雙胞胎,只有一些細(xì)微的區(qū)別,但有一點(diǎn),速度上好象還可以接受。

    用這個(gè)WEB編輯器,感覺比CSDN上的智能一點(diǎn),蛤發(fā)覺它不時(shí)的閃一閃,比較不爽,不知是不是頁面定時(shí)在刷新,要真這樣的話,可以改用一下最近很火的AJAX改進(jìn)試試,老閃也會(huì)閃走一些人的。

    補(bǔ)一點(diǎn),發(fā)現(xiàn)這個(gè)博克是dotNet的,可能是那個(gè)比較有名的開源dotNet博克改過來的:P。

    接補(bǔ),為什么中英混雜呀,要翻譯就全譯過來,要么就全英文得了,混血兒,一般很漂亮,但會(huì)讓人想到另一個(gè)兩個(gè)字的詞。

    New Post :新貼、ImportFromRSS 引入RSS

    再補(bǔ),這個(gè)WEB編輯器中選擇字體,沒有中文相關(guān)的字體呢。

    再接補(bǔ),這個(gè)博克是dotNet的,提交成功后返回的提示信息圖標(biāo)競(jìng)是Java的SWT中的提示信息圖標(biāo),有點(diǎn)意思。

    posted @ 2005-12-30 09:27 junctioner 閱讀(192) | 評(píng)論 (0)編輯 收藏

    [導(dǎo)入]ajax-json-rpc處理過程

    ajax
    文章來源:http://blog.csdn.net/junctioner/archive/2005/12/28/564341.aspx

    posted @ 2005-12-29 02:50 junctioner 閱讀(107) | 評(píng)論 (0)編輯 收藏

    [導(dǎo)入]國(guó)產(chǎn)Ajax實(shí)現(xiàn)-buffalo

    ajax
    文章來源:http://blog.csdn.net/junctioner/archive/2005/12/28/563787.aspx

    posted @ 2005-12-28 19:50 junctioner 閱讀(143) | 評(píng)論 (0)編輯 收藏

    <2005年12月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    導(dǎo)航

    統(tǒng)計(jì)

    常用鏈接

    留言簿(8)

    隨筆分類

    隨筆檔案

    文章檔案

    搜索

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 成人免费午夜无码视频| 99ee6热久久免费精品6| 国产成人精品免费直播| 亚洲va在线va天堂成人| 成人免费午夜无码视频| 亚洲精品456人成在线| 免费黄色一级毛片| 亚洲国产欧美一区二区三区| 免费看香港一级毛片| 激情婷婷成人亚洲综合| 一区二区三区亚洲视频| 中美日韩在线网免费毛片视频| 亚洲综合精品网站| a级毛片高清免费视频就| 亚洲美女激情视频| 亚洲一区二区三区免费视频| 色在线亚洲视频www| 国产精品国产自线拍免费软件| 爱情岛论坛免费视频| 亚洲欧洲国产精品香蕉网| 国产免费爽爽视频在线观看| 日韩精品亚洲人成在线观看| 又粗又大又黑又长的免费视频| 亚洲精品二三区伊人久久| 亚洲第一区在线观看| 国产自国产自愉自愉免费24区| 亚洲欧洲日韩在线电影| 免费的涩涩视频在线播放| aa午夜免费剧场| 亚洲码一区二区三区| 四虎国产精品免费久久影院| 中文字幕av无码不卡免费| 亚洲日本国产精华液| 内射无码专区久久亚洲| 亚洲成人免费在线| 亚洲成av人无码亚洲成av人| 亚洲欧洲日产国码无码久久99 | 天天影视色香欲综合免费| 麻豆亚洲AV成人无码久久精品 | 无人视频免费观看免费视频| 精品久久香蕉国产线看观看亚洲|