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

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

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

    xyz20003

    www.mossle.com
    隨筆 - 34, 文章 - 0, 評論 - 124, 引用 - 0
    數據加載中……

    2009年11月30日

    spring security權限管理手冊升級至spring security-3.1.3

    費了半天勁,終于把原來基于spring security 2.0.5的權限管理手冊升級到3.1.3。

    除了官方已經不再支持ntlm和portal兩個例子之外,其他的實例都已經通過了測試。下一步計劃是對整體內容進行整理,再加上3.1.3提供的新功能。

     

    目錄索引鏈接如下:

     

    序言
    I. 基礎篇

    1. 一個簡單的HelloWorld

    1.1. 配置過濾器
    1.2. 使用命名空間
    1.3. 完善整個項目
    1.4. 運行示例
    2. 使用數據庫管理用戶權限

    2.1. 修改配置文件
    2.2. 數據庫表結構
    3. 自定義數據庫表結構

    3.1. 自定義表結構
    3.2. 初始化數據
    3.3. 獲得自定義用戶權限信息

    3.3.1. 處理用戶登陸
    3.3.2. 檢驗用戶權限
    4. 自定義登陸頁面

    4.1. 實現自定義登陸頁面
    4.2. 修改配置文件
    4.3. 登陸頁面中的參數配置
    4.4. 測試一下
    5. 使用數據庫管理資源

    5.1. 數據庫表結構
    5.2. 初始化數據
    5.3. 實現從數據庫中讀取資源信息

    5.3.1. 需要何種數據格式
    5.3.2. 替換原有功能的切入點
    6. 控制用戶信息

    6.1. MD5加密
    6.2. 鹽值加密
    6.3. 用戶信息緩存
    6.4. 獲取當前用戶信息
    7. 自定義訪問拒絕頁面
    8. 動態管理資源結合自定義登錄頁面
    9. 中文用戶名
    10. 判斷用戶是否登錄
    II. 保護web篇

    11. 圖解過濾器

    11.1. HttpSessionContextIntegrationFilter
    11.2. LogoutFilter
    11.3. AuthenticationProcessingFilter
    11.4. DefaultLoginPageGeneratingFilter
    11.5. BasicProcessingFilter
    11.6. SecurityContextHolderAwareRequestFilter
    11.7. RememberMeProcessingFilter
    11.8. AnonymousProcessingFilter
    11.9. ExceptionTranslationFilter
    11.10. SessionFixationProtectionFilter
    11.11. FilterSecurityInterceptor
    12. 管理會話

    12.1. 添加監聽器
    12.2. 添加過濾器
    12.3. 控制策略

    12.3.1. 后面的用戶禁止登陸
    12.3.2. 后登陸的將先登錄的踢出系統
    13. 單點登錄

    13.1. 配置JA-SIG
    13.2. 配置Spring Security

    13.2.1. 添加依賴
    13.2.2. 修改applicationContext.xml
    13.3. 運行配置了cas的子系統
    13.4. 為cas配置SSL

    13.4.1. 生成密鑰
    13.4.2. 為jetty配置SSL
    13.4.3. 為tomcat配置SSL
    14. basic認證

    14.1. 配置basic驗證
    14.2. 編程實現basic客戶端
    15. 標簽庫

    15.1. 配置taglib
    15.2. authenticaiton
    15.3. authorize
    15.4. acl/accesscontrollist
    15.5. 為不同用戶顯示各自的登陸成功頁面
    16. 自動登錄

    16.1. 默認策略
    16.2. 持久化策略
    17. 匿名登錄

    17.1. 配置文件
    17.2. 修改默認用戶名
    17.3. 匿名用戶的限制
    18. 防御會話偽造

    18.1. 攻擊場景
    18.2. 解決會話偽造
    19. 預先認證

    19.1. 為jetty配置Realm
    19.2. 配置Spring Security
    20. 切換用戶

    20.1. 配置方式
    20.2. 實例演示
    21. 信道安全

    21.1. 設置信道安全
    21.2. 指定http和https的端口
    22. digest認證

    22.1. 配置digest驗證
    22.2. 使用ajax實現digest認證
    22.3. 編程實現digest客戶端
    23. 通過LDAP獲取用戶信息
    24. 通過OpenID進行登錄

    24.1. 配置
    24.2. 系統時間問題
    24.3. openid4java的處理流程
    25. 使用X509登錄

    25.1. 生成證書
    25.2. 配置服務器使用雙向加密
    25.3. 配置X509認證
    26. 使用NTLM登錄
    27. 使用JAAS機制
    28. 使用HttpInvoker
    29. 使用rmi
    30. 控制portal的權限
    31. 保存登錄之前的請求
    32. 記錄操作日志
    III. 內部機制篇

    33. 保護方法調用

    33.1. 控制全局范圍的方法權限
    33.2. 控制某個bean內的方法權限
    33.3. 使用annotation控制方法權限

    33.3.1. 使用Secured
    33.3.2. 使用jsr250
    34. 權限管理的基本概念

    34.1. 認證與驗證
    34.2. SecurityContext安全上下文
    34.3. Authentication驗證對象
    35. Voter表決者

    35.1. Voter表決者
    35.2. RoleVoter
    35.3. AuthenticatedVoter
    35.4. AbstractAclVoter
    36. 攔截器

    36.1. 權限配置數據源
    36.2. 權限管理器
    36.3. 后置調用管理器
    36.4. 臨時分配額外權限
    37. 用戶信息

    37.1. UserDetails
    37.2. 使用角色繼承
    37.3. 為ACL添加角色繼承
    37.4. PasswordEncoder和SaltValue
    38. 集成jcaptcha
    39. 動態資源管理

    39.1. 基本知識
    39.2. 讀取資源
    39.3. URL資源擴展點
    39.4. METHOD資源擴展點
    40. 擴展UserDetails

    40.1. 實現UserDetails接口
    40.2. 實現UserDetailsService接口
    40.3. 修改配置文件
    40.4. 測試運行
    41. 鎖定用戶
    42. 設置過濾器鏈
    43. 自定義過濾器
    44. 使用用戶組

    44.1. 數據庫結構
    44.2. 修改配置文件
    45. 在JSF中使用Spring Security

    45.1. 修改過濾器支持forward
    45.2. 自定義登錄頁面
    45.3. 顯示密碼錯誤信息
    46. 自定義會話管理

    46.1. 默認策略的缺陷
    46.2. 記錄用戶名與ip
    46.3. 改造控制類
    46.4. 修改配置文件
    47. 匹配URL地址

    47.1. AntPathRequestMatcher
    47.2. RegexRequestMatcher
    48. 配置過濾器

    48.1. 標準過濾器
    48.2. 在http中啟用標準過濾器
    48.3. 為自定義過濾器設置位置
    49. 監控會話過期

    49.1. 實現原理
    49.2. 代碼實現
    49.3. 目前實現的缺陷
    50. 多個登陸頁面

    50.1. 未登錄自動跳轉到對應的登錄頁面
    50.2. 密碼出錯時返回對應頁面
    51. 角色繼承

    51.1. 使用RoleHierarchyVoter
    51.2. 使用數據庫實現RoleHierarchy
    52. 設置方法攔截器
    IV. ACL篇

    53. ACL基本操作

    53.1. 準備數據庫和aclService

    53.1.1. 為acl配置cache
    53.1.2. 配置lookupStrategy
    53.1.3. 配置aclService
    53.2. 使用aclService管理acl信息
    53.3. 使用acl控制delete操作
    53.4. 控制用戶可以看到哪些信息
    54. 管理acl

    54.1. 管理多個domain類
    54.2. 動態授權與收回授權

    54.2.1. 獲得對象的acl權限
    54.2.2. 添加授權
    54.2.3. 收回授權
    55. acl自動提醒

    55.1. 自動創建acl
    55.2. 自動刪除acl
    55.3. 根據id刪除acl
    V. 最佳實踐篇

    56. 最簡控制臺

    56.1. 平臺搭建
    56.2. 用戶登錄
    56.3. 用戶信息列表
    56.4. 添加用戶
    56.5. 修改用戶信息
    56.6. 修改自己的密碼
    57. 用戶組控制臺

    57.1. 添加對用戶組的支持
    57.2. 瀏覽用戶組
    57.3. 創建用戶組
    57.4. 修改用戶組
    A. 修改日志
    B. 常見問題解答
    C. Spring Security-3.0.0.M1

    C.1. Hello World
    C.2. Spring-EL
    C.3. RoleHierarchy
    C.4. Success Handler
    C.5. REST下的權限控制
    C.6. 管理會話同步
    D. 命名空間

    D.1. http
    D.2. authentication-provider
    D.3. ldap-server
    D.4. global-method-security
    E. 數據庫表結構

    E.1. User
    E.2. Group
    E.3. RememberMe
    E.4. ACL
    F. 異常
    G. 事件
    H. RBAC模型(轉載)

    H.1. RBAC模型介紹
    H.2. 有關概念

    H.2.1. 什么是角色
    H.2.2. 角色與用戶組
    H.3. 基本模型RBAC0

    H.3.1. RBAC0 模型的形式定義如下
    H.4. 角色分級模型RBAC1

    H.4.1. 定義2:RBAC1 由以下內容確定
    H.5. 限制模型RBAC2

    H.5.1. 定義3:
    H.6. 統一模型RBAC3
    H.7. 定義4
    H.8. 在ARBAC97中,包括三種組件
    H.9. RBAC模型的特點
    H.10. 基于party的模型
    H.11. 有關operation
    I. 認證流程

    posted @ 2012-12-08 01:04 臨遠 閱讀(6122) | 評論 (7)編輯 收藏

    輕量級工作流引擎jBPM 4.4正式發布

    jBPM-4.4于2010年7月19日正式發布。

    jBPM是jBoss旗下的一款開源工作流引擎,它的特色是提供了eclipse插件,開發人員可以通過插件直接繪畫出業務流程圖。



    jBPM 4是jBPM的最新一代產品,它提供的PVM(流程虛擬機)可以支持多種流程語言,默認支持的是jBPM自己的jPDL流程語言,從jBPM-4.3開 始,又提供了對BPMN-2.0的支持(不過還不完全)。jBPM的發布包中提供了一鍵式安裝的ant腳本,可以將jBPM流程引擎以及配套的管理控制 臺,流程設計器一次性安裝到本機上運行使用。

    安裝配置的詳細步驟可以參考官方的用戶手冊:http://www.family168.com/tutorial/jbpm4.0/html/installation.html

    最新發布的jBPM-4.4中解決了108個issue,不過它距離上次發布也半年有余了,jBPM-4.3發布于2009年12月底。

    jBPM-4.4是一個bug fix版本,并未對數據庫有任何修改,使用之前版本的項目基本可以平滑升級。在進行升級時需要注意:

    1.Activity和Transition兩個接口從org.jbpm.pvm.internal.model包下移動到了 org.jbpm.api.model包下。
    2.所有與el表達式相關的部分都替換為新加的org.jbpm.pvm.internal.el.Expression。

    添加的幾個重要功能:
    1.for each支持動態的并發分支流程,會簽和并發子流程都可以用它來實現了。
    2.assign活動,可以對變量的值進行復制。
    3.變量聲明,可以在xml里聲明變量。
    4.修正了console在tomcat下找不到dataSource的問題(包括報表)。

    詳細的發布信息,請參考官方的JIRA:https://jira.jboss.org/secure/ReleaseNote.jspa?projectId=10052&version=12314183

    用Alejandro的話說,This makes 4.4 the most cat-friendly jBPM yet!下個版本會對數據庫結構進行修改了,以便完善流程歷史庫的功能。

    相關的發布下載與文檔資源如下:
    Subversion tag: http://anonsvn.jboss.org/repos/jbpm/jbpm4/tags/jbpm-4.4/
    Maven artifact: http://repository.jboss.org/nexus/content/repositories/releases/org/jbpm/jbpm4/jbpm/4.4/
    SourceForge file: https://downloads.sourceforge.net/project/jbpm/jBPM%204/jbpm-4.4/jbpm-4.4.zip

    User Guide: http://docs.jboss.com/jbpm/v4/userguide/html_single/
    Developer Guide: http://docs.jboss.com/jbpm/v4/devguide/html_single/
    Maven Artifact: http://repository.jboss.org/nexus/content/repositories/releases/org/jbpm/jbpm4/jbpm/4.4/

    另附我們翻譯的用戶手冊和開發指南:
    用戶手冊:http://www.family168.com/tutorial/jbpm4.0/html/index.html
    開發指南:http://www.family168.com/tutorial/jbpm4devguide/html/index.html

    posted @ 2010-07-20 16:20 臨遠 閱讀(2383) | 評論 (3)編輯 收藏

    拖延一個多月后,jBPM-4.4發布CR1候選版

    Alejandro太謹慎了,發布jBPM-4.4之前還搞了一個CR1候選版,被jBPM-4.3里那些bug困擾的同志可以直接下載這個版本使用了, 這個候選版和jBPM-4.4最終發布版基本不會有太大區別,下載地址如下:

    http://sourceforge.net/projects/jbpm/files/jBPM%204/jbpm-4.4/jbpm-4.4.CR1.zip/download

    在之前的帖子jBPM 4.4發布日期暫定于2010年6月4日里提到的幾個新特性都有了結果:

    1.支持foreach,這個是真正的動態分支功能,想玩會簽嗎?想玩動態分支嗎?想實現動態子流程嗎?用foreach就對了。

    2.支持在jpdl的xml中聲明變量,可以聲明實例級全局變量,也可以聲明活動級的局部變量。

    現在這兩個重量級的功能都可以使用了。

    對于BPMN2的支持也加強了一部分,包括m選n的inclusive gate way和可以定時啟動的TimerStartEventActivity。不過BPMN2新增的功能都是joraz走之前實現的,以后jBPM 4的BPMN2能走多遠還是未知數。

    jBPM 4.4目前解決了100多個issue,詳細的issue列表可以參考這里:

    https://jira.jboss.org/secure/ReleaseNote.jspa?projectId=10052&version=12314183

    最后雙手合十,誠信禱告jBPM-4.4早日發布。這樣我們才能集中精力開始下一階段的開發。

    posted @ 2010-07-15 22:18 臨遠 閱讀(1459) | 評論 (2)編輯 收藏

    jBPM 4.4發布日期暫定于2010年6月4日

    jbpm官方終于傳來好消息,jBPM 4.4可能在下月初發布。以下是當前project leader的聲明:

    We are down to 9 unresolved issues left before releasing 4.4. Given the current progress, it should be possible to release jBPM 4.4 on June 4th; the date is of course tentative and subject to change. Right now the only blocker issue is JBPM-2872: fix hudson db job. All others are deferrable if not completed on time.

    If you feel like there is an issue that should not be left out, the time to bring it up is now. Visit the developers forum if you want to do so.


    聲明地址:http://community.jboss.org/thread/152282?tstart=0

    簡單來說,就是還剩下9個未處理事務,按當前進度應該可以在6月4日發布jBPM 4.4,其中最重要的問題是修正hudson下的db任務。最后向社區征集意見,如果誰感覺有啥issue應該在jbpm 4.4里解決的話,就趕快提出來撒。

    jBPM 4.4的詳細發布信息可以參考這里https://jira.jboss.org/secure/ReleaseNote.jspa?projectId=10052&version=12314183, 一共是75個issue,目前已解決66個。這個版本主要是進行bug fix,也提供了幾個重量級的新功能。

    1.解決嵌套fork/join每次嵌套會出現多余execution的問題。
    2.任務超時或者手工執行signal后,自動刪除過期task。
    3.讓sub-process的id和key都支持表達式。
    4.支持在xml中聲明變量。(還在討論中)
    5.在fork中使用assignmentHandler會拋出NullPointerException。

    另外還有for-each動態fork分支這個功能,還在研究是不是要放在jbpm-4.4里,感興趣的同志可以來官方論壇提出意見。
    http://community.jboss.org/thread/152243?tstart=0

    posted @ 2010-05-24 09:57 臨遠 閱讀(1757) | 評論 (0)編輯 收藏

    jBPM創始人發布BPMN原生引擎Activiti-5.0-alpha1

    Tom Baeyens也就是jBPM的原作者,離開了Red Hat之后,另起爐灶搞了一個Activiti的項目,這個項目是基于BPMN的原生流程引擎。

    那么這個activiti到底有啥好處呢?讓咱們一一道來:

    它基于的Apache 2.0開源協議,比jBPM的LGPL更加寬松。

    它是基于BPMN2.0標準規范的,最大的好處就是可以用oryz這個web流程設計器直接在web瀏覽器上設計流程了。(注:別高興太早,oryz是用svg寫的,IE一律不支持。)

    它是基于ibatis的,數據庫層不再對hibernate有依賴。(注:alpha1只支持h2database,后面的版本會對mysql, oracle,postegl進行支持)

    選用BPMN作為標準流程語言,也意味著原來的jBPM里的jPDL流程語言將不會被繼續支持,也不知道PVM流程虛擬機是否會繼續下去,如果Tom不想 玩虛擬機了,activiti很可能就是一個只支持一種流程語言的引擎了。這點確實讓人感到有點兒遺憾。

    從www.activiti.org這個網站上可以下載到alpha1的發布包,其中包含了源代碼,草草看了一下,核心庫只有200多K,其中把原來自行實現的IoC自動注入的代碼都刪掉了。以后的IoC工作可能統一交給spring去管理,這對使用spring的同志來說,無疑是一個天大的好消息。

    api部分對外部接口進行了簡化,ExternalActivityBehaviour不見了,換成了EventActivityBehaviour,這一點讓我感覺很舒服,畢竟signal其實也只是事件的一種特例,換成eventActivityBehaviour之后,也就意味著我們可以讓活動節點支持更多事件處理操作了。

    持久化部分換成了ibatis,這部分暫時還只支持h2database,腳本什么的也只有h2database的,雖然因為alpha1版本,功能不多情有可原,但是我還是擔心使用ibatis會否大幅度增加數據庫存儲部分的維護量。希望后續發展不要因為這部分的問題遇到障礙。

    表結構似乎和原來的jbpm4差不多,有些表名發生了變化。表的數目又少了很多,但是我情愿認為這不是為了優化,而是因為這個版本不成熟,因為看不到log和history相關的表,所以,現在這個版本應該是沒有歷史留痕功能的。也沒有看到變量表,也許都是用二進制的方式來保存的吧?

    對BPMN2支持的部分,目前支持StartEvent, EndEvent, Task和UserTask,其他的都不支持,所以還是需要時間完善的。

    實際上Tom和Joram的編碼能力還是相當驚人的,從他們倆離開Red Hat到現在才不過兩個月,就立刻搞出這么一個東西,而且網站也搞得有模有樣的,真心希望他們能延續RoadMap,把這個項目完善起來。

    項目首頁:http://www.activiti.org/

    posted @ 2010-05-20 09:25 臨遠 閱讀(2170) | 評論 (1)編輯 收藏

    請把acegi替換成Spring Security(內附視頻)

    在對web項目進行權限管理時,采用的方法無非是寫一大堆JSP或者干脆一個Filter搞定。寫完簡單的權限功能后,又開始考慮如何自動記憶上次用戶信 息,限制每臺機器只能有一個用戶登錄,把用戶密碼進行加密。接著更上一層樓,嘗試實現單點登錄,使用HTTPS保護傳輸數據,防御會話偽造攻擊等等。

    于是好幾年前出現了名叫acegi的東西,它建立在spring的基礎上,提供了可以豐盛的權限功能集合,同時也以極為變態的復雜配置給了我們這 些初試權限的人悶頭一棍。甚至網上已經有人流傳“every time you use acegi, a fairy die”——每當有人使用acegi時,就會有一個精靈死去。

    正因為如此,acegi在加入spring陣營時,不但改頭換面改名成為Spring Security,而且在配置方面進行了極大的簡化,形象的來說就是:“現在只需要20行的配置文件就可以完成之前幾百行才能實現的功能”。

    遺憾的是,現在依然可以看到還有人在使用acegi,甚至還有人在學習acegi,這種情況無疑讓我們感到痛心疾首。

    為了世界上不會再有精靈無謂犧牲,也為了大家的身心健康,我在此大聲疾呼:“請把acegi替換成Spring Security。”尤其對那些希望學習acegi的同志,請直接學習Spring Security。

    下面是《請把acegi替換成Spring Security》的附帶視頻,希望大家了解Spring Security的簡潔。
    http://code.google.com/p/family168/downloads/detail?name=springsecurity.zip

    posted @ 2010-03-22 09:59 臨遠 閱讀(2876) | 評論 (4)編輯 收藏

    跟我學工作流——jBPM4視頻教程(免費)

    新的一年,為了讓工作流方面的初學者更快上手開發,我們錄制了jBPM 4視頻教程,這套教程基于最新發布的jBPM 4.3,覆蓋了開發環境的搭建,jBPM 4與WEB工程的集成,請假流程的完整實例,jBPM 4的組織機構,事件監聽,以及流程圖的跟蹤等功能。

    我們的網站提供了相關視頻和實例的免費下載,對工作流以及jBPM 4有興趣的朋友可以關注一下,也希望更多朋友在工作流方面給我們提出建議。jBPM 4視頻教程首頁:http://www.family168.com/jbpm4/video.html

    《jBPM 4視頻教程》:基于jBPM 4.3,發布日期2010-3-5。
    NO. 分級 標題  
    01 《配置開發環境》:下載jBPM 4和eclipse,安裝GPD流程設計器,設計簡單流程。 下載   提意見
    02 《管理流程定義》:將流程定義發布到流程引擎中,實現查看和刪除流程定義的功能。 下載   提意見
    03 《管理流程實例》:發起新流程,使暫停的流程繼續運行,實現終止和刪除流程實例。 下載   提意見
    04 《設計請假流程》:以請假審批流程為例,以web的方式發布新流程定義。 下載   提意見
    05 《發起新流程》:在流程定義中設置任務分配,提供接收和完成任務的功能。 下載   提意見
    06 《流程駁回》:實現流程駁回和重新提交申請的功能。 下載   提意見
    07 《組織機構》:介紹jBPM 4中默認提供的組織機構。 下載   提意見
    08 《監聽事件》:為流程定義設置事件,監聽流程執行時觸發的事件。 下載   提意見
    09 《跟蹤流程圖》:顯示流程圖,跟蹤當前路程實例的狀態。 下載   提意見
    www.family168.com - Lingo


    posted @ 2010-03-06 10:02 臨遠 閱讀(5765) | 評論 (11)編輯 收藏

    jBPM-4.x常見問題解決方案FAQ

         摘要: 這段時間整理的jBPM-4.x常見問題以及解決方案,希望幫助對jBPM-4.x感興趣的同學少走彎路,如果有沒有覆蓋到的問題,請及時和我們聯系,我們會盡快更新這個FAQ,先說一句多謝了。:)  閱讀全文

    posted @ 2010-01-22 09:19 臨遠 閱讀(2417) | 評論 (3)編輯 收藏

    Spring Security-3.0.1中文官方文檔(翻譯版)

         摘要: 這次發布的Spring Security-3.0.1是一個bug fix版,主要是對3.0中存在的一些問題進行修正。文檔中沒有添加新功能的介紹,但是將之前拼寫錯誤的一些類名進行了修正,建議開發者以這一版本的文檔為參考。

    另:Spring Security從2010-01-01以后,版本控制從SVN換成了GIT,我們在翻譯文檔的時候,主要是根據SVN的變化來進行文檔內容的比對,這次換成GIT后,感覺缺少了之前那種文本比對工具,如果有對GIT熟悉的朋友,還請推薦一下文本比對的工具,謝謝。  閱讀全文

    posted @ 2010-01-19 09:37 臨遠 閱讀(5387) | 評論 (0)編輯 收藏

    輕量級工作流jBPM-4.3官方“開發指南”中文版



    jbpm4devguide

    jBPM-4.3開發手冊

    1.0

    2009-05-16 19:29:47


    序言
    1. 簡介
    1.1. 目標讀者
    1.2. 概述
    1.3. 源代碼和WIKI
    1.4. Maven倉庫
    1.5. 依賴庫
    2. 孵化器
    2.1. timer定時器
    2.1.1. 持續時間表達式
    2.1.2. 工作日歷
    2.1.3. 定時器流向
    2.1.4. 定時器事件
    2.1.5. 定時器工作時間
    2.1.6. 定時器重復
    2.2. group活動
    2.2.1. 簡單group
    2.2.2. group定時器
    2.2.3. group多入口
    2.2.4. group同步
    2.2.5. group秘密
    2.3. 規則發布器
    2.4. java 活動
    2.5. rules-decision 活動
    2.6. rules 活動
    2.7. jms 活動
    2.7.1. 為簡化測試模擬JMS提供器
    2.7.2. 文本消息
    2.7.3. 對象消息
    2.7.4. Map消息
    2.8. 歷史會話鏈
    2.9. 創建認證組
    2.10. 任務表單
    2.10.1. 使用方法
    2.10.2. 表單格式
    2.11. 實例遷移
    2.11.1. 簡單遷移
    2.11.2. 結束運行中的實例
    2.11.3. 版本范圍
    2.11.4. 活動映射
    2.11.5. 遷移處理器
    2.12. 用戶對象緩存
    2.13. 事務
    2.13.1. 獨立事務
    2.13.2. JTA事務
    2.13.3. 用戶事務
    3. BPMN 2.0
    3.1. BPMN 2.0是什么呢?
    3.2. 歷史和目標
    3.3. JPDL vs BPMN 2.0
    3.4. Bpmn 2.0 執行
    3.5. 配置
    3.6. 實例
    3.7. 流程根元素
    3.8. 基本結構
    3.8.1. 事件
    3.8.2. 事件:空啟動事件
    3.8.3. 事件:空結束事件
    3.8.4. 事件:終止結束事件
    3.8.5. 順序流
    3.8.6. 網關
    3.8.7. 網關:唯一網關
    3.8.8. 網關:并行網關
    3.8.9. 任務
    3.8.10. 任務:人工任務
    3.8.11. 任務:Java服務任務
    3.8.12. 任務:腳本任務
    3.8.13. 任務:手工任務
    3.8.14. 任務:java接收任務
    3.9. 完全的實例(包括控制臺任務表單)
    4. 從jBPM3轉換到jBPM4
    4.1. jBPM 4的目標
    4.2. 知識范圍
    4.3. 流程轉換工具
    4.3.1. 概述
    4.3.2. 參數
    4.3.3. 使用示例
    4.3.4. 高級應用
    4.4. 解釋和修改
    5. 流程虛擬機
    6. 架構
    6.1. APIs
    6.2. 活動API
    6.3. 事件監聽API
    6.4. 客戶端API
    6.5. 環境
    6.6. 命令
    6.7. 服務
    7. 實現基本活動
    7.1. ActivityBehaviour
    7.2. ActivityBehaviour實例
    7.3. ExternalActivityBehaviour
    7.4. ExternalActivity實例
    7.5. 基本流程執行
    7.6. 事件
    7.7. 事件傳播
    8. 流程剖析
    9. 高級圖形執行
    9.1. 循環
    9.2. 默認執行行為
    9.3. 功能活動
    9.4. 執行和線程
    9.5. 流程同步
    9.6. 異常處理器
    9.7. 流程修改
    9.8. 鎖定和流程狀態
    10. 配置
    10.1. 基本配置
    10.2. 自定義工作日歷
    10.3. 自定義身份認證組件
    11. 持久化
    12. 計劃執行器
    12.1. 概述
    12.2. 配置
    13. 高級郵件支持
    13.1. 生產者
    13.1.1. 默認生產者
    13.2. 模板
    13.3. 服務器
    13.3.1. 多服務器
    13.4. 擴展點
    13.4.1. 自定義生產者
    13.4.1.1. 例子:自定義附件
    14. 軟件日志
    14.1. 配置
    14.2. 目錄
    14.3. JDK日志
    14.4. 調試持久化
    15. 歷史
    16. JBoss集成
    16.1. 打包流程歸檔
    16.2. 把流程歸檔發布成一個jBoss實例
    16.3. 流程發布和版本管理
    16.4. 流程引擎和J2EE/JEE編程模型
    17. Spring集成
    17.1. 概述
    17.2. 配置
    17.3. 使用
    17.4. 測試
    18. Signavio web建模器
    18.1. 簡介
    18.2. 安裝
    18.3. 配置
    A. 修改日志


    posted @ 2009-12-30 11:19 臨遠 閱讀(4351) | 評論 (2)編輯 收藏

    輕量級工作流jBPM-4.3官方“用戶手冊”中文版



    jBPM4.3用戶指南

    翻譯官方文檔

    JBoss jBPM Teams

    4.3

    family168

    2009年11月1日



    1. 導言
    1.1. 許可證與最終用戶許可協議
    1.2. 下載
    1.3. 源碼
    1.4. 什么是jBPM
    1.5. 文檔內容
    1.6. 從jBPM 3升級到jBPM 4
    1.7. 報告問題
    2. 安裝配置
    2.1. 發布
    2.2. 必須安裝的軟件
    2.3. 快速上手
    2.4. 安裝腳本
    2.5. 依賴庫和配置文件
    2.6. JBoss
    2.7. Tomcat
    2.8. Signavio基于web的流程編輯器
    2.9. 用戶web應用
    2.10. 數據庫
    2.10.1. 創建或刪除表結構
    2.10.2. 更新已存在的數據庫
    2.11. 流程設計器(GPD)
    2.11.1. 獲得eclipse
    2.11.2. 在eclipse中安裝GPD插件
    2.11.3. 配置jBPM運行時
    2.11.4. 定義jBPM用戶庫
    2.11.5. 在目錄中添加jPDL4模式
    2.11.6. 導入示例
    2.11.7. 使用ant添加部分文件
    3. 流程設計器(GPD)
    3.1. 創建一個新的流程文件
    3.2. 編輯流程文件的源碼
    4. 部署業務歸檔
    4.1. 部署流程文件和流程資源
    4.2. 部署java類
    5. 服務
    5.1. 流程定義,流程實例和執行
    5.2. ProcessEngine流程引擎
    5.3. Deploying a process部署流程
    5.4. 刪除流程定義
    5.5. 啟動一個新的流程實例
    5.5.1. 最新的流程實例
    5.5.2. 指定流程版本
    5.5.3. 使用key
    5.5.4. 使用變量
    5.6. 執行等待的流向
    5.7. TaskService任務服務
    5.8. HistoryService歷史服務
    5.9. ManagementService管理服務
    5.10. 查詢 API
    6. jPDL
    6.1. process流程處理
    6.2. 控制流程Activities活動
    6.2.1. start啟動
    6.2.2. State狀態節點
    6.2.2.1. 序列狀態節點
    6.2.2.2. 可選擇的狀態節點
    6.2.3. decision決定節點
    6.2.3.1. decision決定條件
    6.2.3.2. decision expression唯一性表達式
    6.2.3.3. Decision handler決定處理器
    6.2.4. concurrency并發
    6.2.5. end結束
    6.2.5.1. end process instance結束流程處理實例
    6.2.5.2. end execution結束流向
    6.2.5.3. end multiple多個結束
    6.2.5.4. end State結束狀態
    6.2.6. task
    6.2.6.1. 任務分配者
    6.2.6.2. task候選人
    6.2.6.3. 任務分配處理器
    6.2.6.4. 任務泳道
    6.2.6.5. 任務變量
    6.2.6.6. 在任務中支持e-mail
    6.2.7. sub-process子流程
    6.2.7.1. sub-process變量
    6.2.7.2. sub-process外出值
    6.2.7.3. sub-process外向活動
    6.2.8. custom
    6.3. 原子活動
    6.3.1. java
    6.3.2. script腳本
    6.3.2.1. script expression腳本表達式
    6.3.2.2. script 文本
    6.3.3. hql
    6.3.4. sql
    6.3.5. mail
    6.4. Common activity contents通用活動內容
    6.5. Events事件
    6.5.1. 事件監聽器示例
    6.5.2. 事件傳播
    6.6. 異步調用
    6.6.1. 異步活動
    6.6.2. 異步分支
    6.7. 用戶代碼
    6.7.1. 用戶代碼配置
    6.7.2. 用戶代碼類加載器
    7. Variables變量
    7.1. 變量作用域
    7.2. 變量類型
    7.3. 更新持久化流程變量
    8. Scripting腳本
    9. Configuration配置
    9.1. 工作日歷
    9.2. Email
    A. 修改日志


    posted @ 2009-12-30 11:18 臨遠 閱讀(2704) | 評論 (1)編輯 收藏

    敬獻Spring Security-3.x版官方文檔中文版

         摘要: Spring Security-3.x新近發布,整體的項目結構和包名都出現了天翻地覆的變化,與此同時,Spring Security-3.x中也提供了session-management和SpEL的多種強大功能,family168第一時間提供官方文檔的翻譯版 本,希望同大家一起領略Spring Security-3.x的最新時髦風尚。 介于Spring Security官方文檔本身傾向于技術...  閱讀全文

    posted @ 2009-12-29 11:39 臨遠 閱讀(5767) | 評論 (9)編輯 收藏

    讓軟件開發慢下來

    你在做軟件開發嗎?

    在啟動項目前是否做好技術選型了呢?
    在設計前是否已經理順大體需求了呢?
    在編碼前是否已經反復思索過對應的設計呢?
    在測試前是否已經準備好測試用例呢?
    在部署交付前是否已經計劃好具體的功能列表呢?

    考慮過項目的性質嗎?互聯網應用,還是內部網應用。
    弄清了項目規模大小嗎?3人月可以搞定的小項目,還是需要幾十人月的長期奮戰?
    確定團隊的實力了嗎?是全員光頭新人,還是在某牛帶領下的小馬集團,還是經驗豐富的水路兩棲沖鋒隊?
    如何與客戶協同合作?瀑布式一次理清所有需求,還是需要分階段迭代,或者直接進駐客戶公司面對面開發?

    是否要使用框架呢?還是選擇最基本的jsp, jdbc應用。
    編碼與項目如何管理,使用版本控制工具?還是用U盤copy過來,copy過去?
    如果選擇版本控制工具,究竟哪一款才適合自己的情況?
    系統如何劃分層次?五層?三層?其他方式?
    模塊如何劃分,按功能?按業務?混合分塊?
    開發如何分工,橫向分工,各層之間接口對接?豎向劃分每個人負責從前到后一整塊。

    如何測試?手工點點,還是使用自動化測試工具。
    測試用例如何確定,如何提高測試的有效性。
    測試的結果如何反饋給開發過程,需要使用excel還是issue跟蹤系統?
    測試過程中可以暴露并發,事務等隱性問題嗎?
    性能測試如何進行,壓力指數應該保證到多少?

    后期維護的方式的選擇。
    如何維護數據庫表結構?每次exp整個數據庫,到客戶公司imp,還是找一個員工手工比對所有表結構,還是直接實現數據庫版本化管理?
    如何為系統打補丁?視圖層的補丁,服務層的補丁,依賴庫的補丁。如何管理,如何實施,如何測試?
    系統是否擁有動態部署的能力?在系統升級的過程中是否可以減小出錯的可能?

    。。。。。。

    還有很多,還有很多。有些問題可以通過技術解決,有些問題需要根據具體條件進行分析,有些需要盡力規避,有些需要硬著頭皮強頂硬撐。

    在考慮清楚這些問題可能帶來的各種問題之前,讓軟件開發慢下來,至少慢一點點也是好的,進行下一步驟之前先了解如果出現了問題該如何應對,如何解決。

    posted @ 2009-12-25 10:42 臨遠 閱讀(1820) | 評論 (4)編輯 收藏

    [譯]Spring 3.0發布:基于Java 5開發,添加了新的表達式語言和對REST的支持

    原文地址:http://www.infoq.com/news/2009/12/spring30

    同志們,Spring框架的3.0版本終于在今天發布啦。InfoQ特別對話了Spring框架項目的技術頭領Juergen Hoeller,從他口中了解到不少關于這次發布對Spring集團帶來的改變。

    Hoeller詳細羅列了Spring 3.0中的各項新特性:

    * 基于Java 5 - 目前核心API已經使用了Java 5的特性,諸如泛型、注解等等,因此現在Spring 3.0必須使用Java 5和以后版本才能跑起來。

    * Spring表達式語言(SpEL) - 這個和JSF中的統一EL類似,我們可以很容易在Spring 3.0中使用復雜表達式了。

    * 提升對基于注解組件的支持 - Spring JavaConfig其中的一些功能已經被遷移到核心框架中,比如@Configuration,@Bean和@DependsOn。

    * 可以使用約束注解聲明對模型的校驗方式 - 提供了對JSR 303的支持,我們可以使用注解為bean添加諸如@NotNull和@Max(23)的校驗規則。

    * Spring MVC中提供對REST的綜合支持 - 添加了在服務器端和客戶端使用RESTful應用的功能。

    * 提供對Java EE 6的支持 - 支持了許多Java EE 6中的功能,比如JPA 2.0和JSF 2.0,讓它們可以運行在非EE 6的容器下,比如Tomcat和J2EE 1.4應用服務器。

    * 提供對JSR 330的支持 - 現在Spring已經支持了JSR 330中介紹的javax.inject注解。

    * 基于注解進行格式化 - bean的屬性可以使用注解來自動進行格式化和類型轉換,比如@DateFimeFormat(iso=ISO.DATE)和@NumberFormat(style=Style.CURRENCY)。

    Spring還提供了完整的修改日志參考文檔。(譯者注:文檔方面Spring做的確實太好了,也再次感謝滿江紅團隊的辛勤勞動。)

    Hoeller在提到SpEL時,多說了那么幾句:

    SpEL是一種功能強大的表達式語言,語法基于統一表達式(Unified EL),實際上它與JSF中使用的表達式非常類似。我們特別為SpEL開發了自己的表達式解析器以提供特定的功能,無論是在使用bean定義配置還是使用 Spring Integration這類項目時都可以帶來不少好處。其實在Spring核心中已經有很多地方都應用了像"#{...}"這樣的表達式,可以在XML的 bean定義中看到許多這樣的例子。還有@Value這個注解,它可以通過名稱動態引用其他的bean,并且可以非常簡單就獲取這些bean的屬性。

    舉個例子,下面這段XML配置(來自3.0參考文檔)使用了SpEL來配置bean的屬性,屬性值來自于JVM系統參數:

    <bean class="mycompany.RewardsTestDatabase">
        
    <property name="databaseName"
            value
    ="#{systemProperties.databaseName}"/>

        
    <property name="keyGenerator"
            value
    ="#{strategyBean.databaseKeyGenerator}"/>
    </bean>

    Hoeller也著重介紹了Spring 3.0中對REST的支持:

    我們面對的挑戰是在Spring MVC的世界中加入對REST的支持,把這種強大的新功能交到MVC用戶的手中。我們決定從底層為MVC支持路徑變量的提取 - 這部分內容協商的方向是正確的 - 考慮到Spring MVC的實力,并把它們拉升到另一種層次,同時又不會破壞基本架構。工作進展的非常順利,可以在已有的Spring MVC應用中使用REST的特性。

    我們的重點聚焦在web用戶接口在REST下的轉換方式上。下一步呢,在Spring MVC的基礎上實現基于REST的網絡服務(Web Service)也是很有意思的一件事情,特別是OXM(Object/XML Mapping)現在已經成為了Spring核心模塊之一,OXM可以和Spring MVC聯合應用。最后,我們提供了RestTemplate類,這是一個Spring式的模板類,它作為客戶端提供了與面向REST終端服務器進行交互的 更易用的編程方式。

    對于那些工作在Spring 2.5之上,并且已經在代碼中使用了基于注解樣式的同志們,這次升級的路線將是非常平滑的 - 新功能可以在升級到3.0之后任意選擇使用,不需要對基礎架構進行任何修改。對于那些還在使用老版本,比如繼承了表單控制器,這些功能在3.0中還是可以 繼續使用的,只是這些功能都已經被標記為“被廢棄了”(deprecated)。如果想使用3.0中的新特性,就必須先使用基于注解的@MVC樣式。對于 Spring 2.0用戶,99%的代碼依然可以正常運行,但是對一些老組件的支持,比如Apache Commons Attributes, WebLogic 8.1 和 WebSphere 5.1,都已經被刪除了。

    當提起Spring框架的未來計劃時,Hoeller提到開發會受到Spring集團中的其他項目的很大影響,比如Spring Integration, Spring Web Flow, Spring Source dm ServerSpring Roo等 等。在3.1的發布的新特性就會被Spring Integration 2.0和Spring Web Flow所影響,比如計劃中的第一類會話管理(first-class conversation management),擴充作用域(scope)和細化基于注解的組件模型。2010年中旬中的3.1發布之后,會進入3.2版本,對于3.2版本的具 體計劃還沒有最終完成。

    posted @ 2009-12-18 07:49 臨遠 閱讀(1778) | 評論 (0)編輯 收藏

    “富客戶端Ext JS與系統模塊切分”話題PDF下載

         摘要: 上周六去Beijing OpenParty準備的話題,可惜自己能力有限,拉票沒有進入前九名(實際上是倒數第一,只有十個人愿意聽這個話題),無緣在活動的正式會議室講這個話題了。

    下來把PDF中存在的一些問題修改了一下,有興趣的同志可以下載看一下。也再次感謝一下最后在小會議室聽我講這個話題的三個同志。  閱讀全文

    posted @ 2009-12-14 09:20 臨遠 閱讀(1433) | 評論 (0)編輯 收藏

    “業務比技術重要”一條企業開發中經典的謬論

    做企業開發,是業務重要還是技術重要?似乎大多數的聲音都在朝向著同一個方面:“業務比技術重要”,“理解客戶業務需求更加重要”,“我們要幫助客戶梳理需求,項目做到一半的時候,我們已經比客戶都懂業務了”。

    作為一個搞技術的,我完全搞不清楚這種說法的起源,為什么作為本職工作的“技術”反而不如“業務”重要了呢?這里所說的“重要”是否是說我們只需要抓抓牢最重要的部分就可以解決一切問題了呢?既然所有人都認為業務比技術重要,那為什么公司不直接招聘幾個“精通業務的人員”過來培訓幾天技術就行了呢?為什么反而要招聘原本不重要的“技術人員”,再去臨時培訓如此重要的“業務”呢?或者說,既然業務比技術重要那么多,為什么我們還要做技術呢?所有人都去搞業務豈不是可以把所有力量都集中在最重要的部分,進而獲得更大的效益呢?

    聽到這種說法,人們又開始議論紛紛:“你這樣太極端了,怎么可能完全放棄技術呢?沒有技術怎么行呢?”這種說法再正常不過,因為我們的本職工作就是“軟件開發人員”,開發人員立足的根本就在于技術能力,所謂的業務問題如果不建立在技術基礎之上,就是完全無用的空對空瞎吹而已。對于一個開發人員來說,技術能力是必不可少的,再多“業務”也是無法彌補“技術”上的鴻溝的。

    可為什么大多數人還是認為“業務比技術重要的”,首先公司的行為在于盈利,公司只有通過交易行為才能實現盈利,如果我們制作的產品無法滿足客戶的需求,客戶是絕對不會買賬的。怎么才能滿足客戶需求的,首先就要熟悉客戶的業務,因此公司就需要一些了解特定方面業務的開發者來實現這些功能,這些公司對技術沒有太多要求,只要達到基本水平就可以,所以篩選員工的標準就變成了對業務的熟練程度。

    換句話說,大多數公司所需的員工是:“技術水平達到基本要求,對某一行業業務越熟練越好。”所有人對此都不會抱有懷疑,只是在信息不斷傳遞過程中,有意無意中人們隱去了前提部分,只剩下后面的“業務很重要”。

    對于一個公司來說,需要的永遠不是:“技術最強者。”最有用的人是那些可以使用一定程度的技術,最好滿足本行業業務需求的人們。公司不可能為了個人技術方面的渴求去犧牲業務方面的鉆研,這已經是生存問題了。雙向選擇上,如果一個人技術不達標,是沒辦法通過面試的,如果一個人業務不達標,有可能先進入公司熟悉業務。如果一個人技術太強了,公司留不住也只能放任員工去選擇更適合的發展環境,如果業務太強了,結果應該也是一致的。

    對于個人來說,如果是一個技術狂熱者,也不應該在公司中被技術左右,明辨技術和業務兩個方面,結合起來幫助公司創造更大效益的同時才能為自己提供一個有發展的環境。雙向選擇上,如果自身無法滿足公司的要求,是很難進入公司的,如果感覺公司限制了自身發展,也可以考慮是否擁有更多的選擇機會。

    最后來研究一下技術和業務之間的融合問題,我們可以肯定一點,純粹的技術是沒辦法存活的,公司行為必然要涉及到解決哪些問題,純粹的業務也不是技術人員可以達到的,所以我們期望了解的就是業務和技術如何分配的問題,是五五嗎?是三七嗎?是六四嗎?現在只能說這個問題很難講清楚,根據不同行業需求的不同,畢竟大多數公司都停留在簡單的增刪查改階段,只要開發人員會用jsp的公司也比比皆是,相比專業的軟件公司,這些公司的入門門檻低,待遇也低,如果希望在這些公司走得更遠,唯一的方法就是在技術之外開辟出新疆界來。你可以搞業務,搞管理,搞客戶關系,等等等等。大多數人都是可以適應平滑轉型的,但是也有期望在技術上更進一步的同志會進入其他對技術要求更高的公司中。這類公司業務和技術比重大致在7:3到5:5之間,基本屬于平常不會遇到解決不了的問題,只要根據客戶的需求進行實現即可,不過一但遇到技術上無法實現的功能,便無法自行解決,只能求助于更高級的軟件公司。

    在大部分公司都與最終用戶進行交互時,還是存在著不少公司進行著產品化行為,一方面基于以往項目積累的經驗抽象出可復用的組件,另一方面對市場的調研總結,設計出更易用,更成熟的體系結構,這些公司有實力,并且有需求在技術上更進一步。這時也會出現對技術和業務職責上的分化。因為產品化已經深入的某一個特定的行業,對業務的需求分析細化整理都已經十分完善,為了實現更精進的業務,也就需要更精進的技術來作為支持。這些公司需要專精某些技術的員工,可以基于整理后的需求完成業務,同時也需要更加專業的業務分析人員,在業務上進行細化分析,提供給后續論證實現。只不過對于這種業務分析人員,大多也是從原軟件開發人員轉移過來的,他們擁有十分豐富的項目經驗,同時擁有強力的設計能力可以為下面的實現人員提供規劃藍圖。歸根結底,無論是開發人員或是需求分析人員都是以技術為基礎的,沒辦法,畢竟我們的本職工作是開發。

    最后的最后,到底是技術重要還是業務重要呢?我想作為一個技術人員的大家,應該心中有數了吧?


    posted @ 2009-12-07 13:02 臨遠 閱讀(2552) | 評論 (19)編輯 收藏

    OpenSourceCamp歸來有感

    上周六去參加了OpenSourceCamp活動,玩了整整一天時間,感觸頗豐啊。

    首先是上午到達Intel,來到會議室先找了件合適尺寸的T恤裝起來(感謝活動贈送的禮品,謝謝),人不是特別多,所以在中間找到了幾個空位坐下。

    活動開始前,大屏幕上一直在播放著OpenSource的宣傳視頻,英語原聲中文字幕的,幾個老外不斷出來講這個OpenSource到底是如何如何,看到了Linus,接下來又出現了GNU的創始人,講到OpenSource的出現,它的意義等等,不過留下最深印象的還是,當其中提到了MicroSoft和Bill Gates時,視頻的背景音樂突然變成了“鬼子進村”的那種氣氛,然后就伴著這種感覺聽了幾分鐘的bill Gates寫給開源社區的公開信,信的內容主要是強調軟件的知識產權。。。感覺OpenSource和MicroSoft的隔閡還是年代久遠啊。

    隨著視頻的戛然而止,活動進入正題,首先由活動的發起人Peter介紹了OpenSourceCamp的歷史和未來的發展,然后依次是IBM談標準規范,intalio對自身的介紹,天使投資人介紹通過開源如何開展商業活動,中間還有一個“中文馬馬虎虎”的芬蘭女士介紹去芬蘭留學的。

    上午日程中記憶最深刻的是Xiao-Feng Li介紹的,如何在jvm中應用向量運算來提升性能。主要就是說,如果我們對一批數據進行相同操作,比如將10個數依次累加5這樣的操作,如果使用循環就需要使用10次加法計算,而向量計算可以通過一個加法操作就實現對初始10個數的累加操作,這樣就以內存的代價換取的操作效率的提升。

    說真的,一開始還以為這是一個很偏門的技術,可是聽到后來Xiao-Feng Li講到將這一項技術應用于JVM的時候,并拿出了單線程下運行速度提升30%的測試數據時,我立刻就傻眼了。總是說理解業務最重要的同志們估計也沒想到完全是在鉆研技術也會產生這種意向不到的效果吧?業務應用遇到底層技術一般就是這種結果了,應用的反復研究造就了的結果是滿足特定需求,而底層技術的推出直接在數量級層次發生了顛覆的作用,這種底層的研發階段是枯燥的,而成果又是巨大的。借用演講人的一句話:“你可以把它研究出來,然后賣給SUN,ORACLE這些公司嘛。”先不說這話是認真還是開玩笑,先回過頭來考慮一下之前我們是否對技術進行過如此的鉆研探究,也能夠明白為何現在很多技術上的問題還是會成為我們前進道路上的瓶頸了。

    再想想,為什么這種底層技術會直接出現在OpenSource中呢,更多時候它只會被公司內部作為機密控制起來,OpenSource不是商業行為,它僅僅是一種distribution和development的形態,開放式的開發形式,調動更多人的力量來催生創新的形成,反正個人從OpenSourceCamp上看到的OpenSource就是這樣的了。

    所以要放平心態,國內的技術積累尚未實現某種豐富的水平,所以建立在技術地基之上的OpenSource必定需要時間慢慢培養,如果真是要做開放開源,低下頭做事情就對了。

    posted @ 2009-11-30 08:58 臨遠 閱讀(1567) | 評論 (3)編輯 收藏

    主站蜘蛛池模板: 两个人日本免费完整版在线观看1| 久久久久亚洲av无码专区| 国产精品色午夜免费视频| 久久久久久99av无码免费网站| 69影院毛片免费观看视频在线| 99re6免费视频| 久久w5ww成w人免费| 亚洲免费在线视频| 一区二区三区福利视频免费观看| 黄色网站软件app在线观看免费| 国产精品美女久久久免费 | 免费无码AV一区二区| 污网站在线免费观看| 色爽黄1000部免费软件下载| 日韩成人毛片高清视频免费看| 一级毛片正片免费视频手机看| a级毛片免费网站| 成人影片一区免费观看| 久久aⅴ免费观看| 国产乱子精品免费视观看片| 免费观看的毛片大全 | 中文字幕av无码不卡免费| 两个人看的www视频免费完整版| 久操免费在线观看| 日本妇人成熟免费中文字幕 | 免费看无码特级毛片| 3344永久在线观看视频免费首页| 97人妻无码一区二区精品免费| 大地资源在线观看免费高清| 亚洲国产一区明星换脸| 亚洲AV人无码激艳猛片| 亚洲视频在线观看2018| 亚洲AV无码一区二区三区牲色 | 亚洲欧洲自拍拍偷午夜色| 亚洲欧洲免费无码| 一级美国片免费看| 亚洲电影免费在线观看| 国产精品视频永久免费播放| 亚洲区小说区图片区| 亚洲成A∨人片在线观看无码| 亚洲精品无码不卡在线播放|