2014年8月28日 星期四

電腦產業的生態鏈 -「浪潮之巔–剖析IT產業」

http://www.yabook.com.tw/400.jpg/9789862015711.jpg
    本文內容摘自於吳軍博士所著的「浪潮之巔–剖析IT產業 掌握下一個黃金十年」一書的第四章「電腦產業的生態鏈」,這是一本內容精彩、用字洗鍊的書,吳軍用史詩般壯麗的述說方式,時間縱貫前後100多年、領域橫括IT上下游產業、涵蓋軟體及硬體等等企業及革命性產品,實在是非常值得一讀的書,我把其中精彩的第四章「電腦產業的生態鏈」的內容整理摘錄於此,並將部份心得繪製成圖表作為補充,提供給大家參考。


  1. 三種定律

  下面的三種個定律合稱為IT界三大定律,此三者提出的時間不同,但卻彼此糾葛相互影響,對於IT產業的發展循環致關重大,王軍在書中詳細的介紹了這三大定律,以及它們之間的關係與影響。

A)摩爾定律Moore’s law

  摩爾定律描述的是一種電腦等IT技術快速發展的現象,它造成的影響是IT產品新舊的汰換率快速,產品價格迅速的大幅下修;這個理論最早是由英特爾的創始人Gordon Moore在1965年所提出,他指出,積體電路的集成度每兩年會增加一倍(後來大家把這個週期縮短到18個月),若我們將積體電路的發展應用到PC產業,變成每18個月,電腦等IT產品的性能成長一倍,或者說,相同性能的電腦等IT產品,每18個月價錢便會下降一半;雖然這個發展速度頗讓人吃驚,但幾十年來IT行業的發展始終遵循著摩爾定律預測的速度在走。
  舉例來說,1945年時候,世界上第一台電腦ENIAC的速度是在一秒鐘完成5000次定點的加減法運算,到了2007年,使用英特爾Core晶片的個人電腦計算速度是每秒500億次浮點運算,已經是ENIAC的1000萬倍,而當年度(2007年)世界最快的電腦深藍BlueGene/L它的計算速度則高達每秒鐘367萬億次,是ENIAC的734億倍,換算下來,正好是每20個月成長一倍,和摩爾定律預測的速度大致相同。
而儲存容量的增長速度比起PC速度則又更快一些,大約每15個月就成長一倍;1976年,蘋果電腦軟碟機的容量為160KB,而到了2007年目前同樣的價格下所購置的硬碟容量可到500G,是當時的的300萬倍。而網路速度呢?1994年時代家用的數據機撥接速度是2.4Kbps,到了2007年的ADSL通過同樣一條電話線的速度可以達到10Mbps的傳輸率,這樣的成長速度大約是每年成長一倍。
直到目前,IT領域的技術進步仍看不到停下來的跡象,長期而言摩爾定律依然適用,這使得IT產業有著它獨有的特性,因為在人類文明史上,沒有任何一個其它的產業像IT產業有這種類似的成長現象。
正因為摩爾定律主導著IT產業的發展,使得IT行業的公司必須著重在:
  1. 產品開發時程縮短:IT公司必須在比較短的時間內完成下一代產品的開發,避免市場上不會有太多競爭者。
  2. 有了技術的支援,各種應用會不斷的湧現:例如高畫質影片數位化的計算,在早期連IBM的大型機也無法勝任,但現在一台筆記本大小的Sony遊戲機便可做到了,再例如,在十年前不會有人想建立類似Youtube線上串流影音的播放的公司,但現在網路速度發展,讓Youtube成深入每個人的日常生活。
  3. 針對多年後的市場預先進行研發:例如針對十年後家庭上網速度提高一千倍的場景。
