查看: 108760|回復: 9

專訪Tiny開源框架創始人:用心構建優秀的開源框架

[復制鏈接]
認證徽章
論壇徽章:
127
茶雞蛋
日期:2012-01-16 14:24:41鮮花蛋
日期:2012-06-06 14:48:18雙黃蛋
日期:2013-01-07 21:07:482013年新春福章
日期:2013-02-25 14:51:24優秀寫手
日期:2013-12-18 09:29:082014年新春福章
日期:2014-02-18 16:44:08馬上有對象
日期:2014-02-18 16:44:08馬上加薪
日期:2014-03-18 09:57:11馬上有車
日期:2014-03-20 16:13:24馬上有房
日期:2014-03-20 16:14:11
跳轉到指定樓層
1#
發表于 2015-9-6 14:57 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式

1.和大家認識一下,介紹一下你的技術背景、目前所負責的領域。

ITPUB的各位網友,大家好!我是悠然,Tiny開源框架創始人,主要技術領域為J2EE及應用開發平臺領域,涉獵廣泛,在模塊化、元數據、模板引擎、數據庫分區分表、SOA等等領域等都有較深入實踐,吃過N多的虧,上過N多的當,當然也積累了N多的經驗。在業余時間也熱心于參與開源軟件相關工作,在進行軟件開源的同時,也編寫了大量的技術博客,從問題、原理、實踐進行了深入淺出的講解。我比較欣賞的是:好的軟件設計是“品”出來的。我信奉,好的軟件架構一定是簡單的。


2.你們的團隊架構是怎樣的?如何分工?

TinyFramework的開發團隊是由穩定的團隊成員組成的。我也嘗試過招募一些愿意參與的愛好者,實際執行效果不太好,當然原因也是各方面的,我也非常理解沒有堅持下來的參與者。


團隊架構與分工。對于成功的開源團隊而言,個人強大的技術是一方面,但團隊力量遠大于一群人的簡單相加。我們項目組由項目管理、需求分析、軟件設計、編碼、測試、實施等各方面的專業人士組成,每位成員在自己專業領域內發揮主導作用,并可以為項目的成功提出非自己領域內的建議。最終的項目成果是各位專業人士共同努力的結果,所有人對最終成功承擔同等的責任。就像竹子“千磨萬擊還堅勁”的精神一樣,每個項目成員都有當家做主的機會,應相信自己在本領域內是專家,在我的專業范圍內,我可以說了算!Tiny團隊就是這樣,我們每個團隊成員的自主精神貫穿在日常的工作始終。



