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

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

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

    littleQ

    終于明白曾經他們失落的目光,當年的你們是否一樣;間有懈怠或有頹放,難知多久方能補上;今起,不再彷徨!

      BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
      33 Posts :: 0 Stories :: 60 Comments :: 0 Trackbacks

    #

    我這里說的淘寶的可樂,不是掛在http://www.taobao.com上買的可樂,而是淘寶公司里,實實在在可以喝的可樂。說是可樂,其實就是飲料的代名詞了。
    昨天上午去淘寶,發現在樓梯口有一個冰箱,里面有很多種飲料,冰箱上貼著字條:一元一瓶,請自取。
    沒人看管,你拿多少罐,都不會有人知道。但是我還沒有看到有人拿了飲料卻不付錢的,大家都很自覺地把錢塞進了錢箱。
    一元一罐,是公司對員工的福利;員工又靠這種自覺,享受這種福利。

    posted @ 2008-08-15 08:26 littleQ 閱讀(176) | 評論 (0)編輯 收藏

    在js里,一個中文字符的length是1,但是提交到數據庫中,就占了兩個字節,驗證誤差,直接拋異常。
    如果一個字段在oracle里是varchar2(64),如果錄入33個漢字,用length的話是33,但是到oracle里就是66個字節了,插入操作肯定出錯。
    我們可以定義一個新的函數getBytes()取得字符串的字節數,在java里,這個函數是標準函數。
    String.prototype.getBytes = function() {    
        
    var cArr = this.match(/[^\x00-\xff]/ig);    
        
    return this.length + (cArr == null ? 0 : cArr.length);    
    }


    function paramCheck(cur){
        
    if(cur.value.getBytes() > 64){
        alert(
    "字符超過64個字符");
        
    return false;
        }

        
    return true;
    }
    getBytes用正則表達式來判斷字符串中包含漢字的個數,包含的漢字都放到數組cArr中,這樣cArr的長度就是漢字的總數。getBytes方法返回length加上漢字數,就是總的字節數。
    只是使用了[^\x00-\xff],這個有點惡心,有些特殊字符也是能匹配到的,比如}等。
    但是如果使用[^\u4E00-\u9FA5]的話,卻不能匹配到中文……

    posted @ 2008-08-12 15:52 littleQ 閱讀(6303) | 評論 (6)編輯 收藏

    我們有個很小的升級包要做,其實就是在某個頁面加個鏈接,屬于文案的修改。看上去,應該是很簡單的,幾秒種就能搞定的事情。可是事實卻非如此。

    早上9點,發郵件向SCM申請分支權限,大概11點的時候,拿到分支的讀寫權限,開始checkout,幾十M的東西,速度不是很快,花了好幾分鐘的時間。然后開始編譯,Eclipse導入工程……老太婆似的拖了半個多小時(第一次import,總是特別慢)。這時才進入升級包的主題---文案修改。幾秒鐘寫完。因為參數是動態的,就要重新編譯后部署到jboss自測一下,啟動jboss也是一個漫長的過程,war包太大。

    jboss的啟動,花了2-3分鐘,這時候,機器已經很卡,2G的內存都有點吃不消,打開IE都慢了很多。

    把所有的功能,都放到一個應用里,的確是一件很愚蠢的事情……公司現在在做的事情,就是慢慢的開始重構,做面向服務的應用。我們還剛剛開始起步……

    posted @ 2008-08-12 14:38 littleQ 閱讀(173) | 評論 (0)編輯 收藏


    在javaeye上看到有人推薦這本《java并發編程實踐》,正好又聽我們公司的一個同事說起,說這本的確不錯。

    作為一名java開發人員,尤其是j2ee開發,并發的處理是大頭。

    附書評:
    Sun社區線程指導區推薦讀物之一(當然是推薦的英文版)。書寫的循序漸進,實例豐富。這次博文的中文版翻譯質量較好,還沒有全部看完,但已經開始對幾個做java的朋友推薦了 :) 

    Java currency framework是java 5新加入的,但感覺了解的人不多,多數人還是自己寫線程池,隊列。這個框架其實已經融入到Java里面,學會使用這個框架能讓多線程程序的編寫事半功倍。另外對其他語言的多線程編程也會有所啟發。現在國內能買到的詳細解釋這個框架的書不多,這本書算是現階段的精品了。
    posted @ 2008-08-11 14:24 littleQ 閱讀(178) | 評論 (1)編輯 收藏

    話說有了DVD,linux的安裝就是很簡單的事情了,和硬盤安裝相比----尤其當你當前的操作系統是vista的時候,硬盤安裝很是繁瑣。

    當然,DVD安裝也不是一帆風順的事情,昨天,我搞到一張正版的SuSE Enterprise Desktop 10,安裝的時候,還是遇到了一個小問題,相信很多人也是遇到過的。

    在選擇安裝后,讀盤十幾秒后就會停止,彈出一下提示:

    Could not find the SUSE Linux Installation CD

    Activating manual setup program.

     

    這是因為找不到光驅的USB驅動。如果你是牛人的話,知道怎么在kernel model里加載正確的模塊驅動,就沒必要繼續看下去了~我自己嘗試著去加載一下驅動,太多了,無所適從~

    在網上找到了一些相關帖子,并成功的找到了解決方案。

    是在從光盤啟動后,后看到安裝界面:

    boot from harddisk
    start installation
    start installation without ********
    ********************忘了*****

     

    反正有四個選項,一般來說就是選第二個,直接進入安裝了,但是這樣就可能會出現找不到CD的錯誤提示。如何解決?很簡單。選在start installation時,下方會有一個option輸入框,輸入"insmod=ide-generic"即可。enter,成功。

     

    后面的安裝過程,我就不多說了。還需要強調的一點是,總共的安裝時間是在1個多小時,需要安裝的人不要在半夜進行……會很困~

    posted @ 2008-08-08 10:28 littleQ 閱讀(1260) | 評論 (0)編輯 收藏

    今天聽到一個很有意思的,也很黃的比喻:淘寶好比是一家妓院。

    淘寶現在還是小淘寶,賣家必須把商品放到淘寶上,買家才能看到,比較狹隘。淘寶現在要做的,是大淘寶。任何商家只要接入淘寶提供的開放平臺,C類買家就能找到自己想要的商品。

    淘寶就是一個妓院,C類和B類賣家,都是妓女,而買家,就是嫖客了。嫖客來妓院,找的就是妓女,他不管你妓女是哪來的。搜索,就是找最合適的,最喜歡的妓女。

    而支付寶做什么?支付寶就是避孕套,安全交易,就用支付寶。

    作為一個支付工具,公正是原則性的。不能說給淘寶提供優質的安全套,就給其他商戶劣質的不安全的產品。也不能說,你想用我的避孕套,就來淘寶這家妓院,這不行的。嫖客想去哪家妓院,是嫖客的事。


    很夠馬叉蟲的……不過,很形象。

    posted @ 2008-08-07 21:48 littleQ 閱讀(258) | 評論 (1)編輯 收藏

    晚上在公司快回家的時候,正好看到李斯在看他的blog流量,就順便問了一下他個廣告收入。聽到結果后還是挺驚訝的,比我想象的多。然后他就在鼓動我去弄個dreamhost,說了一大堆,說什么只要你弄的好,賺錢那是肯定的,再差也肯定能收回本錢。聽了覺得還是比較心動,有錢賺,誰不喜歡呢。接著他又說申請一年的,他有優惠碼,可以幫我優惠50美金。50美金哦!當時差點按捺不住就辦了。

    可是稍微想想,我只是一個剛開始寫blog的新人,網絡廣告也向來被大家深惡痛絕,我想我還是再觀望著比較好。不能被這點錢迷了心智,blog還是要好好寫,練好自己的文風,慢慢能把blog寫好,于己于人,都是一件很好的事情。至于廣告,以后再說吧,現在有空去學學其他的理財,也許這樣更合理一些。

    記得前幾天還看到有人發帖,痛罵了那些在自己首頁發廣告的人,當時看的時候,也是覺得一個技術論壇,廣告能少則少。如果真要放首頁,放到頁尾吧……

    posted @ 2008-08-01 22:28 littleQ 閱讀(133) | 評論 (0)編輯 收藏

     Deploying the application

    在我們運行Controller之前,必須對其進行編譯。我們可以使用javac或者任何IDE去編譯Controller。接下來,我們要讓Tomcat知道我們的web應用程序。我們需要創建一個war包,然后部署到Tomcat中,這步只需要將war包拷貝到:/dev/Tomcat6/webapps目錄下。

    我們的.war文件中的/WEB-INF文件夾包含以下文件:

    web.xml
    induction-demoapp.xml

    以下.jar文件在WEB-INF/lib:

    acciente-induction-1.x.xb.jar
    acciente-commons-1.x.xb.jar

    最后,以下工具jar包也同樣在WEB-INF/lib:

    apache-bcel-5.2.jar
    apache-commons-collections-3.2.1.jar
    apache-commons-digester-1.8.jar
    apache-commons-fileupload-1.2.1.jar
    apache-commons-io-1.4.jar
    apache-commons-logging-1.1.1.jar
    apache-freemarker-2.3.12.jar

    這些.jar文件分別來自于這些工程:Apache Commons庫和Apache BCEL庫來自Apache Software Foundation. Freemarker庫源自Visigoth Software Society.

    我們主意到應用程序類的代碼(在這里,就是單個Controller)沒有存儲在.war文件中,相反,我們會在應用程序的配置文件induction-demoapp.xml中指明編譯后.class文件的位置.不管我們什么時候重新編譯一個應用程序類,下一次訪問這個類的時候,Induction會檢測出class文件發生了變化,然后"熱部署"JVM.因此,當我們修改或者編譯應用程序類的時候,沒有必要去重新創建或者重新部署war.

    Induction同樣也支持將應用程序類放到.war/WEB-INF/classes,或者將.jar放到/WEB-INF/lib,或者Tomcat可以找到的classpath下的其他任何位置.不過在開發中,我們推薦將應用程序類放在war包外面,這樣可以通過class"熱重載"來提高生產率.如果有必要的話,應用程序類可以重新打包成.war文件用于傳遞.接下來,我們來看看war包里面的內容.

    首先來看看web.xml.我們在web.xml中所需要做的就是定義Inductiondispatcher servlet去處理對應用程序的請求.

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns="http://java.sun.com/xml/ns/javaee"
               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
               xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
              http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
               version="2.5">
       <description>DemoApp</description>

       <servlet>
           <servlet-name>demoapp</servlet-name>
           <servlet-class>com.acciente.induction.dispatcher.HttpDispatcher</servlet-class>
           <load-on-startup>1</load-on-startup>
       </servlet>

       <servlet-mapping>
           <servlet-name>demoapp</servlet-name>
           <url-pattern>/*</url-pattern>
       </servlet-mapping>
    </web-app>

    我們再來看看induction-demoapp.xml的內容.假設我們編譯后的應用程序類是放在c:/project/demoapp/classes目錄下,induction-demoapp.xml的內容就是:

    <!-- this file contains the configuration for the Induction dispatcher -->
    <config>
    <!-- The following section allows you to specify locations from which
    Induction will automatically reload a class if the file has changed -->
    <java-class-path>
    <compiled-directory>
    <directory>c:/project/demoapp/classes</directory>
    </compiled-directory>
    </java-class-path>
    </config>

    創建好上面所描述的war包后,部署到Tomcat.現在,我們可以開始運行我們的應用程序了.

    Running the application

    假設Tomcat運行在localhost:8080,war包的名字是induction-demo.war,在瀏覽器中輸入以下URL:

    http://localhost:8080/induction-demo/demoapp/helloworld1_app/HelloWorldController/

    你會在瀏覽器輸出界面看到字符串:

    Hello World, using a simple println()

    Controlling the URL resolution

    現在我們來進一步的看下用來運行ControllerURL:http://localhost:8080/induction-demo/demoapp/helloworld1_app/HelloWorldController/.第一部分http://localhost:8080/induction-demo通過Tomcat指向dispatcher servlet,也就是說這一部分是與Induction無關的.通過Induction處理的URL部分是/demoapp/helloworld1_app/HelloWorldController/.

    InductionURL分解成完整的Controller類和方法名.URL轉換成Controller的類名和方法名,是通過InductionControllerResolver類口完成的.當開發者沒有指定一個定制的Controller resolver,Induction會默認使用一個相當簡單的controller resolver.默認的controller resolver是這么工作的:分析路徑/demoapp/helloworld1_app/HelloWorldController/,把第一個'/'到最后一個'/'之間的內容作為完整的類名(/demoapp/helloworld1_app/HelloWorldController/就是對應到demoapp.helloworld1_app.HelloWorldController).最后一個'/'后所有的內容作為方法名.在我們的例子中,最后一個'/'后沒有任何字符串,因此默認的resolver會使用一個隱性的方法名(默認的resolver使用"handler"作為隱性的方法名,不過可以在Induction的配置文件中進行修改).

    Dynamic reloading

    我們來找點樂子,修改一下controller中打印的字符串的值,編譯后重新刷新你的瀏覽器,你會發現修改起了作用.不必再經過"創建war->重新部署->等待"的過程了.

    Conclusion

    總結一下我們的指南.在指南中,我們討論了一些關鍵的思想,在接下來的view Tutorial中會介紹在Induction中如何使用views.Modles會在Modles Tutorial中進行介紹.

    posted @ 2008-07-31 22:17 littleQ 閱讀(1108) | 評論 (4)編輯 收藏

    歡迎使用Induction!Induction是使用java編程語言進行web應用開發的健壯高性能的框架。Induction屬于基于請求的web框架,作為一個servlet部署在servlet容器中。Induction宣揚MVC的方法進行web應用開發。Induction的幾個關鍵設計目標是:
    1.當modles,views和controllers發生變化時,消除對web應用程序必須重載的需求(我們相信一次簡單的頁面刷新就足夠了)
    2.modles,views,controllers之間的綁定是聲明式的,這種方式可以在任何IDE中都能被解析
    3.使得數據跟蹤在用戶界面模板中可用(尤其是HTML模板)
    4.文件上傳處理應該簡單到很平凡的地步
    5.在HTML表格中,數組(arrays)和字典類型(dictionary types )的使用應該盡可能簡單
    6.明智的使用XML(在每個應用程序中,Induction只需要一個XML文件)
    7.是一種能夠適應多種pattern應用的可擴充的架構
    8.高性能
    9.從JDK1.4到1.6都兼容(包括1.4和1.6)

    About this tutorial
    這份指南的目的是讓你更快的使用Induction。Induction需要一個servlet容器。在這份指南中,我們使用Apache的Tomcat,不過你可以選擇使用任何服從標準的servlet容器。

    Installing
    我們假設你已經在c:/dev/Tomcat6安裝了Tomcat6。Induction本身不需要任何的安裝步驟,它的jar包可以很容易地引入到你的web應用程序中。

    Writing our first application - hello world
    在這份指南中,我們會寫一個簡單的"hello world"應用,在這個應用里我們會列舉出Induction的許多重要概念。

    Writing a controller
    首先我們寫一個controller作為我們指南的開始,因為controllers是web應用程序中一個典型的entry。好,現在讓我們開始寫一個controller,讓它在瀏覽器中打印一串字符。

    package demoapp.helloworld1_app;
     
    import com.acciente.induction.controller.Controller;
    import com.acciente.induction.controller.Response;
    import java.io.IOException;

    /**
     * A very simple controller that does the customary "Hello World"
      
    */

    public class HelloWorldController implements Controller
    {
       
    public void handler( Response oReponse ) throws IOException
       
    {
          oReponse.setContentType( 
    "text/plain" );
          oReponse.out().println( 
    "Hello World, using a simple println()" );
       }

    }
     

    在我們運行這個controller之前,先仔細的看一下。首先我們注意到HelloWorldController類實現了Induction的Controller,Controller接口只是一個簡單的標記接口,沒有定義任何方法給它的實現類。當Induction接收到一個request請求后,激活一個Controller實現,比如HelloWorldController類,Induction首先核實這個類是否是實現Controller接口。因此目前Controller接口的存在的唯一理由是安全(主要考慮到Controller接口的可配置性)。因為Controller只是一個標記性接口,所以handler方法并不是接口定義的。

    接下來,我們可以看到handler方法有一個Response參數,Response類是繼承javax.servlet.http.HttpServletResponse接口,并簡單的對servlet容器的response對象進行了封裝。Induction通過注入的方式,將參數Response值傳給handler方法。一些能夠作為handler參數的值,也是通過自動注入的方式,只要它們是遵循以下類型:
    Type Description
    Request facade to the servlet request, extends javax.servlet.http.HttpServletRequest
    Response facade to the servlet response, extends javax.servlet.http.HttpServletResponse
    Form provides access to the HTML form (if any) submitted with this request
    ControllerResolver.Resolution provides access to the controller resolution object (very useful for writing generic parameterized controllers)
    model_class_name instance of a user provided model class, the instance is managed to conform to a user specified lifecycle

    上面的類名是不完整的,Request, Response和Form類的更多信息,在package com.acciente.induction.controller中查看。

     

    原文地址:http://www.inductionframework.org/getting-started-tutorial.html

    先翻譯一部分放上來,后面的會盡快貼出。

    翻譯的不通暢的地方,請見諒~

    posted @ 2008-07-30 22:16 littleQ 閱讀(1154) | 評論 (3)編輯 收藏

    Induction,一種新的java web應用框架。國內好像還沒有相關中文資料。最近事情不是很多,準備翻譯一下它的官方指南,打發一下時間,順便也鍛煉一下英語能力。
    如果有誰對Induction也有興趣的,歡迎一起啊~

    先給上官方的http://www.inductionframework.org/getting-started-tutorial.html
    posted @ 2008-07-30 16:46 littleQ 閱讀(106) | 評論 (0)編輯 收藏

    僅列出標題
    共4頁: 上一頁 1 2 3 4 下一頁