個人補充:摩爾定律自1965年提出,雖然至今持續應驗了近50年,但至少在20年前,就有學者開始計算或是討論它的死亡日期,最主要的癥結在於光學顯影(Lithography)的技術障礙以及微縮高昂的成本超過了由此帶來的成本節約;而在更高的速度、更低的能耗和更低的成本三個因素中,晶片廠商僅能一次選擇其二,例如前幾年有很多人認為10奈米可能就是摩爾定律的極限(但目前已被業界認為可能實現)。
  在網路上有人以米粒上畫圖作為例子解釋說明光學顯影的技術障礙,相當有趣,茲摘錄如下:(來源:有物報告網站
  光學顯影這個技術障礙有點類似要學生在米粒上畫圖。要畫出一幅很小很小的圖,有三個要素:很小的米粒更小的筆尖、跟穩定的墨水供應。在半導體業中,米粒就是晶片,筆尖就是光波長,墨水就是光源強度。晶片(米粒)可以一直縮小,但目前的顯影技術障礙是指光無法兼具波長(筆尖)小且光源強度(墨水)穩定。目前已成功製造波長夠小的光源,但光源強度仍未達商業化的標準。而且提高光源強度(影響曝光速率)同時還必須考慮穩定度,畢竟筆寫到一半沒墨水頗麻煩的。
  為了延續摩爾定律生命的關鍵技術,Intel 在20年前認為自己找到夠小的筆尖了—極紫外光(Extreme Ultraviolet,"EUV",波長13.5nm),是現在光源波長的7%而已,目前已應用於Intel力力推廣的EUV 顯影技術中。
       

B)安迪-比爾定律Andy & Bill’s law

這個定律中的安迪指的是前英特爾公司CEO安迪.葛洛夫(Andy Grove),而比爾指的則是大家熟知的微軟創始人比爾.蓋茲,簡短的說這個定律就是:「比爾要拿走安迪所給的What Andy gives, Bill takes away.」。
為什麼這個定律可以說成「比爾要拿走安迪所給的」呢?我們知道在上述的摩爾定律運作之下,英特爾處理器的速度每18個月成長一倍,而電腦記憶體和硬碟容量則以更快的速度增長,但是,微軟作業系統及其它的應用軟體執行速度卻愈來愈慢,所需要的CPU資源和空間資源愈來愈多,所以,現在的電腦雖然比10年前快了100倍,但是執行軟體感覺上速度還是跟以前差不多,雖然功能有增加,但是增加的功能和其所消耗的資源與空間是不等比例的,這使得一台10年前的電腦能裝多少程式,現在的也不過裝這麼多,而最重要的,如果不更新電腦,很多新的軟體便無法使用,連上網也會成了問題,最大原因是這些新增的硬體效能都讓新的系統和應用軟體給吃掉了。
雖然使用者對於這種新軟體把硬體升級後所帶來的好處幾乎全部耗盡的現象覺得反感,但是在IT產業,上下游的硬體廠商們恰恰是靠著這種軟體開發商們用光自己提供的硬體資源而得以生存,例如在2005上半年,因為微軟的新作業系統Vista遲遲無法上市,從上游的英特爾到下游的惠普、戴爾等等PC廠商,以及Marvell和Seagate等配件廠商,因為使用者沒有更新電腦的需求,造成這些公司的股票紛紛不同程度下跌了20%~40%,直到2005年低Vista終於推出,這些公司的銷售及股價才得以反轉提升;Vista與前一版XP相比,可能多提供了20%的功能,但是它所需要的記憶體卻幾乎是原先的兩倍、CPU耗用率成長一倍,因此,除非更新電腦否則幾乎無法升級新的作業系統。
而目前的手機產業也重蹈著WinTel的情況,從PC到手機,安迪-比爾定律照樣適用!Google的Android就類似微軟的Windows,而高通、博通和Marvell這一大兩小的ARM手機晶片製造商則發揮了當年英特爾和AMD的作用,而在Android以外的其它手機OS如蘋果或Symbian等等,都是Android的兄弟(它們都是源自同一個Linux核心),而摩托羅拉、三星、HTC、Sony等等就如同當年眾多的PC製造商;2008年上市的HTC第一代Android手機G1,它的主頻只有528MHz,而到了2010年初HTC為Google製造的Nexus One超薄手機主頻就達到了1GHz,不到18個月的時間速度成長了一倍,但現在G1也已經慢到不好用了。
個人補充安迪.比爾定律描述的是一種軟體升級推動硬體換代的現象,這是客套的解釋,說得直接點,這定律就是指「軟體就是會越來越腫」的現象,軟體每隔18個月就會腫大一倍,把硬體因摩爾定律而升級的配置都消秏光了。
  這當中所指的軟硬體也就是之前我們常說的「WINTEL聯盟」的組合,此安迪.比爾定律已經牢不可破地運轉了超過30年,然而,自從蘋果2008年推出的3G版IPHONE及繼之而來的IPAD,開啟了一個前所未有的移動網際網路時代之後, 「WINTEL」所代表的PC市場便開始逐漸被侵蝕了,隨後ANDROID強勢的發展更讓WINTEL處於絕對劣勢,在這樣的巨變下,安迪.比爾定律似乎正如王軍在書中所提到的,主角已更換為ARM與ANDROID,繼續著軟體升級推動硬體換代的宿命。

