免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
跨越邊界: Streamlined,第 2 部分

2006 年 11 月 16 日

本系列文章包括兩部分,第 1 部分 介紹了 Streamlined,這是個基于 Rails 的開放源碼框架,它組合了 Ajax、元編程以及代碼生成的強(qiáng)大功能,把 Rails 的效率提升到了一個新的層次。第 2 部分將探索 Streamlined 背后的元模型是如何支持定制的。

本系列文章包括兩部分,在 第 1 部分 中,我展示了一種稱為搭建的 Ruby on Rails 特性,介紹了它的限制,然后演示了稱為 Streamlined 的框架如何可以把搭建提升到構(gòu)建功能性用戶界面這一層次。但是即使使用最高級的生成器,用戶界面也總是需要些定制。如果不能有效地擴(kuò)展所構(gòu)建的內(nèi)容,那么構(gòu)建得再快,也不會擁有有效的應(yīng)用程序開發(fā)框架。這篇文章將介紹 Streamlined 背后的定制模型的基礎(chǔ):Streamlined 元模型。

Streamlined 的快速回顧

關(guān)于本系列

跨越邊界 系列中,,作者 Bruce Tate 宣揚(yáng)了這樣一種觀點(diǎn):當(dāng)今的 Java 程序員通過學(xué)習(xí)其他方法和語言會得到其他思路。自從 Java 明顯成為所有開發(fā)項(xiàng)目的最佳選擇以來,編程前景已經(jīng)改變。其他的框架正在影響搭建 Java 框架的方式,從其他語言學(xué)到的概念可以影響您的 Java 編程。您編寫的 Python(Ruby、Smalltalk……)代碼可以改變您處理 Java 編碼的方式。

本系列介紹了與 Java 開發(fā)有根本不同但是卻直接適用的編程概念和技術(shù)。在某些情況下,需要集成這些技術(shù)以利用它。在其他情況下,則可以直接應(yīng)用這些概念。比起其他語言和框架能夠影響 Java 社區(qū)的開發(fā)人員、框架甚至基本方法這一概念,單獨(dú)的工具不是那么重要。

第 1 部分 中,我構(gòu)建了一個簡單的 Rails 應(yīng)用程序,存儲了一些進(jìn)行山地單車運(yùn)動的 trail 并將它們按其臨近的城市加以組織。我開始時創(chuàng)建了一個模型,包含兩個模型對象和它們之間的關(guān)系。然后運(yùn)行 Streamlined 應(yīng)用程序生成器,它生成了一個健壯的應(yīng)用程序,生成的應(yīng)用程序有以下特性:

  • 完整的用戶界面,包含布局,帶有鏈接指向每個模型的管理頁面。
  • 每個模型有一個列表頁面,可以按任意列排序或根據(jù)所有列的內(nèi)容進(jìn)行過濾。
  • 支持 Ajax 的列表,可以顯示、編輯、刪除或創(chuàng)建條目。
  • 導(dǎo)出程序可以生成視圖的 XML 或 CSV 導(dǎo)出。

隨著年輕的 Streamlined 框架的發(fā)展,對于基礎(chǔ)應(yīng)用程序模板所做的增強(qiáng)將可以用于所有 Streamlined 應(yīng)用程序。目前已經(jīng)策劃的增強(qiáng)包括:基于 REST 和 SOAP 的 Web 服務(wù),以及稱為 皮膚 的樣式模板。

定制默認(rèn)應(yīng)用程序

現(xiàn)在要定制 Trails 應(yīng)用程序的代碼。如果想和我一起編寫代碼,需要安裝 Ruby、Rails 和 Streamlined (參閱 參考資料)并構(gòu)建 第 1 部分 中的應(yīng)用程序。將在這個基礎(chǔ)上進(jìn)行添加和改動來定制 Trails 應(yīng)用程序。

