Vincent Thinking

          All about Vincent's work and life

            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            34 隨筆 :: 0 文章 :: 183 評(píng)論 :: 0 Trackbacks

          2005年11月23日 #

          posted @ 2010-03-29 22:26 Vincent Thinking 閱讀(847) | 評(píng)論 (0)編輯 收藏

          DatePicker
          posted @ 2010-03-15 23:23 Vincent Thinking 閱讀(971) | 評(píng)論 (0)編輯 收藏

          Grid篇(100列,10000行)
          posted @ 2010-03-15 23:14 Vincent Thinking 閱讀(959) | 評(píng)論 (0)編輯 收藏

          ps:Aurora是一套正在開(kāi)發(fā)中的actionscript3的ui框架. Buttons按鈕篇:
          posted @ 2009-11-09 17:17 Vincent Thinking 閱讀(313) | 評(píng)論 (0)編輯 收藏

          DoSWF 是一款非常好用的flash加密混淆工具,相比其他混淆工具,DoSWF的功能更加強(qiáng)大,混淆的也更徹底.

          1.支持as2及as3的加密。目前反編譯器完全看不到代碼
          2.支持對(duì)as3的混淆,讓反編譯器看到的是一堆亂碼
          3.支持對(duì)as3注入隨機(jī)代碼,讓反編譯軟件直接崩潰退出
          4.支持一個(gè)項(xiàng)目多個(gè)swf同時(shí)處理(doproject特性)
          5.支持對(duì)swc文件的加密
          6.方便對(duì)as3的swf添加文字、圖片水印
          7.支持對(duì)as3的swf進(jìn)行剔除重組,方便模塊開(kāi)發(fā)

          DoSWF主要分為3個(gè)不同的版本:
          MINI是DoSWF的一個(gè)簡(jiǎn)易版,擁有DoSWF最基礎(chǔ)的加密、混淆功能。優(yōu)點(diǎn)就是使用很簡(jiǎn)單.
          PROJECT版主要是針對(duì)項(xiàng)目處理而發(fā)布的。它可以一次對(duì)多個(gè)swf文件進(jìn)行綜合批量處理。
          PROFESSIONAL版即DoSWF專業(yè)版。擁有MINI版和PROJECT版所有功能。同時(shí)還有更多的特性,比如添加水印,剔除,使用域控制等

          MINI版本的價(jià)格只要人民幣50元,對(duì)于普通個(gè)人來(lái)說(shuō)僅僅是相當(dāng)于一本書的價(jià)格.

          經(jīng)過(guò)測(cè)試.混淆加密過(guò)后的文件不會(huì)被SwfScan和Sothink等反編譯工具破解,值得推薦!!

          DoSWF的地址: http://www.doswf.cn/
          posted @ 2009-11-09 17:09 Vincent Thinking 閱讀(1512) | 評(píng)論 (0)編輯 收藏

          在寫Fgantt的過(guò)程中發(fā)現(xiàn)一個(gè)奇怪的問(wèn)題,相同的代碼編譯出來(lái)的swf在其他瀏覽器下都正常,
          但是在360瀏覽器這樣的嵌入IE內(nèi)核的瀏覽器下確出現(xiàn)問(wèn)題.
          stage.stageWidth在swf加載后能夠正常的得到正確的值,但是在360瀏覽器下卻得到0.
          而且不同的是360加載完swf后會(huì)觸發(fā)一個(gè)Resize事件,這個(gè)記得在以前做js框架的時(shí)候也發(fā)現(xiàn)過(guò).
          IE FF 等不會(huì)觸發(fā).
          觸發(fā)過(guò)resize事件后,才能正常得到stageWidth的值.
          挺奇怪的現(xiàn)象,這樣導(dǎo)致原有的代碼出現(xiàn)了問(wèn)題.
          看來(lái)瀏覽器的不同還是會(huì)影響swf中的某些機(jī)制或者屬性.
          posted @ 2009-11-08 00:13 Vincent Thinking 閱讀(565) | 評(píng)論 (0)編輯 收藏

          FGantt 實(shí)現(xiàn)了網(wǎng)絡(luò)圖.

          20091106更新:
          (1)解決360瀏覽器下無(wú)法打開(kāi)的bug.
          (2)調(diào)整顏色顯示,解決Flash9下繪制錯(cuò)誤的bug.


          posted @ 2009-11-02 14:45 Vincent Thinking 閱讀(4628) | 評(píng)論 (16)編輯 收藏

          初步實(shí)現(xiàn)了甘特圖的基本功能,基于flex3構(gòu)建,跨平臺(tái) 跨瀏覽器 :)
           重寫了FGantt,不再基于flex架構(gòu).具體參見(jiàn):
          http://www.aygfsteel.com/znjqolf/archive/2009/09/24/296311.html

          posted @ 2009-07-16 00:14 Vincent Thinking 閱讀(1195) | 評(píng)論 (0)編輯 收藏

          很久沒(méi)更新,最近一直在研究的東西
          MSNP12,? LUCENE, IBATIS

          posted @ 2006-08-12 15:10 Vincent Thinking 閱讀(575) | 評(píng)論 (0)編輯 收藏

          "易用性等方面確實(shí)還有一定的差距,java的版本取勝都是在其企業(yè)級(jí)定位上"
          這點(diǎn)我非常的贊同.
          企業(yè)級(jí)的定位使它的功能強(qiáng)大了,
          同時(shí)易用性就相對(duì)削弱了一些.?"


          看到這些話就忍不住想罵人?? 什么是企業(yè)級(jí)應(yīng)用?? 企業(yè)級(jí)應(yīng)用是易用性差的借口么? 難道就只有java能做企業(yè)級(jí)應(yīng)用,php,asp就只能做做網(wǎng)站? taobao,ebay不算企業(yè)級(jí)應(yīng)用么????..... ...
          posted @ 2006-05-31 23:17 Vincent Thinking 閱讀(830) | 評(píng)論 (0)編輯 收藏

          public ? class ?ActionMapperFactory? {
          ????
          ????
          protected ? static ? final ?Log?LOG? = ?LogFactory.getLog(ActionMapperFactory. class );

          ????
          private ? static ? final ?HashMap?classMap? = ? new ?HashMap();

          ????
          public ? static ?ActionMapper?getMapper()? {
          ????????
          synchronized ?(classMap)? {
          ????????????String?clazz?
          = ?(String)?Configuration.get(WebWorkConstants.WEBWORK_MAPPER_CLASS);
          ????????????
          try ? {
          ????????????????ActionMapper?mapper?
          = ?(ActionMapper)?classMap.get(clazz);
          ????????????????
          if ?(mapper? == ? null )? {
          ????????????????????mapper?
          = ?(ActionMapper)?ObjectFactory.getObjectFactory().buildBean(clazz,? null );
          ????????????????????classMap.put(clazz,?mapper);
          ????????????????}


          ????????????????
          return ?mapper;
          ????????????}
          ? catch ?(Exception?e)? {
          ????????????????String?msg?
          = ? " Could?not?create?ActionMapper:?WebWork?will?*not*?work! " ;
          ????????????????LOG.fatal(msg,?e);
          ????????????????
          throw ? new ?RuntimeException(msg,?e);
          ????????????}

          ????????}

          ????}

          }


          明白的告訴我一下,謝謝. 覺(jué)的有點(diǎn)問(wèn)題...
          posted @ 2006-05-31 22:55 Vincent Thinking 閱讀(1755) | 評(píng)論 (0)編輯 收藏

          為了通用,從頭到尾都是utf-8.

          而webwork中JakartaMultiPartRequest對(duì)于多編碼的處理并不如意.

          apache的fileupload對(duì)于上傳文件名為中文的需要首先指定HeaderEncoding的編碼.
          而webwork對(duì)于MultiPartRequest的request并沒(méi)有設(shè)置encoding編碼
          詳見(jiàn)DispatcherUtils.java中 387行

          ???????? if ?(encoding? != ? null ? && ? ! MultiPartRequest.isMultiPart(request))? {
          ????????????
          try ? {
          ????????????????request.setCharacterEncoding(encoding);
          ????????????}
          ? catch ?(Exception?e)? {
          ????????????????LOG.error(
          " Error?setting?character?encoding?to?' " ? + ?encoding? + ? " '?-?ignoring. " ,?e);
          ????????????}

          ????????}

          如果沒(méi)有指定HeaderEncoding, 那么默認(rèn)采用request的encoding,如果request也沒(méi)有指定則采用系統(tǒng)的編碼.
          這里并沒(méi)有指定request的encoding,往往導(dǎo)致上傳文件的名字亂碼.

          自定義一個(gè)MultiPartRequest,設(shè)定一下就ok了


          對(duì)于同時(shí)提交的表單域(form)參數(shù),由于在form中指定的enctype的關(guān)系,并不能直接用request.getParameter()才取, 只能通過(guò)FileItem.getString()的方式.這里也是上面的問(wèn)題, 取的CharacterEncoding是request中的,由于webwork的原因不一致.同樣需要指定一下.

          這樣form和上傳同時(shí)提交,參數(shù),附件名都正常了 :)
          posted @ 2006-04-25 18:24 Vincent Thinking 閱讀(1391) | 評(píng)論 (2)編輯 收藏

          打開(kāi)你的firefox, 輸入:

        1. about:
        2. about:config
        3. about:credits
        4. about:buildconfig
        5. about:cache
        6. about:plugins
        7. about:mozilla

          以前還真沒(méi)有注意到.:)

        8. posted @ 2006-04-20 21:46 Vincent Thinking 閱讀(360) | 評(píng)論 (0)編輯 收藏

          ZK 一個(gè)開(kāi)源的ajax web框架,基于事件驅(qū)動(dòng)的組件,通過(guò)標(biāo)記語(yǔ)言來(lái)設(shè)計(jì)組件來(lái)簡(jiǎn)化開(kāi)發(fā)人員的工作。顯著的一個(gè)特點(diǎn)是使用類似XUL的標(biāo)記語(yǔ)言來(lái)定義組件。

          其實(shí)我對(duì)這種類似桌面的開(kāi)發(fā)方式來(lái)開(kāi)發(fā)web程序一點(diǎn)都不感冒,因?yàn)榉庋b的東西太多,勢(shì)必影響擴(kuò)展性。而且對(duì)應(yīng)的社區(qū)也很少,很多因素影響。

          一個(gè)企業(yè)應(yīng)用對(duì)于框架,技術(shù)并不是最重要的,需求和人員的素質(zhì)等等因素也是很制約的。 很多開(kāi)源的東西,在我看來(lái)只是 “看起來(lái)很美!” 回過(guò)來(lái)說(shuō)zk,能以這種方式來(lái)開(kāi)發(fā)也許能給我們很多啟發(fā)。
           
          有興趣的可以去看看:
          zk http://zk1.sourceforge.net/
          posted @ 2006-03-14 21:40 Vincent Thinking 閱讀(4112) | 評(píng)論 (2)編輯 收藏

                                                                               HSQLDB簡(jiǎn)介 
                                                                               

          Vincent 2006年2月24日
           
          一 什么是HSQLDB? 
                  HSQLDB是一個(gè)用java編寫的關(guān)系型數(shù)據(jù)庫(kù),它支持ANSI-92 SQL (BNF tree format) plus SQL 99 and 2003 enhancements. 它提供了一個(gè)非常小而快速的數(shù)據(jù)庫(kù)引擎,同時(shí)提供了相關(guān)的JDBC驅(qū)動(dòng)和一些實(shí)用的工具。
           
                   最新的HSQLDB版本為1.8.0 ,經(jīng)過(guò)了1年的開(kāi)發(fā),和1.7.2相比,1.8.0的功能更加強(qiáng)大, 對(duì)數(shù)據(jù)庫(kù)的容量支持達(dá)到了8GB,性能也更加出色。和當(dāng)年相比,HSQLDB已經(jīng)不僅僅很多人眼里的玩具,完全可以勝任商業(yè)的需求。(OpenOffice.org 2.0的數(shù)據(jù)庫(kù)引擎為HSQLDB1.8.0)
           
          這里有一張數(shù)據(jù)庫(kù)的performance test對(duì)比圖(HSQLDB的性能遠(yuǎn)遠(yuǎn)超過(guò)其他的數(shù)據(jù)庫(kù))
           


          二 HSQLDB介紹

           1.1 簡(jiǎn)介


          hsqldb.jar 包含所有的組件(數(shù)據(jù)庫(kù)引擎,jdbc驅(qū)動(dòng), 數(shù)據(jù)工具), 不同的命令用來(lái)執(zhí)行不同的組件。
          hsqldb.jar主要包含了一下組件: 

          HSQLDB RDBMS                數(shù)據(jù)庫(kù)引擎
          HSQLDB JDBC Driver          JDBC驅(qū)動(dòng)
          Database Manager            管理工具
          Query Tool (AWT)            查詢工具
          Sql Tool (command line)     SQL工具


          1.2 運(yùn)行工具(Running Tools) 

                所有的工具都以jar的方式來(lái)運(yùn)行,下面的例子講運(yùn)行AWT方式的DataBase Manager,我們假設(shè)hsqldb.jar位于../lib目錄中

           java -cp ../lib/hsqldb.jar org.hsqldb.util.DatabaseManager 

          Hsqldb工具的主類:

          org.hsqldb.util.DatabaseManager 
          org.hsqldb.util.DatabaseManagerSwing
          org.hsqldb.util.Transfer
          org.hsqldb.util.QueryTool 
          org.hsqldb.util.SqlTool 

          其中,DatabaseManager和SqlTool都可以有命令行參數(shù),你可以用-?來(lái)察看它們有什么參數(shù)。DatabaseManager和Transfer都有圖形界面可以更好地交互。
           
          1.3 運(yùn)行HSQLDB
           
          HSQLDB可以通過(guò)多種不同的方式來(lái)運(yùn)行,通常把它分為Server模式和In-Process模式(也叫做Standalone模式),對(duì)于每種模式,Jar中都有相應(yīng)的子程序來(lái)運(yùn)行HSQLDB。
           
          每個(gè)HSQLDB數(shù)據(jù)庫(kù)包含2到5個(gè)命名相同但擴(kuò)展名不同的文件組成,他們位于同一個(gè)目錄下。例如,名為“test”的數(shù)據(jù)庫(kù)包含了以下幾個(gè)文件: 

          test.properties
          test.script
          test.log 
          test.dat 
          test.backup

          properties文件包含了數(shù)據(jù)庫(kù)的基本配置,script文件包含了Table的定義和其他相關(guān)的數(shù)據(jù)對(duì)象,以及non-cached表的數(shù)據(jù)。log文件記錄了數(shù)據(jù)庫(kù)最近所做的更新。dat文件包含了cached表的數(shù)據(jù),backup文件是上一次數(shù)據(jù)庫(kù)持久化后的壓縮備份文件,所有的這些文件都是最基本的,絕對(duì)不能刪除。如果你的數(shù)據(jù)庫(kù)沒(méi)有緩沖表(cached table),test.data和test.backup文件是不會(huì)存在。此外,HSQLDB數(shù)據(jù)庫(kù)可以鏈接到磁盤上任何地方任何格式的文本文件,比如CSV 列表。
           
          當(dāng)"test"數(shù)據(jù)庫(kù)正在運(yùn)行時(shí),test.log文件用來(lái)記錄所有的操作記錄,"test.log"文件將在數(shù)據(jù)庫(kù)正常關(guān)閉(ShutDown)情況下自動(dòng)刪除。否則(在非正常退出的時(shí)候),它將用來(lái)在下次啟動(dòng)HSQLDB時(shí)恢復(fù)"test.log"中記錄的更新操作。"test.lck"文件也可以用來(lái)記錄數(shù)據(jù)庫(kù)是否被打開(kāi),它在HSQLDB正常退出的時(shí)候會(huì)被移除。有些情況下,HSQLDB會(huì)生成"test.data.old "文件,但隨后會(huì)被刪除掉。

          注意: 當(dāng)HSQLDB引擎關(guān)閉數(shù)據(jù)庫(kù)的時(shí)候,它會(huì)產(chǎn)生擴(kuò)展名為.new的臨時(shí)文件,然后會(huì)把這些文件重命名為上面所列出的文件的名稱。

          posted @ 2006-02-24 19:55 Vincent Thinking 閱讀(1949) | 評(píng)論 (1)編輯 收藏

          faint...
          posted @ 2006-02-20 09:45 Vincent Thinking 閱讀(260) | 評(píng)論 (0)編輯 收藏

          昨天研發(fā)中心項(xiàng)目組一起聚餐,聊起了軟件的發(fā)展問(wèn)題。

          對(duì)于一個(gè)軟件公司,究竟是買軟件還是買服務(wù)? 買軟件做項(xiàng)目,必然要設(shè)計(jì)到軟件的開(kāi)發(fā)定制,前期的投入是不可避免的,后期的維護(hù)成本也是很高的,客戶的需求是無(wú)止境的,往往上千萬(wàn)的項(xiàng)目做下來(lái)卻是虧本的。 從另外一個(gè)角度來(lái)看,軟件究竟是什么? 在我看來(lái),軟件就是一種特殊的服務(wù),這里的服務(wù)不是指人的因素,而是機(jī)器,是軟件,用我們老大的話來(lái)講,用人去做服務(wù)一定是虧本的。

          心里也一直有一種設(shè)想,或許以后不再依靠出售軟件,做項(xiàng)目來(lái)生存,而是出售服務(wù),尤其是基于bs結(jié)構(gòu)的服務(wù)。想想google的email,BSP,RSS reader等等,或許很快在線的erp,在線的crm, oa,cms等等就會(huì)變成現(xiàn)實(shí),當(dāng)然這里很重要的一點(diǎn)就是要做到行業(yè)的標(biāo)準(zhǔn),需要客戶來(lái)認(rèn)同你,信任你。

          這里的情景很像現(xiàn)在的網(wǎng)游,我提供服務(wù),你提供數(shù)據(jù),數(shù)據(jù)集中存放,我提供個(gè)性化的定制,提供相關(guān)聯(lián)的信息(類似gmail中的廣告),針對(duì)特殊用戶做增值服務(wù)。

          看看37signal,一個(gè)人被很多人認(rèn)為是一個(gè)很偉大的企業(yè)。我們好好思考一下,是不是應(yīng)該做點(diǎn)什么?
          posted @ 2006-02-15 10:22 Vincent Thinking 閱讀(375) | 評(píng)論 (2)編輯 收藏

          圖形化的組件,讓人感覺(jué)又回到了vb時(shí)代,雖然不是很認(rèn)同Echo2的機(jī)制,但是看到能以這樣的方式來(lái)做WEB,贊一個(gè)。^_^

          圖形組件庫(kù),事件驅(qū)動(dòng)機(jī)制,完全OO的UI的開(kāi)發(fā)模式,再加上強(qiáng)大的EchoStudio,感覺(jué)一切都完美了很多。

          EchoStudio由于是商業(yè)軟件,有一定的試用期,最不爽的就是把以前的css完全用stylesheet來(lái)替代,可是竟然沒(méi)有看到相關(guān)的schema。只能用EchoStudio來(lái)做stylesheet,這不是逼著你買么? 沒(méi)辦法,只能crack了,反編譯了一下,暗自慶幸。嘿嘿,代碼竟然沒(méi)有混淆,很容易找到了驗(yàn)證代碼。哈哈javassist2分鐘搞定。不過(guò)作為一個(gè)軟件開(kāi)發(fā)人員,還是小小的BS一下自己.....
          posted @ 2006-02-10 14:31 Vincent Thinking 閱讀(2764) | 評(píng)論 (51)編輯 收藏

          由于下大雪,機(jī)場(chǎng)關(guān)閉。原定8:20的飛機(jī),晚點(diǎn)到中午2點(diǎn)多才飛,害的我早上6點(diǎn)多就爬起來(lái)往機(jī)場(chǎng)趕。 瞌睡 Zzz...
          posted @ 2006-02-05 21:31 Vincent Thinking 閱讀(266) | 評(píng)論 (0)編輯 收藏

          WebWork 2.2 Released at January 11, 2006

          新版本是非常值得期待的.

        9. Full support for Java 5 Annotations and Generics
        10. Rich AJAX support using DWR and Dojo
        11. New QuickStart tool makes development easier than ever
        12. Tons more documentation with over 900 PDF pages!
        13. Client side validation using AJAX or plain JavaScript
        14. Built in support for Continuations
        15. JSR168/Portlet support for several popular Portlet servers, including Pluto
        16. Rich UI template framework with native support for JSP, FreeMarker, and Velocity
        17. Native support for Spring and Pico IOC containers
        18. More intelligent error reporting
        19. Developer Mode makes building webapps even easier with improved error reporting
        20. Simplified tag syntax
        21. Advanced data binding framework that works with any object, including domain objects
        22. 2.2版本是WebWork的一個(gè)新的里程碑, 接下來(lái)的主要精力將會(huì)投入到Struts Action Framework Version2.0

          posted @ 2006-01-12 11:09 Vincent Thinking 閱讀(871) | 評(píng)論 (2)編輯 收藏

          JBPM的流程定義中對(duì)于頁(yè)面綁定并沒(méi)有什么好的辦法.

          "大槍"是修改了JBPM的源代碼,來(lái)支持比如"<Task name="aa" url="/xx/yy.jsp">"的表示方法,這樣的處理效果可能不是很好,需要修改相應(yīng)的源代碼,升級(jí)的時(shí)候也要同樣修改.

          我采取了另外一種折中的方法,建立一個(gè)關(guān)聯(lián)表,或者作個(gè)配置文件,url和相應(yīng)的task name對(duì)對(duì)應(yīng)關(guān)系.

          運(yùn)行時(shí)得到相應(yīng)的Task對(duì)象,得到相應(yīng)的name,從對(duì)應(yīng)表中取出綁定的頁(yè)面進(jìn)行加載.

          posted @ 2006-01-10 20:51 Vincent Thinking 閱讀(1113) | 評(píng)論 (1)編輯 收藏

          什么是AHAH?
          AHAH:(Asychronous HTML and HTTP)
          簡(jiǎn)單來(lái)說(shuō),AHAH是一種利用JavaScript動(dòng)態(tài)更新web頁(yè)面的技術(shù).他通過(guò)XMLHTTPRequest來(lái)獲得動(dòng)態(tài)的html,填充到 web頁(yè)面中。

          和AJAX的關(guān)系?
          AHAH被認(rèn)為是一種比AJAX(Asynchronous JavaScript and XML)更簡(jiǎn)單的web開(kāi)發(fā)方式,嚴(yán)格意義上來(lái)說(shuō)AHAH是AJAX的一個(gè)子集,因?yàn)?X)HTML本身及時(shí)一個(gè)特殊形式的XML,但是最為子集的AHAH卻有特殊的和有用的特性:
          1.無(wú)需定義XML schemas可以使設(shè)計(jì)時(shí)間大幅減少

          2.使用已有的HTML頁(yè)面從而避免必須提供特殊的Web服務(wù)

          3.所有的數(shù)據(jù)通過(guò)瀏覽器可識(shí)別的HTML傳輸,從而可以很容易的調(diào)試和測(cè)試

          4.HTML直接包含在頁(yè)面的DOM對(duì)象中,無(wú)需解析

          5.HTML設(shè)計(jì)者可以使用CSS來(lái)格式化顯示,無(wú)需程序員使用XSLT轉(zhuǎn)換

          6.所有的處理都在服務(wù)器端完成,客戶端不需要編寫任何程序

          實(shí)事上,任何內(nèi)容的最終都是要轉(zhuǎn)化成瀏覽器可識(shí)別結(jié)果,展現(xiàn)在瀏覽器上。很難想象出轉(zhuǎn)化成自定義的XML格式比HTML有什么優(yōu)點(diǎn)

          參考ahah.js 和 jah.js

          Send AHAH Request

           1 function ahah(url,target) {
           2    // native XMLHttpRequest object
           3    document.getElementById(target).innerHTML = 'sending';
           4    if (window.XMLHttpRequest) {
           5        req = new XMLHttpRequest();
           6        req.onreadystatechange = function() {ahahDone(target);};
           7        req.open("GET", url, true);
           8        req.send(null);
           9    // IE/Windows ActiveX version
          10    } else if (window.ActiveXObject) {
          11        req = new ActiveXObject("Microsoft.XMLHTTP");
          12        if (req) {
          13            req.onreadystatechange = function() {ahahDone(target);};
          14            req.open("GET", url, true);
          15            req.send();
          16        }
          17    }
          18 

          Receive AHAH Request
           1 function ahahDone(target) {
           2    // only if req is "loaded"
           3    if (req.readyState == 4) {
           4        // only if "OK"
           5        if (req.status == 200 || req.status == 304) {
           6            results = req.responseText;
           7            document.getElementById(target).innerHTML = results;
           8        } else {
           9            document.getElementById(target).innerHTML="ahah error:\n" +
          10                req.statusText;
          11        }
          12    }
          13 }

          Executing Javascript

          由于瀏覽器在插入HTML的時(shí)候并不會(huì)執(zhí)行<script>標(biāo)簽中的代碼,所以你可以利用下面的方法來(lái)解決 document.getElementById(target):

           1 var bSaf = (navigator.userAgent.indexOf('Safari') != -1);
           2 var bOpera = (navigator.userAgent.indexOf('Opera') != -1);
           3 var bMoz = (navigator.appName == 'Netscape');
           4 function execJS(node) {
           5   var st = node.getElementsByTagName('SCRIPT');
           6   var strExec;
           7   for(var i=0;i<st.length; i++) {     
           8     if (bSaf) {
           9       strExec = st[i].innerHTML;
          10     }
          11     else if (bOpera) {
          12       strExec = st[i].text;
          13     }
          14     else if (bMoz) {
          15       strExec = st[i].textContent;
          16     }
          17     else {
          18       strExec = st[i].text;
          19     }
          20     try {
          21       eval(strExec);
          22     } catch(e) {
          23       alert(e);
          24     }
          25   }
          26 }
          27 

          注意:
          1.由于IE返回的tag標(biāo)志都是大寫,所以你必須搜索SCRIPT而不是script.在firefox中也保留大寫的形式.
          2.不要用//的注釋方式,用/**/的方式來(lái)代替,在每一個(gè)聲明句后面加';'

          (未完..)
          posted @ 2006-01-09 09:31 Vincent Thinking 閱讀(71760) | 評(píng)論 (2)編輯 收藏

          昨天和一個(gè)朋友去參加了上海BEA User Group.這次活動(dòng)的Topic主要有Dlee的Ajax in action , Moxie 的軟件的良性文化 ,Bea 顧問(wèn)的 SOA相關(guān)介紹 還有最后的重頭戲 Robbin的領(lǐng)域模型。 Yanger的主持還是比較精彩的,BEA的組織也比較到位,活動(dòng)中還穿插了魔術(shù)表演。整天的氛圍還是不錯(cuò)的,各位的演講也是很精彩的,但是由于活動(dòng)時(shí)間過(guò)長(zhǎng)了,感覺(jué)最后Robbin的講演還是有些沒(méi)有盡興。 每個(gè)Topic都是可以深入講下去的,但是一個(gè)下午的時(shí)間要講4個(gè)Topic,時(shí)間太倉(cāng)促了,每個(gè)Topic也只是泛泛的介紹了一下概念,感覺(jué)還不如去看JavaEye的帖子。有些失望。 應(yīng)該采用BUJG的方式,一次關(guān)注一個(gè)Topic,深入的講下去,不過(guò)想想這也算是BEA的商業(yè)活動(dòng),要達(dá)到一定的商業(yè)目的。:) 討論技術(shù)看來(lái)還是自發(fā)的組織比較好。
          posted @ 2006-01-08 11:14 Vincent Thinking 閱讀(279) | 評(píng)論 (1)編輯 收藏

          留個(gè)紀(jì)念。 2005對(duì)我個(gè)人來(lái)說(shuō)發(fā)生了很多難以忘記的事情。希望2006能有個(gè)好的開(kāi)端。也祝各位新年快樂(lè)!
          posted @ 2005-12-31 18:06 Vincent Thinking 閱讀(206) | 評(píng)論 (0)編輯 收藏

          對(duì)于每個(gè)系統(tǒng)來(lái)說(shuō),權(quán)限都是一個(gè)很重要的組成部分,貫穿于整個(gè)系統(tǒng)功能,甚至包括數(shù)據(jù)。RBAC是一個(gè)很好的模型,對(duì)于復(fù)雜的處理更多的還是和業(yè)務(wù)緊密聯(lián)系在一起,所以對(duì)于組件形式的RBAC產(chǎn)品還很難做到的。 對(duì)一個(gè)用戶來(lái)說(shuō),權(quán)限主要包括2個(gè)部分,data和action,其組合形式對(duì)我們來(lái)說(shuō)就是一個(gè)view,每個(gè)權(quán)限對(duì)應(yīng)一個(gè)相應(yīng)的view。在這里我用三維的坐標(biāo)來(lái)思考,data和action是相應(yīng)的x,y軸,不同的data,action組成一個(gè)業(yè)務(wù)視圖,從三維的角度來(lái)看是一個(gè)2維的的平面,我們的系統(tǒng)功能也就是由不同的平面來(lái)做成的。 權(quán)限可以看作z軸,view在不同的權(quán)限上會(huì)有不同的表現(xiàn)形式,展現(xiàn)不同的數(shù)據(jù),不同的操作。這樣權(quán)限,數(shù)據(jù),操作看起來(lái)就會(huì)清晰很多。 我所設(shè)想的應(yīng)該是這樣的一種方式:view由不同的view component和action component組成,這里view只是一個(gè)模板,沒(méi)有任何業(yè)務(wù)數(shù)據(jù)。 提供一個(gè)類似PrivilegeViewFactory的類,傳入view模板,和相應(yīng)的角色(用戶,組。。),生成相應(yīng)的PrivilegeView,然后由業(yè)務(wù)邏輯去填充數(shù)據(jù),這樣可以容易做到權(quán)限和view的分離,層次也比較清晰。 每個(gè)view component要實(shí)現(xiàn)相應(yīng)的權(quán)限接口,要根據(jù)不同的角色生成不同的view component。比如DataGrid,不同的角色看的列是不同的,甚至數(shù)據(jù)內(nèi)容也是不同的,更細(xì)粒度的看,業(yè)務(wù)不同字段的的數(shù)據(jù)也是不同。這部分是和ui綁定的,也是最復(fù)雜,工作量最大的部分。
          posted @ 2005-12-21 12:39 Vincent Thinking 閱讀(471) | 評(píng)論 (3)編輯 收藏

          jbpm作為jboss的一個(gè)子項(xiàng)目,和jboss綁定的比較多,官方文檔也沒(méi)有說(shuō)如何移植,下面就移植作個(gè)簡(jiǎn)要的說(shuō)明。

          1. 下載jbpm http://www.jboss.com/products/jbpm/downloads

          2. 解壓,導(dǎo)入eclispe的項(xiàng)目中 配置MYSQL 1. 在eclipse的jpbm項(xiàng)目中加入mysql的lib 2. mysql創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)"jbpm"

          3. 在eclipse的jbpm項(xiàng)目中找到'jbpm-3.0\src\resources'目錄,創(chuàng)建一個(gè)自目錄'mysql'

          4. 把同目錄hsqldb文件夾中的2個(gè)文件(create.db.hibernate.properties, identity.db.xml)拷貝到mysql目錄中

          5. 按下面所示編輯 'create.db.hibernate.properties'

          hibernate.dialect=org.hibernate.dialect.MySQLDialect
          hibernate.connection.driver_class
          =com.mysql.jdbc.Driver
          hibernate.connection.url
          =jdbc:mysql://localhost:3306/jbpm
          hibernate.connection.username
          =root
          hibernate.connection.password
          =root
          hibernate.c3p0.min_size
          =1
          hibernate.c3p0.max_size
          =3
          hibernate.show_sql
          =true


          6. 在eclipse的jbpm項(xiàng)目中找到ant腳本'build.deploy.xml',進(jìn)行編輯 找到 target name="create.db", 刪除 db.start, db.stop 在這個(gè)目標(biāo)塊中將所有的'hsqldb' 替換為 'mysql'

          7. 運(yùn)行ant create.db -buildfile build.deploy.xml創(chuàng)建jbpm表結(jié)構(gòu)

          8. 找到target name="build.webapp"按下面進(jìn)行編輯
            <target name="build.webapp" description="builds jbpm.war">
              
          <ant antfile="build.xml" target="build.webapp" /> 
              
          <mkdir dir="build/jbpm.war.dir" /> 
              
          <copy todir="build/jbpm.war.dir">
                
          <fileset dir="src/resources/jbpm.war" /> 
              
          </copy> 
              
          <copy todir="build/jbpm.war.dir/WEB-INF/lib">
                
          <fileset dir="build" includes="jbpm-webapp-${jbpm.version}.jar" /> 
                
          <fileset dir="lib/jsf" includes="*.jar" /> 
                
          <fileset dir="lib/commons" includes="commons-digester-*.jar, commons-beanutils-*.jar" /> 
              
          </copy> 
              
          <jar destfile="build/jbpm.war">
                
          <fileset dir="build/jbpm.war.dir" />
              
          </jar> 
            
          </target>


          9. 找到目錄src/resources,編輯jbpm.properties文件
          jbpm.scheduler.service.factory=org.jbpm.scheduler.impl.SchedulerServiceImpl
          jbpm.task.instance.class
          =org.jbpm.taskmgmt.exe.TaskInstance

          # uncomment the next line if JbpmSessionFactory.getInstance()
          # should lookup the singleton instance from JNDI instead of creating 
          # a default one.
          #
          #jbpm.session.factory.jndi.name
          =java:/jbpm/JbpmSessionFactory

          # uncomment the next line to use the file system instead of the database for 
          # storing files related to a process definition
          #
          # jbpm.files.dir
          =c:/jbpm.data

          # resource path to a properties file that will overwrite all the hibernate 
          # properties. For database specific builds in db project there is a different
          # hibernate.properties file on the classpath for each database. You could change
          # the default database for any testing runs by uncommenting the next line and
          # adding a hibernate.properties file in the basedir.
          #
          jbpm.hibernate.cfg.xml
          =jbpm.hibernate.cfg.xml
          #jbpm.hibernate.properties
          =jbpm.hibernate.properties

          編輯jbpm.hibernate.properties文件
          #hibernate.dialect=org.hibernate.dialect.HSQLDialect
          #hibernate.connection.datasource
          =java:/DefaultDS

          10. 找到src/config.files目錄,編輯hibernate.cfg.xml文件
              <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
              
          <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
              
          <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/jbpm3</property>
              
          <property name="hibernate.connection.username">root</property>
              
          <property name="hibernate.connection.password">root</property>
                  
              
          <!-- c3p0 connection pooling properties-->
              
          <property name="hibernate.c3p0.min_size">1</property>
              
          <property name="hibernate.c3p0.max_size">3</property>

              
          <property name="hibernate.query.substitutions">true 1, false 0</property>
              
          <property name="hibernate.connection.pool_size">15</property>

          11. 運(yùn)行ANT腳本ant build.webapp -buildfile build.deploy.xml 生成jbpm.war,拷貝到tomcat web目錄中,啟動(dòng)tomcat,輸入'http://localhost:8080/jbpm' 就可以看到他的example
          posted @ 2005-12-19 17:26 Vincent Thinking 閱讀(5851) | 評(píng)論 (14)編輯 收藏

          和我當(dāng)初的設(shè)想的一樣,ajax桌面開(kāi)始爆發(fā)了。當(dāng)初看到netvibes的時(shí)候還是測(cè)試版本,現(xiàn)在功能已經(jīng)很強(qiáng)大了。

          類似的平臺(tái)已經(jīng)有一下9個(gè):
          1. Eskobo
          2. Favoor
          3. Google
          4. Goowy(基于flash, 非Ajax)
          5. Microsoft Live
          6. Netvibes
          7. Pageflakes
          8. Protopage
          9. Zoozio
          基于ajax的rich application必然是個(gè)大的趨勢(shì),而web os是這里面很重要的部分,是rich application的all in one。我不敢說(shuō)這就是web 3.0,當(dāng)人們對(duì)2.0還很模糊的時(shí)候更不應(yīng)該做這樣的揣測(cè)。不過(guò)有一天,真有可能會(huì)像《24小時(shí)》所描繪的那樣。這也驗(yàn)證了sun的一句經(jīng)典的話:"網(wǎng)絡(luò)就是計(jì)算機(jī)". 順便BS一下 "
          posted @ 2005-12-19 12:28 Vincent Thinking 閱讀(423) | 評(píng)論 (0)編輯 收藏

          Flickr和Del.icio.us都已經(jīng)被它收歸旗下.對(duì)于新興的web2.0模式的探索者來(lái)說(shuō)無(wú)疑是一個(gè)強(qiáng)有力的興奮劑.收購(gòu)可能對(duì)于這樣的網(wǎng)站來(lái)說(shuō)是最好的方式.在現(xiàn)有的條件下,無(wú)法找到可行的盈利方式,收購(gòu)是最好的模式.人氣+資金,相信以后會(huì)做的更好. 幾個(gè)月前就關(guān)注的milliondollarhomepage今天已經(jīng)達(dá)到847000了,我從來(lái)沒(méi)有鄙視這樣的行為,一直都認(rèn)為好的創(chuàng)意是非常重要的,技術(shù)大家都會(huì),但是你不是第一個(gè)能想到的. 所以類似芙蓉姐姐的東西我從來(lái)不去關(guān)心,自然會(huì)自生自滅的,用不著我們?nèi)ダ速M(fèi)時(shí)間去諷刺和挖苦. 時(shí)間會(huì)說(shuō)明一切. 換個(gè)角度來(lái)看,做個(gè)假設(shè),如果第一個(gè)百萬(wàn)首頁(yè)是發(fā)生在國(guó)內(nèi),我想結(jié)果絕對(duì)不像1baiwan現(xiàn)在那樣的那么輕松. 國(guó)外對(duì)待新事物的發(fā)展還是保持很中立的態(tài)度的,至少?zèng)]有用輿論來(lái)抹殺它. 快圣誕了.希望能得到意外的驚喜. 嘿嘿
          posted @ 2005-12-11 17:25 Vincent Thinking 閱讀(371) | 評(píng)論 (2)編輯 收藏

          上海的天氣真是太變態(tài)了。前天還是10-20度,今天氣溫突然下降了10多度,最低已經(jīng)降到了0下,看到路上已經(jīng)結(jié)冰了。換衣服都來(lái)不及,趕快找出棉襖,帶上手套。冷。。。 第一次感到冬天來(lái)了。
          posted @ 2005-12-05 21:54 Vincent Thinking 閱讀(211) | 評(píng)論 (0)編輯 收藏

          以前一直沒(méi)用過(guò)docbook,數(shù)據(jù)和顯示分離的好處是顯而易見(jiàn)的。這個(gè)有點(diǎn)類似MVC.^_^ 很多開(kāi)源的文檔都是用docbook來(lái)處理的,數(shù)據(jù)和顯示分離,未來(lái)的趨勢(shì),再也不用在word中搞排版了,就好像html中的div+css,爽啊。


          一些關(guān)于docbook的文檔:
          Writing Documentation Using DocBook
          DocBookAuthoringTools
          DocBook學(xué)習(xí)
          posted @ 2005-11-29 22:54 Vincent Thinking 閱讀(454) | 評(píng)論 (0)編輯 收藏

          當(dāng)需要取到鼠標(biāo)點(diǎn)擊相對(duì)于層的位置信息時(shí),在ie下可以用event.offsetX, evnet.offsetY,在Firefox下是event.layerX, event.layerY。但是firefox下總是有問(wèn)題,取到的不是相對(duì)于層的坐標(biāo),而是pageX,pageY。 Google了半天也沒(méi)有發(fā)現(xiàn)什么解決辦法,最后在一個(gè)網(wǎng)站看到一個(gè)例子,原來(lái)在層中要設(shè)置position為absolute或者relative。 OK,問(wèn)題解決,這點(diǎn)問(wèn)題竟然讓我花費(fèi)了2個(gè)小時(shí)。 :(
          posted @ 2005-11-25 16:24 Vincent Thinking 閱讀(3133) | 評(píng)論 (7)編輯 收藏

          感恩節(jié)的由來(lái): 在美國(guó),每年11月的最后一個(gè)星期四是舉國(guó)同慶的感恩節(jié),規(guī)定從這一天起休假三天。即使遠(yuǎn)在異鄉(xiāng)的美國(guó)人也都要在節(jié)日前趕回去與家人團(tuán)聚,共慶佳節(jié)。美國(guó)人對(duì)感恩節(jié)重視的程度,堪與傳統(tǒng)的盛大節(jié)日-圣誕節(jié)相比。 為什么叫感恩節(jié)呢?追根溯源,感恩節(jié)是和美洲古代的印第安人,特別是和玉米的種植有十分密切的關(guān)系。1620年9月6日,一批英國(guó)清教徒難以忍受宗教的迫害,搭乘“五月花號(hào)”木船駛往美洲。他們?cè)谄凇囸I、寒冷和疾病的襲擊下在大西洋上漂泊了65天,最后到達(dá)北美殖民地的普利茅斯。 當(dāng)時(shí)正值冬季,氣候嚴(yán)寒,田野寂寥。當(dāng)?shù)赜〉诎踩丝犊啬贸鲑A藏越冬的玉米和土豆,送去獵獲的野鴨和火雞。春天來(lái)了,印第安人教他們種植玉米和南瓜,飼養(yǎng)火雞。白人移民和印第安人建立了親密的友誼。這年秋季玉米豐收,移民們舉行了豐盛的感恩會(huì),用烤火雞和玉米糕點(diǎn)款待印第安人。印第安人帶著各種玉米制品、烤火雞、南瓜餡餅、野葡萄以及玉米酒漿等參加晚會(huì),人們歡唱歌舞,通霄達(dá)旦。以后在每年玉米收獲后的11月底,定居在這里的白人移民都要舉行感恩會(huì),家家烤火雞,烹制玉米食品,款待印第安人。長(zhǎng)此以往,這種感恩會(huì)就成為一種慣例。但是,當(dāng)時(shí)感恩節(jié)的時(shí)間并不固定,直至1863年,美國(guó)總統(tǒng)林肯宣布把感恩節(jié)定為全國(guó)性的節(jié)日,號(hào)召人民同心同德,為美國(guó)的繁榮昌盛作出努力。為了紀(jì)念感恩節(jié),在普利茅斯城的薩摩特大街修建了一座巨大的移民先驅(qū)者紀(jì)念碑。高達(dá)10米的乳白色先民雕像,搭著披肩,手指蒼穹,在四塊大理石浮雌上描述了到普利茅斯未的第一批移民的故事和感恩節(jié)的淵源。現(xiàn)今,玉米制品仍然是歡度感恩節(jié)的不可缺少的食品之。
          posted @ 2005-11-24 09:16 Vincent Thinking 閱讀(336) | 評(píng)論 (5)編輯 收藏

          由于現(xiàn)在產(chǎn)品是一個(gè)ERP系統(tǒng),對(duì)于工作流的需求并不像我曾經(jīng)做過(guò)的政府審批系統(tǒng)的復(fù)雜。所以對(duì)于工作流的的技術(shù)選擇,范圍也相對(duì)廣的多。XPDL相對(duì)要熟悉一些,但是看了相關(guān)的開(kāi)源框架,研究了一下Shark,發(fā)現(xiàn)了很多問(wèn)題。對(duì)于Shark這樣龐大的工作流系統(tǒng),要整合到產(chǎn)品中,單從技術(shù)角度來(lái)看就會(huì)有很多問(wèn)題,DODS很難替換成Hibernate,系統(tǒng)代碼量龐大,也不利于改進(jìn),所以綜合考慮,最終選擇了JBPM這個(gè)開(kāi)源工作流。
                產(chǎn)品中需要一個(gè)工作流設(shè)計(jì)器,JBPM的設(shè)計(jì)器基于Eclipse,這點(diǎn)不符合我們的要求。我們需要的是Online WorkFlowEditor,直接在頁(yè)面上畫出流程圖,直接在頁(yè)面上發(fā)布,省去了流程文件的上傳發(fā)布的一系列操作。所以最后采用了Applet的方式,當(dāng)然我們把jre安裝環(huán)境集成到了系統(tǒng)中,頁(yè)面檢測(cè)IE的jre選項(xiàng),自動(dòng)安裝JRE插件。
                Applet采用了Jgraph這個(gè)開(kāi)源庫(kù),用了下,確實(shí)很不錯(cuò),幾個(gè)demo做的也很漂亮。
                項(xiàng)目中做的設(shè)計(jì)器,畫好流程圖,對(duì)于每個(gè)節(jié)點(diǎn),選擇相應(yīng)的組件,生成后直接上傳到服務(wù)器端。下面是一個(gè)截圖:

          workflowdesigner.JPG
          posted @ 2005-11-23 20:56 Vincent Thinking 閱讀(7784) | 評(píng)論 (67)編輯 收藏

          主站蜘蛛池模板: 梁山县| 子洲县| 宜宾市| 齐河县| 当阳市| 汽车| 南汇区| 那曲县| 河东区| 安泽县| 沛县| 农安县| 乐安县| 响水县| 宁乡县| 肥城市| 泰来县| 吉林市| 绥中县| 新闻| 麻江县| 盐边县| 南安市| 古交市| 礼泉县| 嘉祥县| SHOW| 黎川县| 都兰县| 广宁县| 隆尧县| 涡阳县| 定日县| 柳河县| 蒙山县| 三原县| 佛坪县| 新平| 集贤县| 祁阳县| 青岛市|