C)反摩爾定律 Reverse Moore’s law

Google的前CEO艾瑞特.史密特(Eric Schmidt)在一次採訪中指出,如果你反過來看摩爾定律,一個IT公司如果今天和18個月前賣掉同樣數量的同產品,那麼代表它的營業額就要降一半,IT界將它稱為反摩爾定律,這個定律對於所有的IT公司來說都是相當可怕的,因為花了相同的投入,卻只得到以前一半的收入,因此反摩爾定律逼迫著所有的硬體設備公司必須趕上摩爾定律規定的更新速度,否則將會被無情的淘汰,因此所有的硬體設備製造商活得都非常的辛苦。
另外相當重要的一點,就是王軍在書中提到所謂的:反摩爾定律亦有其所謂積極的一面,即它會促成科技領域「質」的進步,並為新興公司提供生存和發展的可能;這是什麼意思呢?我們再往下看。
和所有事物的發展一樣,IT領域的技術進步也有量變和質變兩種;比如說,同一種處理器在系統結構上沒有太大變化,而只是主頻提高了,這種進步就是量變的進步,而當處理器由16位元上升到32位元,再到64位元時,這樣的變化就有了小的質變,如果那一天能用到奈米技術或生物技術,那麼就作到了質的飛躍。為了趕上摩爾定律預測的發展速度,光靠量變是不夠的,每一種技術,過不了多少年,量變的潛力就會被挖掘光,這時就必需要有革命性的創造發明誕生-即質變。
而在科技進步的量變過程中,新的小公司是無法和老的大公司競爭的,因為後者在舊有的技術方面有無以倫比的優勢,但是在抓住質變的機遇上,有些小公司會做得比大公司更好而後來居上,因為它們沒有包袱,也比大公司靈活;例如當2G到3G手機的質變上,默默無聞的HTC把Nokia這個2G時代的龍頭老大逼上了當年摩托羅拉的老路,而在通訊晶片設計上,博通和Marvell在相當程度上已經取代了朗訊半導體部門和英特爾相關領域的業務。
反摩爾定律使得IT行業不可能像石油工業或飛機製造業那樣只追求量變,而必須不斷尋找革命性的創新發明,因為任何一個技術發展趕不上摩爾定律要求的公司,要不了幾年就會被淘汰。而大公司除了要保持很高的研發投入,還要時刻注意周圍和自己相關的新技術的發展,經常收購有革命性新技術的小公司,甚至出錢投資它們;而反摩爾定律同時也使得新興小公司有可能在發展新技術方面和大公司處於同一個起跑線上,並且讓它們有可能取代原有大公司在各自領域的地位。

個人補充:反摩爾定律告訴我們,一家科技公司如果和18個月前賣掉同等數量的相同產品,它的營業額將下降一半,這樣讓人憂心的情況其正面效果就是促成該產業進行「量」或「質」的改變,才能創造出新的市場提供生存和發展的可能。

  而當某個產業成熟到一定程度後,量變的潛力便會大幅下降,這時,須要有革命性的創造(質變)帶領產業演進,此時新興的小公司就有可能趁此和大公司並駕齊驅,甚至超前。








  1. 三種定律的交互作用

  王軍在本章的結語中提到,上述的三種定律合在一起,描述了IT產業中發展規律與宿命;整體來說,IT行業是一個高速發展的行業,在這個行業中發展,猶如逆水行舟,不進則退。
  也由於安迪.比爾定律的作用,在IT工業的產業鍵中,「看不見摸不著」的軟體和IT服務業反而處於上游,而下游才是「看得見摸得著」的硬體和半導體;因此,王軍也提到,從事IT行業想獲得高利潤,就要從上游入手,從微軟、到Google、再到Facebook,無一不是如此,而唯一的例外是蘋果公司,它是透過硬體再來實現軟體的價值。

    我根據文中的三種定律規則試著繪製出如上的圖表,請先從右側最大的圓看起,摩爾定律產生了藍色的圓形,但馬上被安迪.比爾定律的綠色圓形吃去了大部份,而透過反摩爾定律的作用,分別經由量變和質變會產生更多的藍色圓形,量變產生的是小圓,而質變產生的則是大圓,代表質變會比量變帶來一個更大的新興市場,這些圓圈繼續著這三種定律的週期循環形成更多與更大的圓圈;整體而言,摩爾定律和安迪.比爾定律進行的是供需的變化,而反摩爾定律則持續地擴張著市場。