如果還沒這樣做過,請通過輸入 script/server 從項(xiàng)目目錄中啟動 Web 服務(wù)器(在 Windows 上是 ruby script/server)。把瀏覽器指向 http://localhost:3000/Trails/list 這個 URL,啟動 Trails 視圖。圖 1 顯示了基本的 Streamlined 視圖。如果您已經(jīng)添加了數(shù)據(jù),那么會注意到與 Rails 搭建不同,Streamlined 替您管理了關(guān)系。還會注意到關(guān)系依賴 id 字段。


圖 1. 默認(rèn) Streamlined 應(yīng)用程序





回頁首


Streamlined 定制策略

這個實(shí)現(xiàn)可以工作,但對用戶來說不是最好的實(shí)現(xiàn)。用戶希望看到賽道位于的城市的名稱,而不僅僅是個 ID。實(shí)際上,這個應(yīng)用程序的用戶永遠(yuǎn)不需要看到 ID。在我解決這個問題之前,我要先介紹 Streamlined 的定制策略。

有些應(yīng)用程序生成框架會強(qiáng)迫用戶在這個時候修改生成的代碼。Rails 搭建當(dāng)然可以這樣工作,但這僅僅是擴(kuò)展生成的應(yīng)用程序的三種方法之一:

  • 可以修改生成的代碼。
  • 可以用編程方案(例如繼承)和定制掛鉤(例如 Visual Basic 腳本)編寫擴(kuò)展應(yīng)用程序的新代碼。
  • 可以改進(jìn)可用的元數(shù)據(jù),這樣框架就可以生成更智能的應(yīng)用程序。

這些方法各有各的用途。隨著代碼復(fù)雜性的提高,第一個策略變得越來越無用,因?yàn)橛瞄_發(fā)人員不可能編寫復(fù)雜代碼,這會加大開發(fā)人員的負(fù)擔(dān)。應(yīng)當(dāng)把這個策略局限在擴(kuò)展非常簡單的代碼上。Streamlined 通過添加新運(yùn)作,使得可以容易地修改現(xiàn)有控制器。

第二種方法 —— 用新的定制代碼擴(kuò)展應(yīng)用程序 —— 是多數(shù)快速應(yīng)用程序開發(fā)環(huán)境采用的常用方法。一般來說,當(dāng)框架設(shè)計者考慮添加定制的空間時,這個策略工作得最好。Rails 與 Ruby 的動態(tài)特性結(jié)合,提供了許多開發(fā)人員意想不到的定制點(diǎn),使這個策略特別吸引人。在 Streamlined 中,經(jīng)常會創(chuàng)建應(yīng)用程序視圖的新模板。也可以利用通用的 Rails 架構(gòu),在自己的橫切關(guān)注點(diǎn)上(例如安全性)展開。

第三種方法,是改進(jìn)的元模型,它是 Streamlined 的基礎(chǔ)。在 第 1 部分 中,看到了搭建如何使用活動記錄提供的元數(shù)據(jù) —— 類型、列名稱和關(guān)系 —— 來構(gòu)建復(fù)雜的用戶界面。在 Java 應(yīng)用程序內(nèi),經(jīng)常用 XML 配置實(shí)現(xiàn)這個策略。這當(dāng)然是提供元數(shù)據(jù)的一種方法,但是要查看的數(shù)據(jù)太多,我擔(dān)心有朝一日,我的眼睛會壞掉。





回頁首


通過元模型修改顯示內(nèi)容

郵件合并元編程比喻

跨越邊界 系列以前的文章中,已經(jīng)看到過 Ruby 中的模板和元編程技術(shù)。請把 Ruby 模板想像成郵件合并文檔。然后,Rails 使用元編程來生成和使用元模型(例如數(shù)據(jù)庫模式或列定義),這好比郵件合并應(yīng)用程序中的名稱列表。Streamlined 引入了兩段基本代碼,模仿了這種方法。視圖模板允許 Streamlined 不僅僅生成一個 “郵件合并” 文檔,而且還會生成應(yīng)用程序中的所有類似視圖。Streamlined 通過活動記錄、也通過定制元模型來利用元數(shù)據(jù)。這些部分與 Streamlined 生成器和庫組合在一起,構(gòu)成了一個很優(yōu)秀的應(yīng)用程序生成平臺。