團隊成員的溝通方式主要有如下幾種:(1)聚眾吃飯:基本上一年當中,聚眾吃飯的次數得有20多次。吃飯的理由千奇百怪了,家里添丁要請、技術晉級要請、獲獎了請等等,當然最多的請客理由還是由于出現嚴重BUG、有嚴重的設計缺陷、提交了影響開發的代碼等等技術相關的理由,邊吃邊聊邊打鬧,同時就提升了大家的能力,同時也讓大家認識到這種類型的錯誤,會導致請客吃飯的后果,下次自然是堅決不犯了。(2)社區公開課。我們通過論壇(http://bbs.tinygroup.org)定期進行公開課交流。一般是每周四晚上八點。通過交流,我們也建立了非常好的互動效果。(3)GIT中的Issues:團隊有句口頭禪,嘴巴講的不算。所以不管是需求還是BUG,都要統統錄到Issues當中,于是提出問題、批注問題、解決問題、跟蹤問題、關閉問題,都在Issues當中進行管理。當然,所有的過程也就成為呈堂證供,抵賴不得。不論是線上還是線下的交流,對于我們的團隊協作與和諧都起了非常大的作用,互為補充。




3.開源往往需要很大的勇氣。我們注意到,Tiny推出之后,在開源網站上高居Java類前幾名。為什么要想到開源TinyFramework?

其實在開發TinyFramework之前,也在公司的體制下主導了開發平臺的開發,但是由于在公司體制下,需要完全按照公司的要求和規范來開發,實際上就是要做許許多多的妥協,而這些妥協可能會對一個框架產生比較嚴重的傷害。而筆者期望做一個各方面比較均衡的開發平臺,于是就從各種小的專題性驗證開始,比如:流程化編程、模塊化設計、數據庫分區分表等等一一進行驗證,當驗證的范圍越來越大,涵蓋的領域越來越多的時候,才真正開始決定做一個開源框架。因此,追本溯源,最初的初衷就是對自己思想的一些驗證而已。



4.很好奇,Tiny團隊是如何運作的?是什么鼓舞你們從事開源工作?

在早期,我們還是默默無聞的,因為我們不想在框架還是一個半成品的時候就拿出來,直到我們已經開發完畢并且在自己的項目中進行了充分驗證的時候才真正的在社區或相關網站進行露面。我們大致是從以下幾個角度維護項目和社區的:




  • 代碼托管在git倉庫:https://git.oschina.net/tinyframework/tiny。目前有360 watches,588 stars,451 forks,相對于它僅僅托管到git倉庫一年的時間,數據還不錯。
  • 構建Tiny文檔WIKI:http://www.tinygroup.org/confluence/display/TF。Tiny文檔總共有900多頁,涵蓋了設計、實現、示例、實踐等方方面面,目前月訪問量在4萬PV左右。
  • 創建Tiny論壇社區:http://bbs.tinygroup.org。Tiny論壇是新推出的專注入Tiny方面的交流與溝通平臺,目前論壇已有注冊用戶1000多人,包括:有問必答、開源公開課、精彩文摘、實戰分享等欄目。尤其是社區的“有問必答”(http://help.tinygroup.org)欄目,對于產品的改進與完善,發揮了十分重要的作用,目前吸引了不少專業人士及Tiny愛好者加入。
  • 創建Tiny交流QQ群:228977971。由于采取了比較嚴格的管理方式,所以是對技術純潔性保持非常良好的群。目前已超過1000多人,并在不斷增長。
  • 通過上面的一些與項目相關的社區、博客、QQ群等形式與廣大Java框架、Tiny愛好者進行了充分的互動與交流。不管是學習者、參與者、交流者、使用者,都有自己的收獲,在這個過程中,我們也受益匪淺,對開源這兩個字也有了更深入的理解。


5.如何理解國內開源生態鏈?在2年多的開源實戰中,印象最深的事情是什么?


實際上,開源這事兒也是一個螺旋式發展的代表,好幾年差幾年。整體來看,國內對開源的認識也在由拿來免費用的初級理解向更高級別的層次發展。從整體來看,國人開源的技術和產品相對還處在一個初級階段,比如:僅僅是把代碼開放出來,沒有后續的社區建設,也沒有形成生態圈等等各種問題。但是由于國內的開源產品基數太大,我們可以看到越來越多的優秀開源者和優秀開源產品涌現出來,這也符合量變引起質變的客觀規律。



TinyFramework的立意是企業級的開發平臺,因此在方法論、設計理念、開發體系、設計原則、生態圈、模塊化、熱部署、水平擴展、元數據等非功能性要求方面做了大量的探索和實踐,當然在這些領域也都有了相當不錯或者可以接受的解。我們相信,只要能切實踐行我們團隊的格言“Think big, start small, scale fast!”,我們就一定會成功、領先的開源產品之一。



在我們進行實踐的過程中,也會碰到一些人的不理解或者說是非議吧,有時候直接就在我們的軟件、博文下面回復“輪子”或者“然并卵”什么的。我是這樣看待這個問題的,不管是在哪里的開源托管網站里,確實有一些項目確實水準不高,在初始階段,確實沒有什么新意,確實是在做重復的事情。但是實際上這些重復的意義在于:這些開源作者正是在做輪子的過程中,了解了如何做輪子,做輪子過程中有哪些坑,有哪些好或不好的東西,在這個過程中鍛煉了實戰經驗,提升了戰斗力,為下一輪的創新或做出不是輪子的產品奠定了更好的基礎。開源作者們既使現在做的是你們看起來的“輪子”或者“然無卵”的事情,但是在量變的過程中,終將會產生質變。華麗麗的完成蛻變的過程。就是最終開源作品沒有蛻變成高大上的產品,開源者在這個過程中也會得到洗禮,得到技術的提升能力的提高。




6.你認為TinyFramework最突出的優點是什么?能否介紹一下你們的新開源實踐,比如模板語言,分庫分表,等等。

TinyFramework的優點很多,主要有以下幾個方面:

首先,設計理念決定了設計的目標。

(1)使用靈活:可以整個使用它,也可以只用它的一個或幾個部分。Tiny構建者認為,一個完整的框架可能需要有許許多多個部分組成,但是對于實際應用的用戶來說,它可能只需要其中的一部分功能。構架一定要有這種能力,可以由使用者進行點菜式,使用,避免只要用一點點功能,就要引入許許多多的內容。

(2)學習成本低、上手容易:框架的學習成本必須非常低,這樣才可以讓使用者更容易上手,避免由于學習難度大而導致的學習曲線太陡、太長。

(3)保持核心的穩定性:Tiny框架是立足于在需要穩定、安全要求非常高的應用環境中使用的,因此其穩定性就是框架構建者首要思考目標,核心部分只使用經過充驗證及廣泛應用的第三方包。

(4)資產的可積累性:只有易于知識積累,才可以真正做到越用越強。


其次,設計原則解決目標沖突時的解決策略。

(1)約定優于配置原則-COC

(2)不要重復你自己原則-DRY

(3)減法原則 :減法原則是我們自己提出的,意思就是給程序員做減法。

(4)模塊化原則:模塊化對于軟件開發過程中開發、高度、集成、發布、維護過程中所起的作用及節省或花費的巨大成本。因此提出了Business Unit的概念,使得與模塊相關的所有內容都可以放在一起。

(5)自動組裝原則:在整個Tiny框架的構建過程中,都非常注重集成過程的自動組裝,要求做到扔進去不用管,由框架自動集成。

(6)下級服從上級原則:Tiny框架則從框架層級做了限制,使得下級必須服務上級。

(7)單一原則:通過單一原則進行強制性的約束,使得一個模塊只解決單一模塊應該解決的問題,從而避免不同的問題放在一起解決所導致的胡子眉毛縷不清的問題,同時也避免了不恰當的依賴及模板引用。

      (8)集中配置原則:在Tiny框架我們對配置做了大量的工作,一個是COC方式,如果不配,則采用系統默認的值;一個是集中原則:把需要人工需要配置的內容都集中起來統一配置;一個是對于不需要人工干預的配置,那就集成在Jar包中,作為發布者發布項的一部分。

再就是,一些創新性的技術應用。


(1)SOA:Tiny的服務是一次開發到處使用的,也就是一旦完成了服務的開發,你可以用RMI,WebService,Json,Xml等等,各種你想到想不到的方式進行服務調用。

(2)服務水平擴展能力:在遵守Tiny開發規范的前提下,可以方便的進行接入和服務層的水平擴展。也就是說如果你的處理能力不足的時候,只要加一臺機器就可以增加處理能力,而不必對現有運行的環境進行任何變化。

(3)模塊化技術:Tiny的模塊化的設計思想是沒有什么不能進行模塊化,也就是說所有的文件都可以放在Jar包中。為此我們做了大量的研究與實踐,做到了所有的文件都可以放入到Jar包中,甚至連Jsp也可以放入Jar包。通過模塊化技術,可以方便的進行模塊分隔與復用。

(4)自組裝技術:Tiny的自組裝設計思想是所有的模塊都可以做到加入即可用,去除就消失。也就是說,如果你用別人的一個組件,你只要通過Maven依賴它即可以;如果你不想用了,取消Maven依賴即可。這樣就會大大減少集成相關的工作量。

(5)熱部署技術:關于熱部署的實踐,這個有許多種,比如OSGI等等,但是不管哪一種,都有一定的強依賴性,或者說是侵入性。Tiny的熱部署實現機制則簡單的多,只要按照正常的方式來開發Jar包,并且配置一個Bundle聲明文件即可。實際應用當中,即可以按照Bundle機制運行,也可以按照普通Jar包來運行。

(6)UIML技術:UIML也就是統一界面描述語言的意思。通過這一特性,再加上配套的可視化界面設計工具,就可以實現一次開發到處使用的界面開發目標。

(7)AOP緩沖框架:可以有效剝離緩沖與業務代碼,可以透明的切換緩沖方案切換,可以大幅降低緩沖相關代碼編寫的開發與重構成本。

(8)文檔生成框架:凡是按照Tiny開發規范進行開發,許多的文檔都可以通過工具自動化生成,文檔與代碼不一致不再是一個問題,同時還可以節省大量的文檔編寫時間。



本來是沒有自己寫一個模板引擎的計劃的,因為按我的理解,一直認為這種“語言”級的引擎,難度是非常大的?偢杏X自己的水平不夠,因此不敢有這個念頭。直到大量使用Velocty的時候,碰到Velocty諸多不盡如人意的地方,但是又無能為力,退回到JSP吧,又心不有甘。于是就期望著尋找一種語法結構接近Velocty,但是又沒有Velocity這些不方便之處的模板語言。但是實際上一圈找下來,并沒有找到滿足自己期望的模板語言,于是就萌生了寫一個模板語言的想法。當然,過程中也經歷了諸多折騰,但是目前已經是相當有競爭力的模板語言,概括的介紹一下:



Tiny模板語言是一個基于Java技術構建的模板引擎,它具有體量小、性能高和擴展易的特點。 適合于所有通過文本模板生成文本類型內容的場景,如:XML、源文件、HTML等等,可以說,它的出現就是為了替換Velocity模板語言而來,因此在指令集上在盡量與Velocity接近的同時,又擴展了一些Velocity不能很好解決問題的指令與功能,在表達多方面則盡量與java保持一致,所以非常的易學易用。






  • 體量。罕憩F在總共5000+行的代碼,去掉一些擴展功能,核心引擎只有不行3000行代碼
  • 性能高:表現在與現在國內幾款高性能模板語言如:HTTL、Jetbrick、webit等引擎的性能相比,近乎伯仲之間,但是比Velocity、Freemarker等則有長足的進步,效率大致是Velocity四倍
  • 擴展性高:表現在Tiny模板語言在所有組成部分都可以自行擴展
  • 易學習:表現在Tiny模板語言概念清晰、語言組織方式采用了現有流行度非常高的Velocity語法體系,有相關經驗的人可以快速上手。
  • 使用方式靈活:表現在,可以單例方式、多例方式,并可以與Spring等有良好集成


功能特點介紹



  • 類似于 Velocity 的指令方式,相同或相似指令達80%左右
  • 支持可變參數方法調用
  • 支持類型成員方法重載
  • 支持函數擴展
  • 采用弱類型方式,對于模板層的代碼編寫約束更小,模型層怎樣變化,模板層的代碼調整都非常容易
  • 支持宏定義 #macro
  • 支持布局 Layout
  • 支持宏嵌套調用
  • 強大的開發工具支持Eclipse插件方式
  • HTML代碼渲染支持



其實在開發TinyDbRouter之前,我們主要是想找一個比較合適的數據庫分區、分表方案,為此也學習了各種實現方案,但是總是在功能性、可控性等方面不能得滿足,評估下來之后,還是決定自己嘗試寫一下,當然寫完之后感覺還是非常不錯的,經過一段時間的驗證、測試、實際應用,在各方面都有非常不錯的反應,因此才有現在開源的TinyDbRouter。



  • 水平擴展
  • Tiny DB Router是一種數據庫水平擴展解決方案
  • 支持JDBC 3及JDBC 4
  • 使用限制
  • 不支持物理跨庫關聯(Join)查詢
  • 分表時只支持游標分頁,不支持SQL分頁
  • 分表規則字段不允許修改
  • 設計目標
  • 支持各種常見數據庫
  • 分布式主鍵生成器
  • 自增長主鍵完美支持
  • 支持SQL92規范中除使用限制之外的絕大多數SQL語句
  • 在性能方面最大程度接近原生數據庫系統
  • 能完美支持統計、排序
  • 支持讀寫分離,支持權重負載均衡方案
  • 集群事務統一
  • 讀寫分離
  • 單庫分表
  • 多庫分表
  • 良好的擴展能力(分區規則擴展、分表規則擴展、主鍵生成擴展)





整體來說,是非常不錯的數據庫分庫分表方案,當然了,它也存在一些不足,它的實際應用目前還是在我們自己的項目當中,還需要進行充分的應用實踐去錘煉。

當然,這兩個子項目只是Tiny框架中的比較有代表性的子項目,實際上Tiny框架中有非常多的優秀子項目,希望大家能多多了解Tiny,自己發掘其中的內容。



7.TinyFramework的應用案例有哪些?目前已經開放了哪些應用?可以和我們分享下嗎?

TinyFramework從初版出來,目前主要在我們自己的公司進行推廣和應用。目前已經有許多企業級和互聯網級產品基于Tiny開發,并在幾十家客戶中使用。Tiny框架開源以來,許多團隊或企業也在使用Tiny開發自己的應用,在應用過程中提出了許多好的意見、建議、需求,有的甚至直接幫我們提交了Pull Request。一年來,Tiny的社區環境越來越完整。在2015年Tiny的外部用戶數上將會有一個較大的提升。

在功能性需求方面,Tiny框架有非常多的突破,由于涵蓋的功能太多,因此只能拿幾個有代表性來簡單介紹一下:




  • TinyDBRouter(數據庫分區分表):基于JDBC層實現,可以支持SQL92規范下的各種數據庫進行透明的數據庫分區、分表讀寫分離等水平擴展。
  • TinyTemplate(模板引擎):一個類 Velocity的模板引擎,但是功能更強大,添加了許多Velocity不支持的特性,運行速率大致是Velocity的4倍。
  • TinySqlDSL(數據庫開發框架):基于領域查詢語言方式的數據庫開發框架,可以在Java中用類似于寫SQL的方式來進行數據庫編程,比較好的解決了數據庫與Java兩層之間結合時的問題(要么兩者是分離的如iBatis,要么引入一種全新的語言如Hibernate的HSQL,要么就是在Java中進行大量的SQL拼接)。當然數據庫的開發方案有許多種解,各種解有各種解的優缺點,DSL方式也是一種實現方案,有其自己的優缺點。
  • TinyUI(界面引擎):主要解決WEB應用開發中的模塊化及JS、CSS及各種靜態資源管理的問題,主要解決靜態資源Jar包化、CSS 合并打包壓縮、JS合并打包壓縮,UI模塊之間的依賴關系等等體系性問題。
  • TinyStudio(集成開發工具):提供了可視化界面設計,可視化流程編排、模板引擎編輯器、代碼生成器,服務編輯器、元數據編輯器、數據庫設計器。

還有許多許多的內容,歡迎大家到我們的官網查閱相關內容。



8.為何你會說:“好的軟件設計是“品”出來的,信奉好的軟件架構一定是簡單的“。這句話怎么理解?在你看來好的軟件應具備哪些條件?

在軟件實踐中,對于一個特定的問題,不會是有一個唯一的最好的解決方案的。因為我們在軟件實踐過程中,不僅僅要考慮功能性問題,還要考慮非功能性問題,比如:安全性、可靠性、互操作性、健壯性、易使用性、可維護性、可移植性、可重用性、可擴充性等等,更要命的是,這些非功能特性有些是矛盾的,存在此消彼漲的情況。這個時候,每種方案的選擇都會影響到這些非功能指標,這個時候,作為一個技術決策者,就要對左邊走還是右邊走,進行仔細的斟酌,也就是我說的“品”,只有把每種方案都“品”到位了,才可以真正選擇出真正符合自己要求的解決方案。

我經常說:軟件能不能做好,要看你是不是能把一個軟件分解得粒度足夠小。當你能把一個復雜的問題分解成非常單一的小問題的時候,這個時候你就一定可以有相當不錯的解決方案。因為針對每一個小問題,我相信只要水平不是太差的,都可以給出完美的解或者相當不錯的解,當我們把所有的小問題都能給出完美的解或者相當不錯的解,甚至是可以接受的解的時候,最初的大問題也就可以有完美的解或者相當不錯的解。而一個簡單的小問題,它的軟件架構一定是簡單的,而這些簡單架構的累加,由于是高內聚、低耦合的,那么整個軟件架構也可以認為是簡單的。這也是我們的框架采用“Tiny”這個名字的原因之一。



9.未來的下一步計劃是什么?

Tiny框架從誕生至今,不管是從框架規模、實際應用都已經取得了相當的成績,當然也存在一些問題,接下來我們將會在以下方面進行完善:

文檔完善:目前我們的文檔已經有近千頁,但是文檔的質量還有待提高,接下來要對文檔質量在條理性、有效性、針對性方面作重點提升


實例完善:目前我們已經有了一些簡單的示例,但是還缺少重量級的實例,這方面會做一些即能體現Tiny特性,又有實際應用價值的開源產品。(劇透一下:目前我們正在基于Tiny開發一個項目管理軟件,到時依然會開源發布)

視頻講解:對于內部客戶來說,我們通過培訓可以解決一些文檔和實例不足的問題,但是對于外部用戶來說由于缺少培訓,實例也相對簡單,導致客戶上手稍慢。為此我們準備錄制視頻講解課件,方便用戶上手。

功能擴展:后面我們會重點對互聯網應用方面的一些技術及功能進行功能擴展。

組件庫:由于Tiny框架實際上一個面向組件的開發框架,我們自己做了許多的組件,這些組件可以大大提升軟件的開發效率及軟件的成熟度。組件庫的構建對于構建Tiny框架生態圈是非常重要的。




10.有什么話和ITPUB網友分享,一起進步?

ITPUB是一個非常優秀的程序員社區,同時也有自己的代碼托管及開源版塊,并且也吸引了大量的開源作者入駐。在這里,我把開源過程中的一些感觸和大家分享一下,不一定正確,大家一起探討。

關于收入的問題,如果期望開源能夠快速給自己帶來收入,這個可能絕大多數的可能是會失望的。一般來說,一個開源產品,從開始、發展,到能有收入,能營收平衡,這個一個漫長及艱難的過程。如果靠這個買米買肉,估計要餓死的。問題來了,如果做開源不關心收入,為什么還要開源呢?我可想可能有如下可能:

獲取精神上的滿足。比如,你做了一個好東西,但是又賣不了錢,放在自己兜兜里,一點成就感也沒有,拿出來開源,讓大家使用使用,自己獲得一下成就感,也是滿不錯的。

獲取社會的認可。通過開源,獲得相當的社會認可度,有可能東方不亮西方亮,獲得更好的發展機會或工作機會,或者獲得與別人合作的機會。

收集需求。一個人在那里做,總是有這樣那樣局限的,即使你是超級牛人,通過給別人免費使用,別人給你提出這樣那樣的意見和建議,可以幫你快速豐富和完善產品。

用戶測試。有時候,你做了個東東,自己也不知道到底好不好,現在有許多用戶來使用,實際上也同時給你做了測試。

獲取用戶群。有時候,一個產品放在那里沒有什么價值,但是隨著用戶群越來越大,可能就可以有盈利的潛質了。同時也是潛在用戶的一種培育,免費使用的人多了,可能就有愿意掏錢獲得更好的服務與產品或者定制開發的人了。

一種市場營銷手段。本來產品做也還可以,通過開源,獲得市場認可,提高知名度,為后續推廣奠定基礎;同時讓人們看到內部的實現,從黑盒變成白盒,讓人們放心的選擇。

當然也可能是其中的幾個或者全部?傊,開源是一個艱辛的選擇,需要長久的堅守,需要不急不燥的一份態度。所以,開源是一種修行,有可能是沒有成果的凡人,也可能是小有成就的佛子,也有可能大有成就的尊者,還有可能是至真至高的佛。如果想了解Tiny的更多內容,可以訪問Tiny官網:http://www.tinygroup.org/

認證徽章
論壇徽章:
220
狀元
日期:2015-08-13 09:42:33榜眼
日期:2015-08-03 13:57:54探花
日期:2015-07-31 13:44:02舉人
日期:2015-07-01 15:00:51秀才
日期:2015-07-27 09:45:52進士
日期:2015-07-27 11:26:492015年中國系統架構師大會紀念徽章
日期:2015-07-23 09:58:092014系統架構師大會紀念章
日期:2015-07-23 09:58:092013系統架構師大會紀念章
日期:2015-07-23 09:58:092012系統架構師大會紀念章
日期:2015-07-23 09:58:09
2#
發表于 2015-9-6 16:49 | 只看該作者
想做開源太難。

使用道具 舉報

回復
求職 : SAP實施
認證徽章
論壇徽章:
259
土豪章
日期:2018-07-10 16:19:05ITPUB18周年紀念章
日期:2018-09-17 10:09:49ITPUB18周年紀念章
日期:2018-09-17 10:12:57妮可·羅賓
日期:2018-10-28 13:07:10ITPUB18周年紀念章
日期:2018-11-13 15:31:24ITPUB18周年紀念章
日期:2018-11-13 15:40:4519周年集字徽章-慶
日期:2019-09-06 18:30:12
3#
發表于 2015-9-6 16:51 | 只看該作者
支持大牛

使用道具 舉報

回復
論壇徽章:
0
4#
發表于 2015-9-6 17:35 | 只看該作者
開源是一個艱辛的選擇,需要長久的堅守,需要不急不燥的一份態度。支持Tiny開源框架!

使用道具 舉報

回復
認證徽章
論壇徽章:
176
現任管理團隊成員
日期:2011-05-07 01:45:08版主7段
日期:2012-07-05 02:21:03ITPUB長老會成員
日期:2015-05-07 15:11:10ITPUB年度最佳版主
日期:2011-04-08 18:37:09ITPUB年度最佳版主
日期:2011-12-28 15:24:18ITPUB牛人
日期:2010-10-25 12:41:322010數據庫技術大會紀念徽章
日期:2015-04-23 10:33:192011數據庫大會紀念章
日期:2015-04-23 10:33:192012數據庫大會紀念章
日期:2015-04-23 10:33:192013數據庫大會紀念章
日期:2015-04-23 10:33:19
5#
發表于 2015-9-9 16:20 | 只看該作者

使用道具 舉報

回復
認證徽章
論壇徽章:
241
至尊黑鉆
日期:2015-09-25 14:27:26粉鉆
日期:2015-10-16 10:53:36紫鉆
日期:2015-10-16 10:53:21紅鉆
日期:2015-09-25 15:05:50黃鉆
日期:2015-10-17 12:23:40綠鉆
日期:2015-10-24 10:29:30至尊黑鉆
日期:2015-08-14 13:24:07粉鉆
日期:2015-10-24 10:30:07紫鉆
日期:2015-11-03 22:32:09紅鉆
日期:2015-11-06 17:21:40
6#
發表于 2015-9-9 16:32 | 只看該作者

使用道具 舉報

回復
論壇徽章:
2
ITPUB新首頁上線紀念徽章
日期:2007-10-20 08:38:442013年新春福章
日期:2013-02-25 14:51:24
7#
發表于 2015-9-12 17:48 | 只看該作者
支持大牛,加油

使用道具 舉報

回復
論壇徽章:
0
8#
發表于 2015-10-10 13:45 | 只看該作者
zhichi!

使用道具 舉報

回復
論壇徽章:
2
秀才
日期:2015-12-14 14:51:16秀才
日期:2016-01-25 15:02:04
9#
發表于 2015-12-9 15:13 | 只看該作者
這些基本原則的確是在實際項目開發中摸爬滾打出來的,心有戚戚焉

使用道具 舉報

回復
論壇徽章:
0
10#
發表于 2016-4-13 22:06 | 只看該作者
支持大牛

使用道具 舉報

回復

您需要登錄后才可以回帖 登錄 | 注冊

本版積分規則 發表回復

DTCC2020中國數據庫技術大會 限時8.5折

【架構革新 高效可控】2020年9月21日~23日第十一屆中國數據庫技術大會將在北京隆重召開。

大會設置2大主會場,20+技術專場,將邀請超百位行業專家,重點圍繞數據架構、AI與大數據、傳統企業數據庫實踐和國產開源數據庫等內容展開分享和探討,為廣大數據領域從業人士提供一場年度盛會和交流平臺。

http://dtcc.it168.com


大會官網>>
30岁的男人干啥赚钱快赚钱多 九五至尊棋牌app官方下载 pc蛋蛋在线 分分彩后一打大小诀窍 th金蟾捕鱼怎么打才能爆分 股票行情从哪里看 一枝红梅是指什么生肖 彩票开奖查询30选5 血流麻将规则怎么玩 快3开奖直播 三肖期期中免费公开
TOP技術積分榜 社區積分榜 徽章 團隊 統計 知識索引樹 積分競拍 文本模式 幫助
  ITPUB首頁 | ITPUB論壇 | 數據庫技術 | 企業信息化 | 開發技術 | 微軟技術 | 軟件工程與項目管理 | IBM技術園地 | 行業縱向討論 | IT招聘 | IT文檔
  ChinaUnix | ChinaUnix博客 | ChinaUnix論壇
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓優訊信息技術有限公司版權所有 聯系我們 
京ICP備09055130號-4  北京市公安局海淀分局網監中心備案編號:11010802021510 廣播電視節目制作經營許可證:編號(京)字第1149號
  
快速回復 返回頂部 返回列表
九五至尊棋牌app官方下载 pc蛋蛋在线 分分彩后一打大小诀窍 th金蟾捕鱼怎么打才能爆分 股票行情从哪里看 一枝红梅是指什么生肖 彩票开奖查询30选5 血流麻将规则怎么玩 快3开奖直播 三肖期期中免费公开