2014年8月22日 星期五

Twitter Bootstrap

  網頁開發工作包含了美工與程式兩大部份,但是在網頁上這兩者可是千絲萬縷難分難捨,美工人員經常視程式設計為畏途,程式開發者也認為美工為其禁臠不願輕易觸碰,於是,便有了相關的工具出來希望能協助區分兩者的工作,像是PHP環境下的Sarty樣版,而最近大為風行的MVC架構,不但將網頁外觀(View)區分出來,更將資料部份抽離(Model),於是,一個網站的工作便可分為網頁、資料、控制三大部份;但是,基於網頁工作的特性與人手的考量,一般中小企業的網頁工作上,美工與程設還是很難去找專人進行,於是網頁開發人員自然有其解決之道,他們運用了各種不同的工具與技巧來解決自己所不熟悉的領域,他們可能Copy/Paste不同來源的程式碼及美工設計代碼,或者採用自己獨特的開發模式與方法來完成工作,在這樣沒有混亂沒有一致的開發模式下,在一個群體內部或者進行交接傳承時很容易導致inconsistencies的發生。
    我在本文介紹Bootstrap的使用,往後在PHP的MVC架構中,會再介紹如何將它整合到PHP CodeIgniter框架之中。

一)Bootstrap由來

  Bootstrap便是為了解決這樣的inconsistencies 問題而產生的,它在2011年的時候由Twitter的兩位工程師Mark Otto與Jacob Thorton開發,一開始僅是專門for Twitter內部工程師使用,但是實在是太好用了,它讓群組內的開發工作的效率大增,於是Twitter乾脆將它公開提供給公眾使用,沒有幾年的時間,它便如野火燎原般成為最受歡迎的前端網頁設計工具。https://encrypted-tbn1.gstatic.com/images?q=tbn:ANd9GcTyMX4xcfx0fOGSOw16NiLL0Gp2d2zO7peqvY3nze4Hx6-JeZxL
  基於Bootstrap的廣泛流行,因此Visual Studio 2013已經開始在Web Forms 專案範本中內建支援Bootstrap,如果您使用Visual Studio開發的話,可以毫不費力的開始使用Bootstrap,但其實Bootstrap是相當簡單易用的,只要使用簡單的文字編輯軟體加上少許的步驟,便可整合Bootstrap讓一個單純簡單的網站揺身一變成為另人讚嘆的專業網站,我在下面文章中,將介紹Bootstrap的基礎及用法。

二)版本差異

  Bootstrap 目前的版本是3.2版,下載頁面在http://getbootstrap.com/getting-started/#download,但要注意的 是,VS2013 RC 所建立的 ASP.NET 網站範本所使用的Bootstrap還是2.3.1版,正式版本中的專案範本使用的Bootstrap則為3.0,兩者有很多的差異,下面是比較重要的項目,其它的差異點可參考 http://mattduchek.com/differences-between-bootstrap-v2-3-and-v3-0/:
1. Bootstrap 2.x版支援IE 7.x版本之後的版本,而Bootstrap 3.x則僅支援IE 8之後的版本。
2. Bootstrap 3.x版的介面支援目前流行的flat(扁平)風格,如下圖由左至右分別是2.x版和3.x版,您可以看出它們之間的差異嗎?
screenshot Bootstrap v2 button examplesscreenshot Bootstrap v3 button examples
screen Bootstrap v2 dropdown with box shadowscreenshot Bootstrap v3 dropdown with box shadow
3. 手持裝置優先(Mobile-first framework),Bootstrap自3.x開始支援不同螢幕尺寸的Responsive設計成為預設的選項而非可選的選項。 

三)安裝與使用

 Bootstrap是不需要安裝的,我們有兩種方式來使用它:
1. 下載後放在網站目錄中引用。
2. 直接於網頁上透過CDN(Content delivery network)的方式引用位於其它server上的Bootstrap檔案。
最方便的當然是直接用CDN的方式來引用,您只要將下列二行(紅色部份)放入網頁中即可:
    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8">
        <title>Basic Bootstrap Template</title>
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
    </head>
    <body>
        <h1>Hello, world!</h1>
        <script src="http://code.jquery.com/jquery.min.js"></script>
        <script src="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
    </body>
    </html>
  如果您選擇下載並將Bootstrap放置於自有的網站,那麼,下載並解壓後,您會看到Bootstrap基本上是由css(樣式設定)以及 js(Javascript程式)兩種類型檔案組成,再加上四個字形檔,這四個字形檔包含來自於Glyphicon Halflings網站的200個免費icon圖示,您可透過Bootstrap來使用它們,下載的Bootstrap檔案架構如下:
bootstrap/
── css/
│   ── bootstrap.css
│   ── bootstrap.min.css
│   ── bootstrap-theme.css
│   └── bootstrap-theme.min.css
── js/
│   ── bootstrap.js
│   └── bootstrap.min.js
└── fonts/
   ── glyphicons-halflings-regular.eot
   ── glyphicons-halflings-regular.svg
   ── glyphicons-halflings-regular.ttf
   └── glyphicons-halflings-regular.woff
 同樣的,您只要將上方範例中的紅字部份改為本機的路徑如下,就可以開始使用了:
  <link rel="stylesheet" type="text/css" href="css/bootstrap.min.css">    
  <script src="js/bootstrap.min.js"></script>

四)瞭解grid

  Bootstrap 使用grid(網格)的方式來產生版面並為不同尺寸的螢幕自動佈局(Responsive),因此,要能夠隨心所欲的使用Bootstrap,我們必須先瞭解Bootstrap的grid設定;Bootstrap的grid system預設是在940px寬的尺寸切分為12等分,若開啟了Responsive功能(3.x版後預設為啟用),則會自動依據螢幕尺寸將grid重新排列,例如,我們打算將某個DIV橫跨整個版面,其語法如下:
     <div class="container">
        <div class="row">
            <div class="span12">
            <!--Body content-->
            </div>
        </div>
    </div>
  其中的class="span12"表示該DIV的寬度為12個grid,即佔滿整個橫頁,它的執行結果如下:
Twitter Bootstrap Single Column Grid
  那麼,如果我們要產生比例為左1右3的版面,那麼以相同方式推理,就要分別用span3和span9的class了,語法如下:
    <div class="container">
        <div class="row">
            <div class="span3">
            <!--Sidebar content-->
            </div>
            <div class="span9">
            <!--Body content-->
            </div>
        </div>
    </div>
Twitter Bootstrap Two Column Grid
總之我們可以使用DIV加上不同的class編號來切分我們需要的版面,只要加起來不超過12就可以了。

五)Bootstrap與自適應網頁功能(Responsive)

    Bootstrap內建目前流行的Responsive功能,能夠自動依據不同的螢幕尺寸自動調整為合適的版面,我們來看看它怎麼作的:
1)要讓Bootstrap支援Responsive,第一步要作的是在HTML的meta區段,加上此行:
<meta name="viewport" content="width=device-width, initial-scale=1.0">
        從內容可看出,網頁內容預設會伸展到與裝置相同的寬度,縮放的比例是1:1。
    2)除了預設的Bootstrap css檔,我們另外再加入如下的紅色部份:
<link rel="stylesheet" href="css/bootstrap.css">
<link rel="stylesheet" href="css/bootstrap-responsive.css">
    基本上,完成上述兩個步驟之後,您的網頁便支援Responsive可在不同尺寸的裝置上完美的展現了;Bootstrap在3.x版之後改為預設就支援Responsive並移除了container-fluid以及row-fluid等容器物件相關的屬定,然而有時候我們還是會需要不跨裝置的版面,因此若要關掉預設的responsive機制而用固定欄寬顯示,最快速的方式可用如下的方法:修改variables.less如下(紅色部份):











    您會看到我們把適用於Desktop PC的@screen-md值設為3px,@screen-lg設到最大,讓@screen-md滿足全部的螢幕大小就可以了。



    C)顯示尺寸的控制

    在Bootstrap中,下列的字元分別代表相對應的螢幕尺寸:所有和 responsive 相關的 class 都以 xs, sm, md, lg 為後綴,如 .col-md-6、col-lg-3 、.hidden-xs等等。
