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

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

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

    Vincent Thinking

    All about Vincent's work and life

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

    2005年11月23日 #

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

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

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

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

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

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

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

    MINI版本的價格只要人民幣50元,對于普通個人來說僅僅是相當(dāng)于一本書的價格.

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

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

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

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

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


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

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

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

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

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

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


    看到這些話就忍不住想罵人?? 什么是企業(yè)級應(yīng)用?? 企業(yè)級應(yīng)用是易用性差的借口么? 難道就只有java能做企業(yè)級應(yīng)用,php,asp就只能做做網(wǎng)站? taobao,ebay不算企業(yè)級應(yīng)用么????..... ...
    posted @ 2006-05-31 23:17 Vincent Thinking 閱讀(824) | 評論 (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);
    ????????????}

    ????????}

    ????}

    }


    明白的告訴我一下,謝謝. 覺的有點問題...
    posted @ 2006-05-31 22:55 Vincent Thinking 閱讀(1748) | 評論 (0)編輯 收藏

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

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

    apache的fileupload對于上傳文件名為中文的需要首先指定HeaderEncoding的編碼.
    而webwork對于MultiPartRequest的request并沒有設(shè)置encoding編碼
    詳見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);
    ????????????}

    ????????}

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

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


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

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

    打開你的firefox, 輸入:

  • about:
  • about:config
  • about:credits
  • about:buildconfig
  • about:cache
  • about:plugins
  • about:mozilla

    以前還真沒有注意到.:)

  • posted @ 2006-04-20 21:46 Vincent Thinking 閱讀(350) | 評論 (0)編輯 收藏

    ZK 一個開源的ajax web框架,基于事件驅(qū)動的組件,通過標(biāo)記語言來設(shè)計組件來簡化開發(fā)人員的工作。顯著的一個特點是使用類似XUL的標(biāo)記語言來定義組件。

    其實我對這種類似桌面的開發(fā)方式來開發(fā)web程序一點都不感冒,因為封裝的東西太多,勢必影響擴(kuò)展性。而且對應(yīng)的社區(qū)也很少,很多因素影響。

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

                                                                         HSQLDB簡介 
                                                                         

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


    二 HSQLDB介紹

     1.1 簡介


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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    WebWork 2.2 Released at January 11, 2006

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

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

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

    JBPM的流程定義中對于頁面綁定并沒有什么好的辦法.

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

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

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

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

    什么是AHAH?
    AHAH:(Asychronous HTML and HTTP)
    簡單來說,AHAH是一種利用JavaScript動態(tài)更新web頁面的技術(shù).他通過XMLHTTPRequest來獲得動態(tài)的html,填充到 web頁面中。

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

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

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

    4.HTML直接包含在頁面的DOM對象中,無需解析

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

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

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

    參考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的時候并不會執(zhí)行<script>標(biāo)簽中的代碼,所以你可以利用下面的方法來解決 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.不要用//的注釋方式,用/**/的方式來代替,在每一個聲明句后面加';'

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

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

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

    對于每個系統(tǒng)來說,權(quán)限都是一個很重要的組成部分,貫穿于整個系統(tǒng)功能,甚至包括數(shù)據(jù)。RBAC是一個很好的模型,對于復(fù)雜的處理更多的還是和業(yè)務(wù)緊密聯(lián)系在一起,所以對于組件形式的RBAC產(chǎn)品還很難做到的。 對一個用戶來說,權(quán)限主要包括2個部分,data和action,其組合形式對我們來說就是一個view,每個權(quán)限對應(yīng)一個相應(yīng)的view。在這里我用三維的坐標(biāo)來思考,data和action是相應(yīng)的x,y軸,不同的data,action組成一個業(yè)務(wù)視圖,從三維的角度來看是一個2維的的平面,我們的系統(tǒng)功能也就是由不同的平面來做成的。 權(quán)限可以看作z軸,view在不同的權(quán)限上會有不同的表現(xiàn)形式,展現(xiàn)不同的數(shù)據(jù),不同的操作。這樣權(quán)限,數(shù)據(jù),操作看起來就會清晰很多。 我所設(shè)想的應(yīng)該是這樣的一種方式:view由不同的view component和action component組成,這里view只是一個模板,沒有任何業(yè)務(wù)數(shù)據(jù)。 提供一個類似PrivilegeViewFactory的類,傳入view模板,和相應(yīng)的角色(用戶,組。。),生成相應(yīng)的PrivilegeView,然后由業(yè)務(wù)邏輯去填充數(shù)據(jù),這樣可以容易做到權(quán)限和view的分離,層次也比較清晰。 每個view component要實現(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 閱讀(466) | 評論 (3)編輯 收藏

    jbpm作為jboss的一個子項目,和jboss綁定的比較多,官方文檔也沒有說如何移植,下面就移植作個簡要的說明。

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

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

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

    4. 把同目錄hsqldb文件夾中的2個文件(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項目中找到ant腳本'build.deploy.xml',進(jìn)行編輯 找到 target name="create.db", 刪除 db.start, db.stop 在這個目標(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目錄中,啟動tomcat,輸入'http://localhost:8080/jbpm' 就可以看到他的example
    posted @ 2005-12-19 17:26 Vincent Thinking 閱讀(5826) | 評論 (14)編輯 收藏

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

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

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

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

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


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

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

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

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

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

    主站蜘蛛池模板: 亚洲国产精品va在线播放| 九九九精品成人免费视频| 色www永久免费| 国产精品高清免费网站 | 国产日产亚洲系列| 亚洲精品和日本精品| 亚洲精品无码久久毛片| 国产成人精品久久亚洲高清不卡 | 亚洲国产成人久久综合野外| 亚洲精品永久在线观看| 亚洲中文字幕一区精品自拍| 亚洲av无码精品网站| 亚洲av无码片在线播放| 亚洲一区影音先锋色资源| 亚洲福利一区二区精品秒拍| 亚洲精品无码高潮喷水在线| 亚洲国产精品一区第二页 | 最近2019中文字幕mv免费看| 91制片厂制作传媒免费版樱花| 中文字幕视频免费| 67194成是人免费无码| 国产免费久久精品久久久| 亚洲精品视频在线观看你懂的| 亚洲色欲久久久综合网东京热| www亚洲精品少妇裸乳一区二区 | a级精品九九九大片免费看| 最近免费mv在线观看动漫| 亚洲免费在线视频播放| 99精品视频免费在线观看| 国产成人精品免费视| 日韩精品视频免费网址| 最近中文字幕mv免费高清电影| 免费国产综合视频在线看| 亚洲日韩精品无码专区网址| 97久久精品亚洲中文字幕无码| 日本久久久久亚洲中字幕| 亚洲精品一二三区| 亚洲欧洲日产国码久在线| 一级日本高清视频免费观看| 中文字幕免费高清视频| 国产精品国产午夜免费福利看|