posts - 193,  comments - 520,  trackbacks - 0
           

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

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

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

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

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

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

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

          數(shù)據(jù)權(quán)限分為兩種,一種是數(shù)據(jù)范圍權(quán)限,一種是具體到每一條數(shù)據(jù)的權(quán)限。前一種可以通過動(dòng)態(tài)構(gòu)建SQL解決;后一種
          似乎必須通過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ù)的過濾,原來的acegi在ACL的集合后處理會(huì)造成分頁產(chǎn)生虎牙子
          ???? 這里采用前攔截,在acl表里增加一個(gè)className字段,里面放上PO的類名,這樣可以縮小
          ???? 數(shù)據(jù)查詢范圍.實(shí)際在讀取集合時(shí),是先到acl表里完成分頁,然后獲得對(duì)Contact的real id list
          ???? 然后攔截實(shí)際DAO方法,動(dòng)態(tài)改變SQL成select * from real_data where id in ( {real id list} )的形式,這樣就OK了,
          ???? 分頁實(shí)際是對(duì)acl表里相應(yīng)記錄的'分頁'.比如說取第10條到20條,實(shí)際是取acl表里相應(yīng)記錄的第10條到20條來動(dòng)態(tài)改變SQL
          ???? 這個(gè)可以寫一個(gè)專門被用來攔截的類 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ù)過 濾,?他們只是把用戶對(duì)每條記錄的mask取最大權(quán)限就OK,然后往PO里setMask。這樣PO帶了權(quán)限信息到頁面上就非常好處理了。比如button的顯示等等
          擴(kuò)展四、封裝AclService,對(duì)單條記錄的ACL權(quán)限管理。比如增加權(quán)限、修改權(quán)限、刪除權(quán)限。這個(gè)acegi的最新1.0.3已經(jīng)開始加入。
          具體在實(shí)現(xiàn)中感覺acl的vote完全是雞肋,全部不用。另外在擴(kuò)展二中如果用戶數(shù)據(jù)要實(shí)現(xiàn)數(shù)據(jù)庫排序就比較困難。所以就有了還未實(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ù)庫排序。需要在ACL_OBJECT_IDENTITY里增加幾個(gè)額外的字段,把po相應(yīng)的排序字段同步更新到ACL表中。什么?不好做?寫配置文件啊!再對(duì)PO的update進(jìn)行后攔截。
          想法就這樣。實(shí)現(xiàn)??

          posted @ 2006-12-14 10:20 ronghao 閱讀(4283) | 評(píng)論 (6)編輯 收藏
          作為CMS內(nèi)容發(fā)布來說,將要顯示的內(nèi)容html化無疑是一個(gè)很基本的要求,這樣可以提高整個(gè)系統(tǒng)的效率。
          考慮一個(gè)內(nèi)容節(jié)點(diǎn)Content,其中節(jié)點(diǎn)有個(gè)pagecontent的屬性,這個(gè)屬性用來存儲(chǔ)用戶在后臺(tái)輸入的內(nèi)容,
          內(nèi)容+模板=顯示,這里是:
          內(nèi)容+模板-->顯示靜態(tài)html
          內(nèi)容用FCK來編輯,模板也同樣用FCK編輯,這里用freemarker無疑是一個(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 閱讀(6013) | 評(píng)論 (8)編輯 收藏
          CMS包括了網(wǎng)頁的發(fā)布,在編輯網(wǎng)頁內(nèi)容的時(shí)候用到了FCK.網(wǎng)上的教程是很多的.一切剛開始都很順利.問題出在對(duì)圖片\FLASH的上傳和瀏覽支持上.對(duì)JAVA來說是需要編碼的.這里用到了FCK-java.2.2這個(gè)包.其實(shí)里面除了兩個(gè)servlet其他的都可以干掉的,似乎用不上它提供的標(biāo)簽.
          兩個(gè)servlet里用到了common-fileupload.jar.一切看起來都很不錯(cuò),可是就是上傳不了文件.debug發(fā)現(xiàn)common-fileupload得不到fileItem.很是郁悶,因?yàn)樘峁┑膕ample是可以正常跑的.上了common-fileupload的官方網(wǎng)站,才發(fā)現(xiàn)是有別的進(jìn)程攔截request的緣故.于是開始調(diào)試.我靠,系統(tǒng)里的過濾器真TM的多,最后是把webwork\webwork-cleanup攔截/*變?yōu)?.action這才正常.
          ?問題:我們真的需要這么多的filter嗎?這些filter過濾的范圍認(rèn)真考慮過嗎,可以縮小嗎?
          posted @ 2006-11-23 22:02 ronghao 閱讀(1468) | 評(píng)論 (1)編輯 收藏
          平臺(tái)新版本將要發(fā)布,目前還缺CMS.原計(jì)劃是將原先的CMS移植過來即可,原先的版本是基于Slide開發(fā)的,后來經(jīng)過討論還是決定重新架構(gòu).新版本基于jackrabbit.大概考慮了一下需求:
          1.很多CMS都包括了發(fā)布模板、顯示模板,這里不用考慮,CMS僅僅是內(nèi)容管理,負(fù)責(zé)內(nèi)容存儲(chǔ),至于展現(xiàn),那是門戶事情.內(nèi)容和展現(xiàn)分開.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)部,用戶通過門戶看到的信息也是要經(jīng)過權(quán)限過濾(內(nèi)網(wǎng)門戶)
          6.一套可擴(kuò)展的組織用戶接口(目前是直接用平臺(tái)內(nèi)部的組織用戶,考慮到CMS將來的獨(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、通過欄目的設(shè)置來決定信息的發(fā)布是直接發(fā)布還是通過工作流發(fā)布
          posted @ 2006-11-16 22:55 ronghao 閱讀(5018) | 評(píng)論 (12)編輯 收藏
          僅列出標(biāo)題
          共39頁: First 上一頁 27 28 29 30 31 32 33 34 35 下一頁 Last 
          <2025年7月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

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

          常用鏈接

          留言簿(38)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          常去的網(wǎng)站

          搜索

          •  

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 安吉县| 广宁县| 庆城县| 千阳县| 天长市| 五原县| 桂东县| 皋兰县| 灵寿县| 滦南县| 彩票| 巴彦淖尔市| 寿宁县| 延庆县| 德惠市| 行唐县| 镇坪县| 张掖市| 来凤县| 瓦房店市| 台前县| 宁都县| 扎赉特旗| 海兴县| 南丹县| 梁山县| 特克斯县| 安丘市| 乌鲁木齐市| 陆丰市| 马边| 青冈县| 泗水县| 双流县| 子洲县| 兴隆县| 陵川县| 新民市| 抚顺市| 禄劝| 吉隆县|