字元
代表意義
應用裝置
使用屬性
xs
Extra Small
Phones Less than 768px
.col-xs-$
.visible-xs
sm
Small Devices
Tablets 768px and Up
.col-sm-$
. visible-sm
md
Medium Devices
Desktops 992px and Up
.col-md-$
.visible-md
lg
Large Devices
Large Desktops 1200px and Up
.col-lg-$
.visible-lg
    例如,下面這個例子,在extra small (phone) 以及small (tablet) 的裝置上只會顯示一欄,medium (medium desktop)的裝置上會顯示二欄,而large (desktop) 的裝置則會顯示四欄(知道為什麼嗎?因為medium的col-md-6有四個,但總和不能超過12,因此會變成上下各兩欄,而col-lg-3四個總和剛好為12,因此一次可以顯示四欄)。
   








六)常用元件使用範例

   以下介紹一些常用元件的使用範例,其實Bootstrap支援更多的元件及特殊效果,請連到http://getbootstrap.com/components/網頁,右側便有更多的元件及範例使用說明,CSS部份可到http://getbootstrap.com/css/,一樣在右側有各式的CSS使用範例可參考,以下僅介紹較常使用的部份。

A)文字段落常用的class

除了標準及常用的html標籤之外,Bootstrap新增下列數個文字的顯示風格:
    <p class="muted">Muted: This text is grayed out.</p>
    <p class="text-warning">Warning: There was a problem with your network connection.</p>
    <p class="text-error">Error: An error has been occurred while submitting your data.</p>
    <p class="text-info">Note: Please read the comments carefully.</p>
    <p class="text-success">Success: Your message has been sent successfully.</p>
執行結果:
Twitter Bootstrap Text Emphasis Classes
    您會注意到Bootstrap使用文字的使用形態來取代顏色定義,它希望用更直覺化的方式讓開發者更容易使用,不止文字,所有Bootstrap相關顏色定義都是如此使用。

B)Table

Bootstrap對於Table也作了美化及方便的預先處理,讓我們可以省去很多客製的功夫;例如,加上預設的table class會顯示成如下:
    <table class="table">
        <thead>
            <tr>
                <th>Row</th>
                <th>First Name</th>
                <th>Last Name</th>
                <th>Email</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td>1</td>
                <td>John</td>
                <td>Carter</td>
                <td>johncarter@mail.com</td>
            </tr>
            <tr>
                <td>2</td>
                <td>Peter</td>
                <td>Parker</td>
                <td>peterparker@mail.com</td>
            </tr>
            <tr>
                <td>3</td>
                <td>John</td>
                <td>Rambo</td>
                <td>johnrambo@mail.com</td>
            </tr>
        </tbody>
    </table>
執行結果:
Twitter Bootstrap Simple Table
在table class後面加上table-striped選項便會替不同的row加上不同的背景色。(class="table table-striped")
執行結果:
Twitter Bootstrap Tables with Alternate Background
table-bordered可加上邊框。(class="table table-bordered")
Twitter Bootstrap Table with Borders
table-hover讓滑鼠停在上面時該列會自動變色。(class="table table-hover")
執行結果:
Twitter Bootstrap Table with Hover States
在表格的<tr>中加入不同的class可顯示不同的背景色。
    <table class="table">
        <thead>
            <tr>
                <th>Row</th>
                <th>Bill</th>
                <th>Payment Date</th>
                <th>Payment Status</th>
            </tr>
        </thead>
        <tbody>
            <tr class="success">
                <td>1</td>
                <td>Water</td>
                <td>01/08/2013</td>
                <td>Paid</td>
            </tr>
            <tr class="warning">
                <td>2</td>
                <td>Electricity</td>
                <td>03/08/2013</td>
                <td>Pending</td>
            </tr>
            <tr class="info">
                <td>3</td>
                <td>Credit Card</td>
                <td>04/08/2013</td>
                <td>Call in to confirm</td>
            </tr>
            <tr class="error">
                <td>4</td>
                <td>Telephone</td>
                <td>06/08/2013</td>
                <td>Due</td>
            </tr>
        </tbody>
    </table>

執行結果:
Twitter Bootstrap Table with Emphasis Classes

C)表單的使用