Streamlined 并不處理這個麻煩,而是支持通過元編程和模板的有效定制。要理解這個方法,請想像一下郵件合并應(yīng)用程序。郵件合并應(yīng)用程序得到名稱列表和包含消息的模板。模板有些用來插入細(xì)節(jié)(例如名稱、地址和電話號碼)的定制位置。請把名稱列表想像成用來定制模板的元數(shù)據(jù)。

Streamlined 就像個郵件合并 —— 只是它為每個模型對象使用元數(shù)據(jù)來創(chuàng)建整個應(yīng)用程序,而不是郵件。要提供 視圖模板 或使用 Streamlined 提供的默認(rèn)視圖模板。首先,要求 Streamlined 生成應(yīng)用程序模板和所指定的每個模型類的元數(shù)據(jù)的占位器。接下來,通過元模型指定定制的用戶界面選項(xiàng),例如想讓 Streamlined 如何顯示關(guān)系。然后,告訴 Streamlined 如何呈現(xiàn)每個視圖。Streamlined 把元模型中的數(shù)據(jù)應(yīng)用到模板,把它們組合起來形成 所指定的每個模型的新視圖,如圖 2 所示:


圖 2. Streamlined 元數(shù)據(jù)和模板

首先,我要介紹元模型。首先會看到元模板如何影響應(yīng)用程序。然后,我要介紹如何用 Streamlined 模板定制應(yīng)用程序。具體來說,請看 app/Streamlined/trail.rb 文件。將看到一個空白類。就是在這里可以定制 trails/list 視圖的某些方面。請把這個文件編輯成如清單 1 一樣:


清單 1. trail.rb 的 Streamlined 元模型
                        require File.dirname(__FILE__) + ‘/streamlined_ui‘                        class TrailUI < Streamlined::UI                        relationship :location, :fields => [:city, :state]                        end                        

清單 1 代表 Trails 視圖的元數(shù)據(jù)。稍后會看到,Streamlined 可以把這些值替換進(jìn)視圖模板,形成完整的用戶界面屏幕?,F(xiàn)在,重新裝載瀏覽器。會看到刷新的視圖,如圖 3 所示:


圖 3. 修訂關(guān)系內(nèi)容

請注意在關(guān)系表示中的變化。Location 列現(xiàn)在顯示兩個字段:城市和州。

Streamlined 的創(chuàng)造者們原本可以輕易地把定制數(shù)據(jù)添加到了活動記錄。這個策略會把所有配置保持在同一位置。但是他們沒有這樣做,我非常感謝他們。他們的方法 —— 元數(shù)據(jù)在獨(dú)立目錄中 —— 有幾個關(guān)鍵優(yōu)勢:

  • 獨(dú)立元數(shù)據(jù)不會混合視圖數(shù)據(jù)與模型數(shù)據(jù)。在模型和視圖之間的清楚分離,對于降低耦合很重要,并使對視圖的根本修改不會影響到模型,反之亦然。
  • streamlined 目錄支持額外的元數(shù)據(jù),而不會污染活動記錄。
  • Streamlined 方法允許在一個地點(diǎn)合并常見視圖特征,非常像活動記錄為了持久性考慮而做的那樣。

迄今為止,我已經(jīng)修改了 Streamlined 在 Trails 視圖中表示關(guān)系的方法。元編程框架經(jīng)常需要支持一些外部決策,例如決定哪個列或內(nèi)部字段對用戶重要。默認(rèn)情況下,Streamlined 排除了特殊的 Rails 字段,例如外鍵、主鍵、時間戳,而包含了其余字段??梢匀菀椎赜?user_columns 方法覆蓋這些默認(rèn)設(shè)置,這個方法中有 includeexclude 選項(xiàng)。例如,我需要做這樣一個修改。Description 字段通常擁有文本的整個段落。通常,用戶界面不會在這樣的匯總列表中列出所有字段。我可以用元模型在列表視圖中排除某些字段。方法是編輯 app/streamlined/trail.rb,加上排除 Description 列的代碼,如清單 2 所示:


清單 2. 排除 description 列
                        require File.dirname(__FILE__) + ‘/streamlined_ui‘                        class TrailUI < Streamlined::UI                        relationship :location, :fields => [:city, :state]                        user_columns :exclude => [:description]                        end                        

然后,重載瀏覽器,得到圖 4 所示的結(jié)果:


圖 4. 刪除定制列





回頁首


修改顯示結(jié)構(gòu)

Streamlined 更強(qiáng)大的方面之一就是其協(xié)助管理關(guān)系的方法。裝入 http://localhost:3000/locations/list 的視圖。進(jìn)一步觀看關(guān)系用戶界面。會看到一個數(shù)字,它是與地點(diǎn)有關(guān)的賽道的數(shù)量。接下來,單擊 location 列下的 Edit 鏈接。將看到一列復(fù)選框,如圖 5 所示。這些都是數(shù)據(jù)庫中的賽道,選中的代表它屬于指定地點(diǎn)。這個窗口是關(guān)系的視圖。


圖 5. 默認(rèn)關(guān)系視圖

Streamlined 框架提供了三種不同的關(guān)系視圖:

  • 默認(rèn)的 :membership 視圖用復(fù)選框代表關(guān)系,如圖 5 所示。選中的框表示成員。Streamlined 猜測要把哪個字段用于復(fù)選框,但是可以用叫作 view_fields 的選項(xiàng)覆蓋它的猜測。

  • 圖 6 中的 :inset_table 視圖在內(nèi)嵌表中顯示相關(guān)字段。在這個示例中,可以立即在嵌入表中看到相關(guān)數(shù)據(jù)。



    圖 6. :inset_table 關(guān)系視圖


    清單 3 顯示了圖 6 中視圖的代碼:



    清單 3. 關(guān)系的 Inset 表視圖
                                require File.dirname(__FILE__) + ‘/streamlined_ui‘                            class LocationUI < Streamlined::UI                            relationship :trails, :view => :inset_table                            end                            



  • 圖 7 還顯示了一個表格,它使用 :window 視圖放置了一個按需彈出窗口而不是 inset:



    圖 7. :window 關(guān)系視圖


    :window 關(guān)系視圖的代碼如清單 4 所示:



    清單 4. 關(guān)系的 Window 視圖
                                require File.dirname(__FILE__) + ‘/streamlined_ui‘                            class LocationUI < Streamlined::UI                            relationship :trails, :view => :window                            end                            

這些視圖都支持 Ajax。當(dāng)在成員視圖中選中一個復(fù)選框時,視圖發(fā)出 Ajax 調(diào)用,更新服務(wù)器上的相關(guān)模型。修改是即時的,立即會有用戶反饋。Streamlined 有效地利用 Ajax 模糊了 Web 用戶界面和富客戶端之間的界線。完全支持 Ajax 的視圖并不是元編程的典型特性,但是一旦有了良好的基礎(chǔ),就可以在不斷提高的抽象層次上工作。

Streamlined 框架還允許您決定在關(guān)系總結(jié)字段中表示什么。在 圖 3 中,會看到指定地點(diǎn)全部相關(guān) Trails 的總結(jié)。也可以配置總結(jié),顯示合計、所有相關(guān)城市的字段或其他數(shù)學(xué)特性(例如它們的開放的平均數(shù))。例如,可以指定 relationship :trails, :summary => :list, :fields => [:name, :difficulty],看到圖 8 中的結(jié)果:


圖 8. 總結(jié)列表

Ruby 的特性支持這個語法??偨Y(jié)行還是 relationship :trails, :summary => :list, :fields => [:name, :difficulty]。這個代碼調(diào)用叫作 relationship 的方法,并傳遞進(jìn)一些參數(shù)??梢愿M(jìn)一步,找出到底發(fā)生了什么。在 清單 4 中,看到了每個 Streamlined 配置都繼承自 Streamlined::UIStreamlined 是個模塊,UI 是這個模塊中的類。)打開 app/streamlined/streamlined_ui.rb 文件,可以看到 relationship 的方法定義。在清單 5 中可以看到方法定義:


清單 5. StreamlinedUI.rb 文件中的關(guān)系方法
                        def relationship(rel, options = {})                        ensure_options_parity(options)                        initialize_relationships unless @relationships                        @relationships[rel] = {} unless @relationships[rel]                        @relationships[rel].merge!(options)                        end                        

可以看到兩個參數(shù):reloptions??赡芟肟吹礁鄥?shù),因?yàn)榉椒ㄕ{(diào)用給出了針對 :trails、:summary:fields 的參數(shù)。實(shí)際上,:trailsrel 參數(shù),而 :summary => :list, :fields => [:name, difficulty] 是個名稱-值對,代表 options 的單一哈希圖。開始時,這個語法有點(diǎn)讓人迷惑,但是它為 Ruby 提供了模擬已命名的可選參數(shù)的能力,而所需的語言的額外開支卻很小。





回頁首


擴(kuò)展視圖模板

迄今為止,我還不需要修改現(xiàn)有應(yīng)用程序中的代碼,但是 Streamlined 確實(shí)提供了可以讓視圖定制變得更容易的幾種機(jī)制。可以容易地想像出需要在應(yīng)用程序內(nèi)修改一個視圖甚至所有視圖的場景。首先,我要介紹 Streamlined 如何處理單一視圖。然后,我要展開討論,包括進(jìn)應(yīng)用程序中的所有視圖。

默認(rèn)情況下,Streamlined 為應(yīng)用程序中的每個模型創(chuàng)建一個視圖,還有一個針對所有應(yīng)用程序視圖的視圖模板。要覆蓋單一視圖,可以只修改這個實(shí)現(xiàn)。例如,用一個單詞 Testing 代替 app/views/trails/list.rhtml 中的所有代碼。然后,單擊左側(cè)欄中的 Trails。會看到圖 9 中的視圖??梢杂眠@種方法定制系統(tǒng)中的任何單個視圖。


圖 9. 修改 Streamlined 視圖

獨(dú)立地修改視圖是很好的,但是如果想獲得元編程的全部威力,可能想用一個模板來構(gòu)建應(yīng)用程序中的全部視圖。這種方法會提供最佳效果,因?yàn)槭菫檎麄€應(yīng)用程序編寫一個模板。刪除 app/views/trails 中的全部文件。這會在運(yùn)行時要求 Streamlined 調(diào)用公共模板視圖。Streamlined 覆蓋叫作 render 的方法,以實(shí)現(xiàn)這個目的。停止和重啟 Web 服務(wù)器(因?yàn)橐呀?jīng)修改了底層結(jié)構(gòu))并重載瀏覽器。將看到 圖 1 中的原始 Trails 視圖恢復(fù)了。如果我能選擇,我會通過用 no_views 選項(xiàng)調(diào)用 Streamlined 生成器,用一個視圖模板生成我的初始應(yīng)用程序。

可以在 app/views 中找到所有視圖代碼。側(cè)欄、頁頭、頁腳、菜單和公共文件都在 streamlined 目錄中。管理關(guān)系的視圖在 streamlined/relationships 中,部分主內(nèi)容和主內(nèi)容的視圖在 streamlined/generic_views 中。

清單 6 顯示了 Streamlined 的主模板 app/views/streamlined/generic_views/_list.rhtml 的一部分:


清單 6. Streamlined 模板的一部分(為了可讀性添加了分行)
                        <% for item in @streamlined_items %>                        <% alt = 1 - alt %>                        <tr <%= "class=‘odd‘" if alt == 0 %>>                        <% for column in @model_ui.user_columns_for_display %>                        <td><%=h item.send(column.name) %></td>                        <% end %>                        <% for relationship in @model.reflect_on_all_associations %>                        <td>                        <div id="<%= relationship_div_id(relationship, item) %>">                        <%= render(:partial => "#{@model_ui.summary_def(relationship.name).partial}",                        :locals=> {:item=> item, :relationship=> relationship,                        :fields=> @model_ui.summary_def(relationship.name).fields})%>                        </div>                        <%=link_to_function("Edit", "Streamlined.Relationships.open_relationship(‘#{                        relationship_div_id(relationship, item)}‘, this,                        ‘/#{params[:controller]}‘)")%>                        </td>                        <% end %>                        ...deleted code to render links...                        <% end %>                        

請注意兩個 for 循環(huán)。每個循環(huán)都反映活動記錄和 Streamlined 的元數(shù)據(jù)。第一個循環(huán)在每個 Streamlined 列上迭代。Streamlined 通過從活動記錄元數(shù)據(jù)中提取全部列、刪除某些特定于 Rails 的列(例如 id)、排除或包含在 Streamlined 元數(shù)據(jù)中指定的每個列(如 清單 2 所示)來確定有哪個列要參與。第二個循環(huán)在活動目錄模型中的所有關(guān)系上迭代,并呈現(xiàn)每個關(guān)系的適當(dāng)部分。

我也可以組合各種方法??梢跃帉懸粋€應(yīng)用程序,用一個 Streamlined 模板(帶站點(diǎn)范圍內(nèi)的編程約定)代表多數(shù)視圖, 然后在我需要打破公共的站點(diǎn)范圍約定時,再按照需要覆蓋單個視圖。這是一種極為強(qiáng)大的開發(fā)范式,可以讓人從一個很好的默認(rèn)實(shí)現(xiàn)開始,然后再在站點(diǎn)范圍內(nèi)或單一頁面的基礎(chǔ)上用定制實(shí)現(xiàn)來編輯或完全替換標(biāo)準(zhǔn)實(shí)現(xiàn)。





回頁首


整體再回顧

Streamlined 是個帶支持應(yīng)用程序生成的富元模型的框架。元模型變成了更高層次的編程語言,提高了效率。在某些方式上,這樣一個框架在 Rails 中是不可避免的,因?yàn)橥瑯拥脑幊坦ぞ呤沟么罱梢杂糜?Rails 框架的所有用戶。構(gòu)建更有效的搭建系統(tǒng)只是個時間早晚的問題。

在 Streamlined 中,得到了這樣一個框架,它組合了更高的語言抽象、代碼生成和用來擴(kuò)展的定制掛鉤。公共的元模型驅(qū)動著每件事。使用這項(xiàng)技術(shù),框架的重點(diǎn)主要放在用戶界面上,但是可以看到它的前進(jìn)已經(jīng)超越了 Web 頁面。Streamlined 已經(jīng)或很快就會提供以下這些特性:

  • 用于內(nèi)容聯(lián)合的 Atom 提要:這會讓 Web 上的其他應(yīng)用程序可以利用由 Streamlined 應(yīng)用程序生成的并符合公共標(biāo)準(zhǔn)的自動 XML 提要。
  • XML 和 CSV 導(dǎo)出:Streamlined 允許公共數(shù)據(jù)格式的導(dǎo)出。
  • 查詢和過濾器:Streamlined 允許用簡單查詢過濾內(nèi)容,然后使用結(jié)果。
  • 基于 REST 的 Web 服務(wù):Streamlined 開始時有 Web 服務(wù)支持,但是后來清除掉了,因?yàn)?Rails 架構(gòu)師正在重新設(shè)計 Web 服務(wù)支持,要將其改成基于簡單 REST 方式的插件系統(tǒng)(請參閱 參考資料)。

