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

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

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

    posts - 193,  comments - 520,  trackbacks - 0
     

    周六參加了agileChina + BJUG 的活動(dòng),把我參加這次活動(dòng)的一點(diǎn)體會(huì)記下來(lái):
    1)那天的風(fēng)特大,走到理想大廈的時(shí)候那風(fēng)差點(diǎn)把我給刮跑了。于是我就在想理想大廈里上班的人肯定是都穿羽絨服的,后來(lái)一
    ?? 看果不其然。結(jié)果是周日馬上給自己買了件羽絨服。

    2)自我介紹:
    ? 冰云讓每個(gè)人用三個(gè)詞來(lái)概括自己,我說(shuō)了真誠(chéng)、愛(ài)讀書和運(yùn)氣好。真誠(chéng)是因?yàn)槲耶?dāng)過(guò)兵;愛(ài)讀書嗎,其實(shí)是現(xiàn)在讀書的時(shí)間越來(lái)越少了,雜文倒是喜歡。運(yùn)氣好,上次參加BEA UG時(shí)莫映就給我抽了個(gè)一等獎(jiǎng),所以....

    3)topic 1 CMM VS AGILE, 講演者:楊崑(PHD在讀)
    ? 好多專業(yè)術(shù)語(yǔ)我都沒(méi)聽(tīng)過(guò),大部分要靠想象去理解。還好知道單回路和雙回路是什么:)理論總是讓人難以理解的。

    4)topic 2 DSL In Practice 講演者:徐昊(TW)
    ?第一次見(jiàn)到徐昊是在去年的BEA UG,當(dāng)時(shí)是一個(gè)老外介紹Selenium,他做同聲翻譯,留下了深刻的印象。語(yǔ)言有趣、易懂。
    ? 對(duì)我來(lái)說(shuō)效果很直觀:知道DSL是什么,能做什么了。然后附加知道了徐昊機(jī)器的屏保時(shí)間很短,他總是飛跑著去關(guān)掉屏保。

    5)關(guān)于topic 3 Selenium 講演者:黃亮(TW)
    ? 其實(shí)去年就試用過(guò)Selenium,悲慘的很,去年做的項(xiàng)目在firefox里跑不起來(lái),于是作罷。怎么辦?黃亮讓我的手又癢癢了。
    ?
    6)冰云(limo): 主持的相當(dāng)不錯(cuò),休息的時(shí)候問(wèn)了他工作角色的問(wèn)題。知道了冰云就是李莫,李莫就是冰云。

    ? yulimin:第一次休息的時(shí)候本打算去找他去的,沒(méi)想到他先過(guò)來(lái)了。其實(shí)最早認(rèn)識(shí)他是在jdon,那時(shí)我還在軍校里,每天在
    ? jdon里狂翻帖子,下載jive的源碼。然后就看到了他的頭像,于是就想:怎么也是個(gè)當(dāng)兵的??好感那時(shí)就生長(zhǎng)起來(lái)了。這次
    ? 見(jiàn)到了本人,真的是非常隨和,很有親切感。談到很多東西,然后是晚上一路回家。時(shí)間太短,心里想什么時(shí)候能夠再見(jiàn)面。
    ?
    ? 總結(jié):下次還會(huì)參加。

    posted @ 2006-12-20 12:03 ronghao 閱讀(572) | 評(píng)論 (0)編輯 收藏

    數(shù)據(jù)權(quán)限分為兩種,一種是數(shù)據(jù)范圍權(quán)限,一種是具體到每一條數(shù)據(jù)的權(quán)限。前一種可以通過(guò)動(dòng)態(tài)構(gòu)建SQL解決;后一種
    似乎必須通過(guò)ACL不可。于是就想對(duì)Acegi ACL做一個(gè)通用的擴(kuò)展。以通訊錄為例
    先看一個(gè)總的配置
    ? <bean id="contactManagerSecurityInterceptor" class="org.acegisecurity.intercept.method.aopalliance.MethodSecurityInterceptor">
    ????? <property name="authenticationManager"><ref bean="authenticationManager"/></property>
    ????? <property name="accessDecisionManager"><ref local="aclDecisionManager"/></property>
    ????? <property name="afterInvocationManager"><ref local="afterInvocationManager"/></property>
    ????? <property name="objectDefinitionSource">
    ???????? <value>
    ??????????? com.ronghao.acltest.services.ContactService.saveContact=AFTER_ACL_CREAT
    ??????????? com.ronghao.acltest.services.ContactService.getAllContacts=AFTER_ACL_COLLECTION_READ
    ??????????? com.ronghao.acltest.services.ContactService.getContact=AFTER_ACL_READ
    ???????? </value>
    ????? </property>
    ?? </bean>
    擴(kuò)展一、當(dāng)你增加一條記錄的同時(shí)向ACL表里插入權(quán)限信息 這個(gè)SS已經(jīng)做到了這一點(diǎn)
    ??ss有一個(gè)接口標(biāo)示哪些doamin需要acl保護(hù) AclDomainAware
    ??這里再擴(kuò)展一個(gè)基類 ,目的很簡(jiǎn)單當(dāng)讀出數(shù)據(jù)時(shí)附加上權(quán)限信息
    ??public? class BasicAclDomain implements AclDomainAware {

    ??? private int mask; //權(quán)限

    ??? public int getMask() {
    ??????? return mask;
    ??? }

    ??? public void setMask(int mask) {
    ??????? this.mask = mask;
    ??? }
    ??}
    ??
    ??public class Contact extends BasicAclDomain
    擴(kuò)展二、讀取列表時(shí)進(jìn)行數(shù)據(jù)的過(guò)濾,原來(lái)的acegi在ACL的集合后處理會(huì)造成分頁(yè)產(chǎn)生虎牙子
    ???? 這里采用前攔截,在acl表里增加一個(gè)className字段,里面放上PO的類名,這樣可以縮小
    ???? 數(shù)據(jù)查詢范圍.實(shí)際在讀取集合時(shí),是先到acl表里完成分頁(yè),然后獲得對(duì)Contact的real id list
    ???? 然后攔截實(shí)際DAO方法,動(dòng)態(tài)改變SQL成select * from real_data where id in ( {real id list} )的形式,這樣就OK了,
    ???? 分頁(yè)實(shí)際是對(duì)acl表里相應(yīng)記錄的'分頁(yè)'.比如說(shuō)取第10條到20條,實(shí)際是取acl表里相應(yīng)記錄的第10條到20條來(lái)動(dòng)態(tài)改變SQL
    ???? 這個(gè)可以寫一個(gè)專門被用來(lái)攔截的類 SecurityDAO 方法findByPageACL(query, page),ContactServiceImpl中g(shù)etAllContacts
    ???? 方法強(qiáng)制調(diào)用該方法
    擴(kuò)展三、后攔截。這里AFTER_ACL_COLLECTION_READ和AFTER_ACL_READ的目的就很簡(jiǎn)單了,因?yàn)樗麄儾辉龠M(jìn)行數(shù)據(jù)過(guò) 濾,?他們只是把用戶對(duì)每條記錄的mask取最大權(quán)限就OK,然后往PO里setMask。這樣PO帶了權(quán)限信息到頁(yè)面上就非常好處理了。比如button的顯示等等
    擴(kuò)展四、封裝AclService,對(duì)單條記錄的ACL權(quán)限管理。比如增加權(quán)限、修改權(quán)限、刪除權(quán)限。這個(gè)acegi的最新1.0.3已經(jīng)開(kāi)始加入。
    具體在實(shí)現(xiàn)中感覺(jué)acl的vote完全是雞肋,全部不用。另外在擴(kuò)展二中如果用戶數(shù)據(jù)要實(shí)現(xiàn)數(shù)據(jù)庫(kù)排序就比較困難。所以就有了還未實(shí)現(xiàn)的構(gòu)想:
    一、PO創(chuàng)建向ACL表里插入權(quán)限信息時(shí)可以配置不同的策略:比如通訊錄創(chuàng)建一條新信息只能創(chuàng)建者可以看并管理,而你往請(qǐng)假表里插一條新信息后,不僅你了,你的上司也可以同時(shí)看到。(這個(gè)還是比較easy)
    二、用戶數(shù)據(jù)要實(shí)現(xiàn)數(shù)據(jù)庫(kù)排序。需要在ACL_OBJECT_IDENTITY里增加幾個(gè)額外的字段,把po相應(yīng)的排序字段同步更新到ACL表中。什么?不好做?寫配置文件啊!再對(duì)PO的update進(jìn)行后攔截。
    想法就這樣。實(shí)現(xiàn)??

    posted @ 2006-12-14 10:20 ronghao 閱讀(4279) | 評(píng)論 (6)編輯 收藏
    作為CMS內(nèi)容發(fā)布來(lái)說(shuō),將要顯示的內(nèi)容html化無(wú)疑是一個(gè)很基本的要求,這樣可以提高整個(gè)系統(tǒng)的效率。
    考慮一個(gè)內(nèi)容節(jié)點(diǎn)Content,其中節(jié)點(diǎn)有個(gè)pagecontent的屬性,這個(gè)屬性用來(lái)存儲(chǔ)用戶在后臺(tái)輸入的內(nèi)容,
    內(nèi)容+模板=顯示,這里是:
    內(nèi)容+模板-->顯示靜態(tài)html
    內(nèi)容用FCK來(lái)編輯,模板也同樣用FCK編輯,這里用freemarker無(wú)疑是一個(gè)好的選擇。這里是個(gè)最簡(jiǎn)單的例子。
    首先定義一個(gè)最簡(jiǎn)單的模板content.ftl
    <html>
    $
    {content}
    </html>
    然后就是把內(nèi)容填充進(jìn)去:
    ?Configuration?cfg?=?new?Configuration();
    ?
    //模板存儲(chǔ)的目錄
    ?cfg.setDirectoryForTemplateLoading(Path.getTemplateDirectory());
    ?
    //默認(rèn)
    ?cfg.setObjectWrapper(new?DefaultObjectWrapper());
    //填充數(shù)據(jù)????????
    Map?root?=?new?HashMap();
    root.put(
    "content",?c.getPageContent());
    ?????Template?temp?
    =?cfg.getTemplate("content.ftl");
    //發(fā)布日期
    String?date=c.getActivedate();
    String?filename?
    =?c.getId()+".html";
    //創(chuàng)建目錄
    Path.createFold(Path.getWebCmsHtmlDirPath(),date);
    Writer?out?
    =?new?OutputStreamWriter(new?FileOutputStream(Path.getWebCmsHtmlDirPath()+"/"+date+"/"+filename));
    temp.process(root,?out);
    out.flush();
    其實(shí)就是這么簡(jiǎn)單!對(duì)html的管理就很容易了,基本的FILE操作
    posted @ 2006-11-27 18:51 ronghao 閱讀(6008) | 評(píng)論 (8)編輯 收藏
    CMS包括了網(wǎng)頁(yè)的發(fā)布,在編輯網(wǎng)頁(yè)內(nèi)容的時(shí)候用到了FCK.網(wǎng)上的教程是很多的.一切剛開(kāi)始都很順利.問(wèn)題出在對(duì)圖片\FLASH的上傳和瀏覽支持上.對(duì)JAVA來(lái)說(shuō)是需要編碼的.這里用到了FCK-java.2.2這個(gè)包.其實(shí)里面除了兩個(gè)servlet其他的都可以干掉的,似乎用不上它提供的標(biāo)簽.
    兩個(gè)servlet里用到了common-fileupload.jar.一切看起來(lái)都很不錯(cuò),可是就是上傳不了文件.debug發(fā)現(xiàn)common-fileupload得不到fileItem.很是郁悶,因?yàn)樘峁┑膕ample是可以正常跑的.上了common-fileupload的官方網(wǎng)站,才發(fā)現(xiàn)是有別的進(jìn)程攔截request的緣故.于是開(kāi)始調(diào)試.我靠,系統(tǒng)里的過(guò)濾器真TM的多,最后是把webwork\webwork-cleanup攔截/*變?yōu)?.action這才正常.
    ?問(wèn)題:我們真的需要這么多的filter嗎?這些filter過(guò)濾的范圍認(rèn)真考慮過(guò)嗎,可以縮小嗎?
    posted @ 2006-11-23 22:02 ronghao 閱讀(1463) | 評(píng)論 (1)編輯 收藏
    平臺(tái)新版本將要發(fā)布,目前還缺CMS.原計(jì)劃是將原先的CMS移植過(guò)來(lái)即可,原先的版本是基于Slide開(kāi)發(fā)的,后來(lái)經(jīng)過(guò)討論還是決定重新架構(gòu).新版本基于jackrabbit.大概考慮了一下需求:
    1.很多CMS都包括了發(fā)布模板、顯示模板,這里不用考慮,CMS僅僅是內(nèi)容管理,負(fù)責(zé)內(nèi)容存儲(chǔ),至于展現(xiàn),那是門戶事情.內(nèi)容和展現(xiàn)分開(kāi).CMS作為門戶數(shù)據(jù)源的一個(gè)選擇.
    2.一個(gè)完整的CMS并不是作為一個(gè)所謂的欄目信息,它還必須包括對(duì)各種文件的保存.對(duì)整個(gè)平臺(tái)的文件和附件進(jìn)行統(tǒng)一管理
    3.版本管理
    4.全文檢索
    5.權(quán)限管理,具體到每一個(gè)節(jié)點(diǎn)的配置.不僅僅是在CMS內(nèi)部,用戶通過(guò)門戶看到的信息也是要經(jīng)過(guò)權(quán)限過(guò)濾(內(nèi)網(wǎng)門戶)
    6.一套可擴(kuò)展的組織用戶接口(目前是直接用平臺(tái)內(nèi)部的組織用戶,考慮到CMS將來(lái)的獨(dú)立性,這個(gè)也是必要的)
    7.文件的webdav支持
    大概就是這些了,已初步完成了對(duì)jcr的封裝和架構(gòu).感到spring有勁使不上,呵呵.
    CMS信息發(fā)布需求
    信息分兩種:未發(fā)布的和發(fā)布的
    1、未發(fā)布的信息可以進(jìn)行增刪改查、版本管理、上傳和下載附件
    2、將未發(fā)布的信息發(fā)布,信息的狀態(tài)將置為發(fā)布狀態(tài)同時(shí)結(jié)合模板生成靜態(tài)HTML
    3、發(fā)布的信息本身會(huì)增加一個(gè)對(duì)靜態(tài)HTNL聯(lián)接的屬性,在后臺(tái)即可以對(duì)靜態(tài)HTML進(jìn)行瀏覽
    4、發(fā)布的信息依舊可以進(jìn)行內(nèi)容修改和版本恢復(fù),這樣會(huì)將生成的靜態(tài)HTML刪除然后再重新生成
    5、發(fā)布的信息可以刪除,信息進(jìn)入回收站,靜態(tài)HTML同時(shí)被刪除
    6、從回收站恢復(fù)信息,信息重新發(fā)布,生成靜態(tài)HTML
    7、通過(guò)欄目的設(shè)置來(lái)決定信息的發(fā)布是直接發(fā)布還是通過(guò)工作流發(fā)布
    posted @ 2006-11-16 22:55 ronghao 閱讀(5014) | 評(píng)論 (12)編輯 收藏
    僅列出標(biāo)題
    共39頁(yè): First 上一頁(yè) 27 28 29 30 31 32 33 34 35 下一頁(yè) Last 
    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    關(guān)注工作流和企業(yè)業(yè)務(wù)流程改進(jìn)。現(xiàn)就職于ThoughtWorks。新浪微博:http://weibo.com/ronghao100

    常用鏈接

    留言簿(38)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    常去的網(wǎng)站

    搜索

    •  

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 亚洲1234区乱码| 一级毛片免费不卡| 114级毛片免费观看| 天天摸天天操免费播放小视频| 亚洲一区二区在线免费观看| 免费在线观看一级片| 亚洲av无码乱码国产精品| 香港a毛片免费观看 | 国产精品色拉拉免费看| 91亚洲精品第一综合不卡播放| **俄罗斯毛片免费| 亚洲午夜电影在线观看高清| 人妻视频一区二区三区免费| 国产精品亚洲精品日韩动图| 亚洲精品无码99在线观看| 男人天堂免费视频| 亚洲小视频在线观看| 97视频热人人精品免费| 亚洲国产成人久久精品大牛影视| 全部免费国产潢色一级| 久久久久女教师免费一区| 西西人体44rt高清亚洲| 精品国产无限资源免费观看| 亚洲欧美日韩国产精品一区| 四虎亚洲国产成人久久精品| 最近的2019免费中文字幕| 91亚洲一区二区在线观看不卡| 性xxxx视频播放免费| 四虎永久在线精品免费一区二区| 亚洲国产精品无码久久久蜜芽 | 亚洲最新永久在线观看| 免费AA片少妇人AA片直播| 美女被羞羞网站免费下载| 亚洲精品无码久久久久去q| 免费国产成人高清在线观看网站| 亚洲AV日韩AV永久无码色欲| 亚洲精品乱码久久久久久| aa级一级天堂片免费观看| 亚洲免费视频一区二区三区| 亚洲白色白色在线播放| 亚洲国产成人久久综合一区77|