Bootstrap的表單其排列方式有下列四種:
  1. Vertical Form (預設)
  2. Horizontal Form
  3. Inline Form
  4. Search Form

1)Vertical Form

若我們在form的標籤中不指定class,預設就是使用Vertical 的排列。
    <form>
        <label>Email</label>
        <input type="text" placeholder="Email">   
        <label>Password</label>
        <input type="password" placeholder="Password">   
        <label class="checkbox"><input type="checkbox"> Remember me</label>
        <button type="submit" class="btn btn-primary">Login</button>
    </form>
執行結果:這是Vertical的排列
Twitter Bootstrap Vertical Form Layout

2)Horizontal Form

Horizontal的排列預設會將文字向右對齊,並往左延伸;此種方式非常適合用於form的排版,因為它讓表單上不同大小的元件看起來非常整齊。
    <form class="form-horizontal">
        <div class="control-group">
            <label class="control-label" for="inputEmail">Email</label>
            <div class="controls">
                <input type="text" id="inputEmail" placeholder="Email">
            </div>
        </div>
        <div class="control-group">
            <label class="control-label" for="inputPassword">Password</label>
            <div class="controls">
                <input type="password" id="inputPassword" placeholder="Password">
            </div>
        </div>
        <div class="control-group">
            <div class="controls">
                <label class="checkbox"><input type="checkbox"> Remember me</label>
                <button type="submit" class="btn btn-primary">Login</button>
            </div>
        </div>
    </form>
執行結果:這是Horizontal的排列
Twitter Bootstrap Horizontal Form Layout

3)Inline Form

有時候我們需要緊湊的佈局,將元件縮在一個小尺寸的空間中,那麼我們可以考慮用這個方式:
    <form class="form-inline">
        <input type="text" class="input-small" placeholder="Email">
        <input type="password" class="input-small" placeholder="Password">
        <label class="checkbox"><input type="checkbox"> Remember me</label>
        <button type="submit" class="btn btn-primary">Login</button>
    </form>
執行結果:
Twitter Bootstrap Inline Form Layout

4)Search Form

這是一個快速產生搜尋表單的 class,只要在form的標籤中加入form-search的class 就可以了。
    <form class="form-search">
        <input type="text" placeholder="Type something…">
        <button type="submit" class="btn">Search</button>
    </form>
執行結果:
Twitter Bootstrap Search Form Layout

5)加上圖示及簡短提示:

這是很有用的美化及提示功能,只要加入相對應的標籤及class就可以了(紅字的部份),若需要其它不同的圖示名稱可參考Bootstrap網站。
    <div class="input-prepend">
        <span class="add-on"><i class="icon-user"></i></span>
        <input type="text" placeholder="Username" class="input-medium">
    </div>
    <div class="input-append">
        <input type="text" placeholder="Amount" class="input-small">
        <span class="add-on">.00</span>
    </div>
    <div class="input-prepend input-append">
        <span class="add-on">$</span>
        <input type="text" placeholder="US Dollar" class="input-small">
        <span class="add-on">.00</span>
    </div>
執行結果:
Twitter Bootstrap Prepended and Appended Inputs

D)選單列

  以前最讓美工人員煩惱(因為要寫Javascript程式)、程設人員痛苦(因為要調整顯示方式)的網頁選單,Bootstrap已內建支援,雙方都省事多了。
  1)分頁+下拉選單:請注意紅色的部份,這是Bootstrap所增加的部份。
    <div class="pagination">
        <ul>
            <li class="disabled"><a href="#">&laquo;</a></li>
            <li class="active"><a href="#">1</a></li>
            <li><a href="#">2</a></li>
            <li><a href="#">3</a></li>
            <li><a href="#">4</a></li>
            <li><a href="#">5</a></li>
            <li><a href="#">&raquo;</a></li>
        </ul>
    </div>

執行結果:
 Twitter Bootstrap Tabs with Dropdown Menus