Streamlined 正在努力在不遠(yuǎn)的將來成為一個元編程框架,允許您創(chuàng)建任意模板,插入現(xiàn)有 Rails 組件、生成器和插件。這個框架將超過外觀感受,進(jìn)而創(chuàng)建一個公共架構(gòu),有可能形成一個極為強(qiáng)大的企業(yè)應(yīng)用程序生成器。Relevance, LLC 的 Justin Gehtland 說過: “Streamlined 的下幾個發(fā)行版,意在鞏固它作為元框架的位置。它將包含和重用標(biāo)準(zhǔn) 的 Rails 生成器、切實(shí)可用的插件和其他開源框架,從而迅速裝配起整個應(yīng)用程序,超出目前提供的 CRUD 支持。我們將可以用與以前同樣的方法進(jìn)行配置:依賴良好約定,但是提供用于修改默認(rèn)項(xiàng)的聲明式 DSL?!?

帶有優(yōu)秀定制的更高抽象層次是任何語言(包括 Java 語言)的神圣目標(biāo)。在下期的 跨越邊界 文章中,我要研究延遲綁定的好處。在那之前,請繼續(xù)尋找通過提升抽象來增強(qiáng)實(shí)力的方法,并請繼續(xù)跨越邊界。



參考資料

學(xué)習(xí)
  • 您可以參閱本文在 developerWorks 全球站點(diǎn)上的 英文原文

  • Java To Ruby: Things Your Manager Should Know (Pragmatic Bookshelf,2006):這是本文作者編著的一本書,講述何時何處從 Java 編程轉(zhuǎn)變到 Ruby on Rails 以及如何完成這種轉(zhuǎn)變。

  • Beyond Java (O‘Reilly,2005):本文作者編寫的一本書,講述 Java 語言的提高和穩(wěn)定發(fā)展,以及在某些方面能夠挑戰(zhàn) Java 平臺的技術(shù)。

  • Simply RESTful:提供了對 Rails REST Web 服務(wù)的下一個模型的概觀。

  • Book review: Agile Web Development with Rails ”(Darren Torpey,developerWorks,2005 年 5 月):介紹了這樣一本書,它可以加深讀者對 Rails 及敏捷開發(fā)方式原理的理解。

  • Streamlined:訪問 Streamlined 的 Web 站點(diǎn)和博客。

  • Rails API:Rails 框架文檔是從內(nèi)到外學(xué)習(xí)搭建和讓其工作的元編程技術(shù)的最佳途徑。參閱 scaffolding.rb 類獲得更多細(xì)節(jié)。

  • Programming Ruby (Dave Thomas 等,Pragmatic Bookshelf,2005):關(guān)于 Ruby 編程的一本流行書。

  • Java 技術(shù)專區(qū):數(shù)百篇 Java 編程各方面的文章。


獲得產(chǎn)品和技術(shù)
  • Streamlined:下載 Streamlined 應(yīng)用程序生成器并試用。Streamlined 正在快速發(fā)展,所以要下載初始的 alpha 版本。

  • Ruby on Rails:請下載開源的 Ruby on Rails Web 框架。

  • Ruby:從該項(xiàng)目的 Web 站點(diǎn)獲得 Ruby。


討論


關(guān)于作者

Bruce Tate 居住在得克薩斯州的首府奧斯汀,他是一位父親,同時也是山地車手和皮艇手。他是 3 本最暢銷 Java 書籍的作者,其中包括榮獲 Jolt 大獎的 Better, Faster, Lighter Java 一書,最近又出版了 Spring: A Developer‘s Notebook 一書。他在 IBM 工作了 13 年,現(xiàn)在是 J2Life, LLC 的創(chuàng)始人兼顧問。他潛心研究基于 Java 和 Ruby 的輕量級開發(fā)策略和架構(gòu)。

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
EasyTime - Ruby學(xué)習(xí)筆記 | Agile Web Development with Rails 翻譯(十四)
為 Oracle 和 Ruby on Rails 添加標(biāo)簽
使用 Ruby on Rails 快速開發(fā) Web 應(yīng)用程序
使用 Eclipse 插件 Ruby Development Tools
使用NetBeans 6.0 在10分鐘內(nèi)創(chuàng)建一個 Ruby 博客程序
微前端架構(gòu):如何由內(nèi)而外取代單體架構(gòu)
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服