2)橫式下拉選單:紅色為Bootstrap新增的部份
    <div class="navbar navbar-static">
        <div class="navbar-inner">
            <a href="#" class="brand">Company Name</a>
            <ul role="navigation" class="nav">
                <li><a href="#">Home</a></li>
                <li><a href="#">Profile</a></li>
                <li class="dropdown">
                    <a href="#" data-toggle="dropdown" class="dropdown-toggle">Messages <b class="caret"></b></a>
                    <ul class="dropdown-menu">
                        <li><a href="#">Inbox</a></li>
                        <li><a href="#">Drafts</a></li>
                        <li><a href="#">Sent Items</a></li>
                        <li class="divider"></li>
                        <li><a href="#">Trash</a></li>
                    </ul>
                </li>
            </ul>
            <ul class="nav pull-right">
                <li class="dropdown">
                    <a href="#" data-toggle="dropdown" class="dropdown-toggle">Admin <b class="caret"></b></a>
                    <ul class="dropdown-menu">
                        <li><a href="#">Action</a></li>
                        <li><a href="#">Another action</a></li>
                        <li class="divider"></li>
                        <li><a href="#">Settings</a></li>
                    </ul>
                </li>
            </ul>
        </div>
    </div>
執行結果:
Twitter Bootstrap Dropdowns within Navbar

E)頁碼列表

頁次選擇欄也是常用的網頁功能,Bootstrap可快速產生美觀的頁碼選擇;只要在DIV中加入名稱為pagination的class就可以了:

1)基本的頁碼表:

    <div class="pagination">
        <ul>
            <li><a href="#">&laquo;</a></li>
            <li><a href="#">1</a></li>
            <li><a href="#">2</a></li>
            <li><a href="#">3</a></li>
            <li><a href="#">4</a></li>
            <li><a href="#">5</a></li>
            <li><a href="#">&raquo;</a></li>
        </ul>
    </div>
 執行結果:
Twitter Bootstrap Pagination
頁碼表預設是朝左對齊的,如果要改為置中對齊,只要改為class="pagination pagination-centered"即可。

 2)單純的上下頁:

<ul class="pager">
        <li><a href="#">Previous</a></li>
        <li><a href="#">Next</a></li>
</ul>
執行結果:
Twitter Bootstrap Pager

F)各式風格的按鈕:

  Bootstrap內建不同風格的各式按鈕如下
    Default<button class="btn" type="button">Default</button>
Primary<button class="btn btn-primary" type="button">Primary</button>
Info<button class="btn btn-info" type="button">Info</button>
Success<button class="btn btn-success" type="button">Success</button>
Warning<button class="btn btn-warning" type="button">Warning</button>
Danger<button class="btn btn-danger" type="button">Danger</button>
Inverse<button class="btn btn-inverse" type="button">Inverse</button>
Link<button class="btn btn-link" type="button">Link</button>
也可以產生一種叫作Buttons checkbox的按鈕群組,只有一個按鈕是沒有被按下的:
    <div class="btn-group" data-toggle="buttons-checkbox">
        <button type="button" class="btn btn-primary">Left</button>
        <button type="button" class="btn btn-primary">Middle</button>
        <button type="button" class="btn btn-primary">Right</button>
    </div>
執行結果:Twitter Bootstrap Buttons Checkbox
與Buttons checkbox相反的是Buttons Radio按鈕群組,只有一個按鈕是被按下的:
    <div class="btn-group" data-toggle="buttons-radio">
        <button type="button" class="btn btn-primary">Left</button>
        <button type="button" class="btn btn-primary">Middle</button>
        <button type="button" class="btn btn-primary">Right</button>
    </div>
執行結果:
Twitter Bootstrap Buttons Radio

 七)Bootstrap相關的輔助工具

A)Layoutit:http://www.layoutit.com/

     Layoutit提供各式Bootstrap grid及各式元件,以拖拉方式讓您規劃整個網頁的佈局後,將整個網頁的html及css打包好提供下載直接使用;Layoutit目前已支援Bootstrap 3.x版。
  其它類似的Bootstrap佈局編輯器相當多,例如http://www.bootply.com、http://www.pingendo.com/、https://jetstrap.com/、http://pinegrow.com/、http://brix.io/

B)Bootswatch:http://bootswatch.com/

  Bootswatch提供各式免費的Bootstrap佈景樣版,一般開發者會使用Layoutit完成版面規劃後,再到Bootswatch選用適合的佈景來套用。另一個提供樣版主題的網站是http://startbootstrap.com/,也有相當多不錯的免費佈景樣版,此外https://wrapbootstrap.com/以及http://bootstrapstyler.com 提供的則是付費購買的佈景樣版;這些佈景主題都是完整的網站,包含了完整的頁面及bootstrap相關檔案,只要下載後直接修改其內容便可使用。