├── source
├── science.md
├── video.md
├── people.md
├── article.md
├── preface.md
├── focus.md
├── software.md
├── code.md
├── hardware.md
├── md0.js
├── Makefile
├── convert.exe
├── mimetex.exe
├── title.md
├── tex2img.bat
├── metadata.xml
├── header.htm
├── footer.htm
├── reflink.md9
├── license.md
├── editor.md
├── video1.md
├── science1.md
├── science2.md
├── home.md
├── info.md
├── article1.md
├── people1.md
├── article2.md
├── focus2.md
├── focus3.md
├── focus4.md
├── focus1.md
└── focus5.md
├── book
├── A4.pdf
├── A4.epub
├── ipad.pdf
└── ipad.epub
├── img
├── PTT.png
├── cover.jpg
├── form.jpg
├── list.jpg
├── table.jpg
├── HtmlImg.png
├── Internet.png
├── Neon2BBS.png
├── WebHello.jpg
├── adder4.png
├── andGate.png
├── div_css.jpg
├── notGate.png
├── orGate.png
├── xorGate.png
├── HtmlEditor.jpg
├── HtmlFormat.png
├── HtmlHello4.png
├── TCP_packet.png
├── cclicenses.jpg
├── fulladder.png
├── HKPL_Telnet.PNG
├── HtmlEditorRun.jpg
├── HtmlHeader1_6.png
├── NCSA_Mosaic.PNG
├── NotepadUtf8.png
├── table_css_ref.jpg
├── Connection_TCP.png
├── Half_Adder.svg.png
├── table_css_embed.jpg
├── JavaScriptMenuRun.jpg
├── Tim_Berners-Lee_2012.jpg
├── Tcp_transport_example.gif
├── UDP_encapsulation.svg.png
├── 800px-Mosaic-v3-screenshot.PNG
├── 800px-UDP_encapsulation.svg.png
├── 800px-WorldWideWeb_FSF_GNU.png
├── 350px-IP_stack_connections.svg.png
├── Firefox_Aurora_with_Australis.PNG
└── 1000px-IP_stack_connections.svg.png
├── slide
└── slide.odp
├── README.md
├── htm
├── preface.html
├── science.html
├── video.html
├── article.html
├── people.html
├── software.html
├── focus.html
├── hardware.html
├── code.html
├── title.html
├── editor.html
├── license.html
├── video1.html
├── science1.html
├── science2.html
├── people1.html
├── article1.html
├── home.html
├── info.html
├── article2.html
├── focus2.html
├── focus1.html
├── focus3.html
├── focus4.html
└── focus5.html
└── css
└── pmag.css
/source/science.md:
--------------------------------------------------------------------------------
1 | # 科學原理
2 |
--------------------------------------------------------------------------------
/source/video.md:
--------------------------------------------------------------------------------
1 | # 影音頻道
2 |
--------------------------------------------------------------------------------
/source/people.md:
--------------------------------------------------------------------------------
1 | # 科技人小故事
2 |
--------------------------------------------------------------------------------
/source/article.md:
--------------------------------------------------------------------------------
1 | # 科技人專欄
2 |
3 |
--------------------------------------------------------------------------------
/source/preface.md:
--------------------------------------------------------------------------------
1 | # 前言
2 |
3 |
4 |
--------------------------------------------------------------------------------
/source/focus.md:
--------------------------------------------------------------------------------
1 | # 本期焦點:網頁技術 (Web Technology)
2 |
--------------------------------------------------------------------------------
/source/software.md:
--------------------------------------------------------------------------------
1 | # 軟體世界 : Libre Office 簡介
2 |
--------------------------------------------------------------------------------
/source/code.md:
--------------------------------------------------------------------------------
1 | # 程式世界 : 第一堂程式課 - 從 code.org 開始
2 |
--------------------------------------------------------------------------------
/source/hardware.md:
--------------------------------------------------------------------------------
1 | # 硬體世界 : 第一堂硬體課 - 從樂高機器人開始
2 |
--------------------------------------------------------------------------------
/book/A4.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/programmermagazine/y201412/gh-pages/book/A4.pdf
--------------------------------------------------------------------------------
/img/PTT.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/programmermagazine/y201412/gh-pages/img/PTT.png
--------------------------------------------------------------------------------
/book/A4.epub:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/programmermagazine/y201412/gh-pages/book/A4.epub
--------------------------------------------------------------------------------
/book/ipad.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/programmermagazine/y201412/gh-pages/book/ipad.pdf
--------------------------------------------------------------------------------
/img/cover.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/programmermagazine/y201412/gh-pages/img/cover.jpg
--------------------------------------------------------------------------------
/img/form.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/programmermagazine/y201412/gh-pages/img/form.jpg
--------------------------------------------------------------------------------
/img/list.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/programmermagazine/y201412/gh-pages/img/list.jpg
--------------------------------------------------------------------------------
/img/table.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/programmermagazine/y201412/gh-pages/img/table.jpg
--------------------------------------------------------------------------------
/source/md0.js:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/programmermagazine/y201412/gh-pages/source/md0.js
--------------------------------------------------------------------------------
/book/ipad.epub:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/programmermagazine/y201412/gh-pages/book/ipad.epub
--------------------------------------------------------------------------------
/img/HtmlImg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/programmermagazine/y201412/gh-pages/img/HtmlImg.png
--------------------------------------------------------------------------------
/img/Internet.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/programmermagazine/y201412/gh-pages/img/Internet.png
--------------------------------------------------------------------------------
/img/Neon2BBS.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/programmermagazine/y201412/gh-pages/img/Neon2BBS.png
--------------------------------------------------------------------------------
/img/WebHello.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/programmermagazine/y201412/gh-pages/img/WebHello.jpg
--------------------------------------------------------------------------------
/img/adder4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/programmermagazine/y201412/gh-pages/img/adder4.png
--------------------------------------------------------------------------------
/img/andGate.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/programmermagazine/y201412/gh-pages/img/andGate.png
--------------------------------------------------------------------------------
/img/div_css.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/programmermagazine/y201412/gh-pages/img/div_css.jpg
--------------------------------------------------------------------------------
/img/notGate.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/programmermagazine/y201412/gh-pages/img/notGate.png
--------------------------------------------------------------------------------
/img/orGate.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/programmermagazine/y201412/gh-pages/img/orGate.png
--------------------------------------------------------------------------------
/img/xorGate.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/programmermagazine/y201412/gh-pages/img/xorGate.png
--------------------------------------------------------------------------------
/slide/slide.odp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/programmermagazine/y201412/gh-pages/slide/slide.odp
--------------------------------------------------------------------------------
/source/Makefile:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/programmermagazine/y201412/gh-pages/source/Makefile
--------------------------------------------------------------------------------
/img/HtmlEditor.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/programmermagazine/y201412/gh-pages/img/HtmlEditor.jpg
--------------------------------------------------------------------------------
/img/HtmlFormat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/programmermagazine/y201412/gh-pages/img/HtmlFormat.png
--------------------------------------------------------------------------------
/img/HtmlHello4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/programmermagazine/y201412/gh-pages/img/HtmlHello4.png
--------------------------------------------------------------------------------
/img/TCP_packet.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/programmermagazine/y201412/gh-pages/img/TCP_packet.png
--------------------------------------------------------------------------------
/img/cclicenses.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/programmermagazine/y201412/gh-pages/img/cclicenses.jpg
--------------------------------------------------------------------------------
/img/fulladder.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/programmermagazine/y201412/gh-pages/img/fulladder.png
--------------------------------------------------------------------------------
/source/convert.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/programmermagazine/y201412/gh-pages/source/convert.exe
--------------------------------------------------------------------------------
/source/mimetex.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/programmermagazine/y201412/gh-pages/source/mimetex.exe
--------------------------------------------------------------------------------
/img/HKPL_Telnet.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/programmermagazine/y201412/gh-pages/img/HKPL_Telnet.PNG
--------------------------------------------------------------------------------
/img/HtmlEditorRun.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/programmermagazine/y201412/gh-pages/img/HtmlEditorRun.jpg
--------------------------------------------------------------------------------
/img/HtmlHeader1_6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/programmermagazine/y201412/gh-pages/img/HtmlHeader1_6.png
--------------------------------------------------------------------------------
/img/NCSA_Mosaic.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/programmermagazine/y201412/gh-pages/img/NCSA_Mosaic.PNG
--------------------------------------------------------------------------------
/img/NotepadUtf8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/programmermagazine/y201412/gh-pages/img/NotepadUtf8.png
--------------------------------------------------------------------------------
/img/table_css_ref.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/programmermagazine/y201412/gh-pages/img/table_css_ref.jpg
--------------------------------------------------------------------------------
/img/Connection_TCP.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/programmermagazine/y201412/gh-pages/img/Connection_TCP.png
--------------------------------------------------------------------------------
/img/Half_Adder.svg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/programmermagazine/y201412/gh-pages/img/Half_Adder.svg.png
--------------------------------------------------------------------------------
/img/table_css_embed.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/programmermagazine/y201412/gh-pages/img/table_css_embed.jpg
--------------------------------------------------------------------------------
/img/JavaScriptMenuRun.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/programmermagazine/y201412/gh-pages/img/JavaScriptMenuRun.jpg
--------------------------------------------------------------------------------
/img/Tim_Berners-Lee_2012.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/programmermagazine/y201412/gh-pages/img/Tim_Berners-Lee_2012.jpg
--------------------------------------------------------------------------------
/img/Tcp_transport_example.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/programmermagazine/y201412/gh-pages/img/Tcp_transport_example.gif
--------------------------------------------------------------------------------
/img/UDP_encapsulation.svg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/programmermagazine/y201412/gh-pages/img/UDP_encapsulation.svg.png
--------------------------------------------------------------------------------
/source/title.md:
--------------------------------------------------------------------------------
1 | % [少年科技人雜誌](http://youngmaker.github.com/home/)
2 | % 2014 年 12 月 (第二期)
3 | % 本期焦點:網頁技術 (Web Technology)
4 |
--------------------------------------------------------------------------------
/source/tex2img.bat:
--------------------------------------------------------------------------------
1 | if not exist {%2.jpg} (
2 | mimetex -d %1 -e %2.gif
3 | convert %2.gif %2.jpg
4 | rm %2.gif
5 | )
6 |
--------------------------------------------------------------------------------
/img/800px-Mosaic-v3-screenshot.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/programmermagazine/y201412/gh-pages/img/800px-Mosaic-v3-screenshot.PNG
--------------------------------------------------------------------------------
/img/800px-UDP_encapsulation.svg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/programmermagazine/y201412/gh-pages/img/800px-UDP_encapsulation.svg.png
--------------------------------------------------------------------------------
/img/800px-WorldWideWeb_FSF_GNU.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/programmermagazine/y201412/gh-pages/img/800px-WorldWideWeb_FSF_GNU.png
--------------------------------------------------------------------------------
/source/metadata.xml:
--------------------------------------------------------------------------------
1 |
本期的焦點是 Web 技術,這是一個以網頁為核心的技術體系,也是目前網路的主力技術。 Web 技術主要由 HTML/CSS/JavaScript 這三種技術所組成,其中 HTML 負責網頁的結構,CSS 則是用來讓網頁更美觀的排版語言,JavaScript 則是用來讓網頁具有互動性的程式技術。
23 |當然、除了這三種技術之外,還必須搭配「伺服端」技術,像是 Ruby on Rail, PHP, ASP.NET, Python Dejango, 或 Node.js 等在伺服器上執行並輸出網頁的技術,才能讓這些「網頁」技術可以變成完整的「網站」,我們將陸續在未來介紹其中一些伺服端技術。
24 |另外、延續上期的「電腦的歷史、工業與結構」這個主題,我們在本期開始進入電腦硬體設計的細節,介紹了「二進位系統」與「數位電路邏輯閘」等主題,希望透過這一系列的介紹可以讓讀者快速的理解電腦的設計原理。
25 |---- (「少年科技人」雜誌編輯 - 陳鍾誠, 2014/12/01)
26 |本雜誌許多資料修改自維基百科,採用 創作共用:姓名標示、相同方式分享 授權,若您想要修改本書產生衍生著作時,至少應該遵守下列授權條件:
23 |另外、當本雜誌中有文章或素材並非採用 姓名標示、相同方式分享 時,將會在該文章或素材後面標示其授權,此時該文章將以該標示的方式授權釋出,請修改者注意這些授權標示,以避免產生侵權糾紛。
28 |例如有些文章可能不希望被作為「商業性使用」,此時就可能會採用創作共用:[姓名標示、非商業性、相同方式分享] 的授權,此時您就不應當將該文章用於商業用途上。
29 |最後、懇請勿移除公益捐贈的相關描述,以便讓愛心得以持續散播!
30 |在本期的主題當中,我們已經用了很多文字來說明 Internet 與 Web 這兩個相關技術的概念與歷史了,但是有些事情用影片的方式傳達會更容易,因此筆者上網找了一些有關 Internet 與 Web 的影片。
23 |以下是筆者覺得還不錯的影片,提供給您參考!
24 |小學所教的加減乘除方法都是以十進位為基礎的,舉例而言、十進位的 358 其實代表的是 3*100+5*10+8*1 這樣以 10 為基礎的表達系統,如果寫成直式或許讀者會看得更清楚。
300 3*100
25 | 50 + 5* 10
26 | 8 + 8* 1
27 | + ----- = --------------------
28 | 358 3*100+5*10+8*1
29 | 但是在電腦當中,十進位並不好用,二進位才是比較適合電腦的表達方式,以下是二進位裏前幾個位元所代表的意義。
31 |0 0 0 1 代表 1
32 | 0 0 1 0 代表 2
33 | 0 1 0 0 代表 4 = 2*2
34 | 1 0 0 0 代表 8 = 2*2*2
35 | 於是,二進位的 1101 所代表的,其實是如下的一個數字:
36 | 1000 8
37 | 100 4
38 | 1 1
39 | + ----- = + -------
40 | 1101 13
41 | 當我們用十進位做加法運算的時候,每當數字到達十就必須進位,這也正是十進位這個名詞的意義,以下是一個十進位加法的範例。
43 |進位 11
44 | A 358
45 | B 74
46 | +---- ---------
47 | A+B 432
48 | 同樣的、當我們用二進位作加法的時候,只要數字到達 2 就必須要進位,以下是一個二進位加法的範例:
49 |進位 1 1 1 1 1
50 | A 0 1 1 0 1
51 | B 1 0 1 1 1
52 | +---- -----------
53 | A+B 1 0 0 1 0 0 = 十進位的 36
54 | 當您可以理解二進位與其加法之後,就可以進一步理解「用二補數表示負數、二進位減法、乘法與除法」等等,未來我們將會進一步討論這些主題。
56 |現在我們已經學會二進位的表示法,還有二進位的加法了,於是我們可以開始設計二進位加法的電路了,讓我們回到邏輯閘的世界吧!
57 |在 [上期的少年科技人雜誌] 當中,我們探討了「電腦的歷史、工業與結構」這個議題,並且在 透視電腦的內部結構 這篇文章中看到了電腦的基本組成元件,那就是邏輯閘。
23 |在接下來的幾期當中,我們將逐步的從邏輯閘開始,解說「電腦是如何用邏輯閘所組成的」這個問題。
24 |組成電腦的基本邏輯閘包含 AND、OR、NOT、XOR 等四種,其中 AND、OR、NOT 三種就可以組成所有電路,包含 XOR,但是加上 XOR 時會比較方便,因為在有些電路上用 XOR 可以大量減少邏輯閘的數量。
25 |反閘 (NOT) 的圖示與功能如下,其輸入輸出都只有一條,當輸入 0 的時候就輸出 1,而輸入 1 的時候就輸出 0。
27 |
圖、反閘 (NOT)
29 |及閘 (AND) 的圖示與功能如下,其輸入有兩條,輸出只有一條,當輸入 11 的時候才會就輸出 1,其他三種情況則一律輸出 0。
31 |
圖、及閘 (AND)
33 |換言之、AND 是在 A B 兩者都為 1 的時候才會輸出 1,這和邏輯學上的「且」(AND) 相同,當我們說「他高且帥」的時候,代表他同時具有「高」和「帥」兩個特性。
35 |或閘 (OR) 的圖示與功能如下,其輸入有兩條,輸出只有一條,當輸入 00 的時候才會就輸出 0,其他三種情況則一律輸出 1。
36 |
圖、或閘 (OR)
38 |換句話說、只要 A B 兩者當中有一個為 1,那麼輸出就會是 1,這和邏輯學上的「或」(OR) 相同,當我們說「高或帥」的時候,代表他只要具備「高」或「帥」其中一個特性就滿足了條件。
40 |互斥或閘 (XOR) 的圖示與功能如下,其輸入有兩條,輸出只有一條,當兩條不一樣的時候就輸出 1,兩者一樣的時候則會輸出 0。
41 |
圖、互斥或閘 (XOR)
43 |有了上述邏輯閘之後,我們就可以用這樣的閘來組成電腦當中最核心的一個運算,那就是加法了。
45 |但是、要理解如何用邏輯閘組成加法運算之前,我們必須先了解二進位這個概念。
46 |將兩個輸入相加的電路,稱為「半加器」(half adder),而將三個輸入相加的電路,則稱為「全加器」(full adder)。
48 |半加器
49 |
圖、半加器
51 |A + B → S, 進位 C
53 | 0 + 0 → 0 0
54 | 0 + 1 → 1 0
55 | 1 + 0 → 1 0
56 | 1 + 1 → 0, 1 (因為 1 + 1 = 2 = 0 + (1 × 2) )
57 | 
圖、Tim Berners-Lee 2012 年的照片
來源:http://en.wikipedia.org/wiki/Tim_Berners-Lee#mediaviewer/File:Tim_Berners-Lee_2012.jpg
Tim Burner Lee 被尊稱為 Web 之父可以說是實至名歸,因為他發展出了 HTTP+HTML+URL 等技術,並創建了全世界第一個伺服器與陽春版的瀏覽器,雖然後來 MOSAIC 在瀏覽器上做得更好,但整個技術的架構確實是由 Tim Burner Lee 所奠定的基礎。
26 |1980年6月-9月間,柏納-李在CERN(歐洲核子研究組織)擔任獨立承辦人時,他提出了建立一個以超文字系統為基礎的專案,以方便研究人員分享及更新訊息,同時他建立了一個原型系統,叫 ENQUIRE。
27 |1980年,Tim Burner Lee 離開 CERN 轉而任職於約翰·普爾圖形電腦系統有限公司,該公司位於英格蘭伯恩茅斯。在這間公司里,他參與的計劃是一個遠端程序呼叫,從而獲得了電腦網路經驗,1984年,Tim Burner Lee 以正式員工的身份重返 CERN。
28 |在1989年的時候, CERN 是全歐最大的網際網路節點,並因此看到了將超文字系統與網際網路結合在一起的機會。他想到:「我只要把超文字系統和傳輸控制協定、域名系統結合在一起,就能得出全球資訊網了!」。
29 |1989 年 3 月,他寫下了他的初步構想。次年,在羅伯特·卡里奧的幫助下,作出了一個修訂版,並得到主管麥克·森德爾(Mike Sendall)認可。Tim Burner Lee 以製作 ENQUIRE 系統時的基本概念建立全球資訊網,並設計製作出世上第一個網頁瀏覽器。同時,他也設計了世上第一個網頁伺服器,以下是羅伯特·卡里奧回憶當時的一段訪談:
30 |31 |33 |"Mike Sendall buys a NeXT cube for evaluation, and gives it to Tim Berners-Lee. Tim's prototype implementation on NeXTStep is made in the space of a few months, thanks to the qualities of the NeXTStep software development system. This prototype offers WYSIWYG browsing/authoring! Current Web browsers used in "surfing the Internet" are mere passive windows, depriving the user of the possibility to contribute. During some sessions in the CERN cafeteria, Tim and I try to find a catching name for the system. I was determined that the name should not yet again be taken from Greek mythology. Tim proposes "World-Wide Web". I like this very much, except that it is difficult to pronounce in French..." by Robert Cailliau, 2 November 1995.
32 |
1991年8月6日,世上第一個網站在 CERN 建成並上線:
34 |35 |37 |Info.cern.ch was the address of the world's first-ever web site and web server, running on a NeXT computer at CERN. The first web page address was http://info.cern.ch/hypertext/WWW/TheProject.html, which centred on information regarding the WWW project. Visitors could learn more about hypertext, technical details for creating their own webpage, and even an explanation on how to search the Web for information. There are no screenshots of this original page and, in any case, changes were made daily to the information available on the page as the WWW project developed. You may find a later copy (1992) on the World Wide Web Consortium website.
36 |
這解釋了 World Wide Web 是什麼,用戶如何使用瀏覽器,如何建立網頁伺服器。
38 |接下來、全世界都被捲入到 World Wide Web 大開發的浪潮中,而 Tim Burner Lee 也因此而成了 Web 之父。
39 |後來、在 1994年, Tim Burner Lee 在麻省理工學院創辦了 World Wide Web Consortium ,成為全世界制定 Web 標準規格的主要機構,很多與 Web 有關的組織與公司都會透過 World Wide Web Consortium 參與 Web 新規格的制定過程。
40 |在 [上期的少年科技人雜誌] 當中,我們探討了「電腦的歷史、工業與結構」這個議題,並且在 透視電腦的內部結構 這篇文章中看到了電腦的基本組成元件,那就是邏輯閘。
23 |在接下來的幾期當中,我們將逐步的從邏輯閘開始,解說「電腦是如何用邏輯閘所組成的」這個問題。
24 |組成電腦的基本邏輯閘包含 AND、OR、NOT、XOR 等四種,其中 AND、OR、NOT 三種就可以組成所有電路,包含 XOR,但是加上 XOR 時會比較方便,因為在有些電路上用 XOR 可以大量減少邏輯閘的數量。
25 |反閘 (NOT) 的圖示與功能如下,其輸入輸出都只有一條,當輸入 0 的時候就輸出 1,而輸入 1 的時候就輸出 0。
27 |
圖、反閘 (NOT)
29 |及閘 (AND) 的圖示與功能如下,其輸入有兩條,輸出只有一條,當輸入 11 的時候才會就輸出 1,其他三種情況則一律輸出 0。
31 |
圖、及閘 (AND)
33 |換言之、AND 是在 A B 兩者都為 1 的時候才會輸出 1,這和邏輯學上的「且」(AND) 相同,當我們說「他高且帥」的時候,代表他同時具有「高」和「帥」兩個特性。
35 |或閘 (OR) 的圖示與功能如下,其輸入有兩條,輸出只有一條,當輸入 00 的時候才會就輸出 0,其他三種情況則一律輸出 1。
36 |
圖、或閘 (OR)
38 |換句話說、只要 A B 兩者當中有一個為 1,那麼輸出就會是 1,這和邏輯學上的「或」(OR) 相同,當我們說「高或帥」的時候,代表他只要具備「高」或「帥」其中一個特性就滿足了條件。
40 |互斥或閘 (XOR) 的圖示與功能如下,其輸入有兩條,輸出只有一條,當兩條不一樣的時候就輸出 1,兩者一樣的時候則會輸出 0。
41 |
圖、互斥或閘 (XOR)
43 |有了上述邏輯閘之後,我們就可以用這樣的閘來組成電腦當中最核心的一個運算,那就是加法了。
45 |但是、要理解如何用邏輯閘組成加法運算之前,我們必須先了解二進位這個概念。
46 |將兩個輸入相加的電路,稱為「半加器」(half adder),而將三個輸入相加的電路,則稱為「全加器」(full adder)。
48 |
圖、半加器
50 |半加器的電路如上圖所示,而其輸入輸出的真值表如下所示:
52 |A + B → S, 進位 C
53 | 0 + 0 → 0 0
54 | 0 + 1 → 1 0
55 | 1 + 0 → 1 0
56 | 1 + 1 → 0, 1 (因為 1 + 1 = 2 = 0 + (1 × 2) )
57 | 上述的輸出 S 只有在 A , B 兩者不同的時候才會是 1,這完全符合 XOR 電路的行為模式,因此我們可以用一個 XOR 電路輕易地完成 S 的輸出動作。
58 |而 C 則是在 A, B 兩者均為 1 的情況下才會是 1,否則就會是 0。這與 AND 閘的真值表完全一致,因此我們只要用一個 AND 閘就可以做到 C 的功能了。
59 |但是、雖然我們想做的事情是兩組二進位數字的加法,但是由於相加之後可能會產生進位,因此必須要考慮到三個位元相加的情況,這時就需要將半加器進一步擴充為全加器,以便進行三位元相加的運算。
60 |以下是全加器的電路圖與真值表,其中的輸出 S 只要用兩個 XOR 閘就能做到,因為 S 只有在奇數個 1 的時候才會輸出 1,偶數個 1 的時候就會輸出 0,這種組合完全符合 n 輸入的 XOR 閘之行為。
61 |
圖、全加器的電路與真值表
63 |但是對於輸出 C 而言,則需要兩個 AND 閘和一個 OR 閘連接之後才能達成,您可以根據上面的 AND, OR 之真值表定義,驗證一下該電路的輸出是否真的符合上圖真值表的要求,這會是一個很好的練習。
65 |在此、我們直接提出了全加器的電路圖,而沒有展示這個電路的「設計過程」,因為這種設計過程牽涉到一種稱為「卡諾圖」的電路化簡工具,
66 |有了上述的全加器電路之後,我們就可以任意地進行三個位元的加法,於是只要我們將這些全加器一個接一個的串起來,並將進位輸出到下一個全加器當中,就可以任意地做出 n 位元的加法器電路了,以下是一個四位元加法器的圖示。
72 |
圖、四位元加法器
74 |當您能做出 n 位元加法器時,應該就可以理解為何電腦的基本組成會是「邏輯閘」了,因為我們可以輕易地串接出 32 位元的加法器,當然也可以用類似的原理做出「減法器、乘法器、除法器」,然後做出整顆「中央處理器」(CPU),甚至是整台電腦的數位電路了。
76 |少年科技人雜誌 與 程式人雜誌 都是結合「開放原始碼與公益捐款活動」的雜誌,簡稱「開放公益雜誌」。開放公益雜誌本著「讀書做善事、寫書做公益」的精神,我們非常歡迎大家認養專欄、或者捐出您的網誌。
18 || 出刊年月 | 23 |epub | 24 |ipad:PDF | 25 |A4:PDF | 26 |單頁 HTM | 27 |專案檢視 | 28 |
|---|---|---|---|---|---|
| 2014年12月 | 33 |epub | 34 |ipad.pdf | 35 |A4.pdf | 36 |pmag.html | 37 |github | 38 |
程式人雜誌 預定於單數月(1,3,5,7,9,11月) 出版,而 少年科技人雜誌 則預定於雙數月 (2,4,6,8,10,12月) 出版,兩者均為電子書,預計每個月 1 日出刊,您可以從下列網址取得這兩本雜誌的所有內容。
76 |竭誠歡迎大家投稿,或者成為本雜誌的專欄作家,現在就可以加入 少年科技人社團 或 程式人雜誌社團 一同共襄盛舉。
82 |如果您要投稿,可以參考 投稿須知 ,雖然編輯愛好 Markdown 格式,但我們可以接受各種格式的稿件,編輯會自行將稿件格式轉為 Markdown 後納入雜誌。
83 |本雜誌編輯為「陳鍾誠 (@ccckmit)」,若要聯絡編輯,請寄信到 。
89 |給專欄寫作者: 做公益不需要有壓力。如果您願意撰寫專欄,您可以輕鬆的寫,如果當月的稿件出不來,我們會安排其他稿件上場。
29 |給網誌捐贈者: 如果您沒時間寫專欄或投稿,沒關係,只要將您的網誌以 [創作共用的「姓名標示、非商業性、相同方式分享」授權] 並通知我們,我們會自動從中選取需要的文章進行編輯,放入適當的雜誌當中出刊。
30 |給文章投稿者: 程式人雜誌非常歡迎您加入作者的行列,如果您想撰寫任何文章或投稿,請盡可能用 markdown 編輯好您的稿件,並於每個月 25 日前投稿到 少年科技人社團 的檔案區,我們會盡可能將稿件編入隔月1號出版程式人雜誌當中,也歡迎您到社團中與我們一同討論。
31 |如果您要投稿給程式人雜誌,我們最希望的格式是採用 markdown 的格式撰寫,然後將所有檔按壓縮為 zip 上傳到社團檔案區給我們, 如您想學習 markdown 的撰寫出版方式,可以參考 看影片學 markdown 編輯出版流程 一文。
32 |如果您無法採用 markdown 的方式撰寫,也可以直接給我們您的稿件,像是 MS. Word 的 doc 檔或 LibreOffice 的 odt 檔都可以,我們 會將這些稿件改寫為 markdown 之後編入雜誌當中。
33 |當您投稿時,最重要需注意的一件事情,是智慧財產權的問題。
35 |您必須確定投搞的文章沒有侵權的問題!
36 |如果文章與圖片完全是您自行製作的,那應該不會侵權。但是如果您有使用網路上的圖片或修改網路上的文章,請務必採用沒有侵權疑慮的來源,像是 維基百科 或者 創作共用 授權的文章,並且標明修改來源。
37 |舉例而言,如果您修改自維基百科,請標上「本文修改自維基百科」,如果是其他「創作共用」文章或圖片,則需要附上原始文件或圖片的連結。
38 |以下是「創作共用」文章的授權類型,您可以在標識姓名來源後採用「姓名標示(BY)」與「 姓名標示(BY)-相同方式分享(SA)」這兩類授權的文章,也可以在特別標示授權後採用「姓名標示(BY)-非商業性(NC)」或「姓名標示(BY)-非商業性(NC)-相同方式分享(SA)」的文章,但是不要採用有「禁止改作(ND)」的文章來進行衍生創作。
39 |
41 | 您也可以擔任程式人雜誌的編輯,甚至創造一個全新的公益雜誌,我們誠摯的邀請您加入「開放公益出版」的行列,如果您想擔任編輯或創造新雜誌,也歡迎到 少年科技人社團 或 程式人雜誌社團 來與我們討論相關事宜。
44 || 公益團體 | 55 |聯絡資訊 | 56 |服務對象 | 57 |捐款帳號 | 58 |
|---|---|---|---|
| 財團法人羅慧夫顱顏基金會 | 63 |http://www.nncf.org/ 02-27190408分機 232 |
69 | 顱顏患者 (如唇顎裂、小耳症或其他罕見顱顏缺陷) | 70 |銀行:009彰化銀行民生分行 帳號:5234-01-41778-800 |
71 |
| 社團法人台灣省兒童少年成長協會 | 74 |http://www.cyga.org/ 04-23058005 |
80 | 單親、隔代教養.弱勢及一般家庭之兒童青少年 | 81 |銀行:新光銀行 戶名:台灣省兒童少年成長協會 帳號:103-0912-10-000212-0 |
82 |
最近、我陰錯陽差的發現自己的「小兒子」竟然很想要 「自學」,於是我從 金門縣教育局的網站下載了自學申請書,並且在五月底送出了申請,這份申請現在也被教育局和學校核可了。
23 |就像某廣告台詞上說的:「我是當了爸爸之後,才開始學習怎麼當爸爸的」。
24 |同樣的、我們也是在申請自學之後,才開始探索該如何自學的!
25 |還好、在網路發達的今天,透過網路就可以尋找的不少自學的資源。
26 |我想先讓小孩嘗試看看「學習寫程式」,看看他們是否能夠學會這門「資訊社會的核心技術」,於是我找到一個「教小孩學習程式相當知名的網站」,那就是 code.org 。
27 |想要透過 code.org 學習程式,請連上 http://learn.code.org/ 這個網址,您將會看到下列畫面。
29 |
31 | 您就算不申請帳號登入,也可以直接使用 code.org 開始學習程式,但是筆者強烈建議大家登入之後再開始使用,因為登入後系統會記住您所學習的每一門課程,這對您掌控學習進度大有幫助。
33 |Code.org 是美國人為了教育自己下一代,動員了不少人力而作出來的一個網站,並且有不少「程式領袖」都參與了該網站的推廣行動,其中包含了「微軟」的比爾蓋茲,臉書的「馬克佐伯克」,還有 Twitter, Dropbox 等公司的創辦人,以及 NBA 的籃球明星 Chris Bosh 等,都曾經為 code.org 錄製過「程式教育推廣影片」,以下是其中的一個簡介影片。
34 |一但進入 http://learn.code.org/ 之後,您就可以開始一關一關的點選,其中的數字連結「程式關卡」,而寫著 Unplugged Activity 的文字連結則是教學導引影片。
38 |
40 | 如果您點選 「階段 2: 迷宮的連結 1」 ,則會開始進入第一個「程式關卡」,畫面如下所示。
42 |
44 | 這一關很簡單,您只要多拉一個「向前移動」的功能貼在下面,如下圖所示,然後按下「執行」之後就可以過關了。
46 |
48 | 通常、 code.org 會偵測您的系統,自動採用適當的語言呈現。但是如果自動呈現的語言不正確的話,您可以到網頁最下方選擇「語言欄」,將語言調整為「繁體字」。
50 |
52 | 就這樣,您可以跟著網站的導引,一關一關的闖關,在這個過程中您將不知不覺的學會基本的程式設計觀念。
54 |如果您也去用用看 code.org,應該會發現這個網站真的很棒,非常適合「初學者」用來學習「基礎程式設計」。
55 |當然、有時候您還是會碰到「卡關」的情況,這時可能會思考很久但卻都無法通過,此時如果有「教師」可以幫助您的話,那這些關卡就不會造成學習上的重大挫折。舉例而言,筆者的「大兒子」在 level 80 這個關卡上就卡住了,於是我開始自己來闖關,思考了一陣子後發現採用下列方式就可以「破關」,順利的整好那塊「田地」。
56 |
58 | 當我把上述答案給「大兒子」看的時候,他才看了一眼就說:「我懂了」!
60 |我想、這是因為他已經在這個問題上卡了不少時間,而且認真的想過,嘗試了很多解法之後,就差那麼臨門一腳的結果。
61 |於是、他才能在短短的一秒之內,想通整個問題,快速的掌握通關秘訣。
62 |如果、這個關卡得太久,很可能就會讓他感到灰心,並且喪失學習的動力。身為教師,往往發揮作用的地方,就是在學生卡關的時候,可以發揮那臨門一腳的效果。
63 |台灣的教育,現在看來似乎卡關了,但是如果我們不努力去思考嘗試的話,整個教育體系或許還要卡住 20 年也說不定。或許有一天,那個臨門一腳的時刻將會來臨,此時、如果我們有努力做好準備的話,我們的教育或許會就此脫胎換骨也說不定。
64 |最近、可以用來教小孩程式的工具越來越多了,以下這些工具都還蠻適合小孩用的。
66 |不過、筆者還是覺得 code.org 是最適合小孩入門的一個網站,一但完成 code.org 的闖關課程之後,就可以真正開始用「打字」的方法學習程式設計,而不是依賴圖形化界面來寫程式了。
96 |...
` 把您的段落包起來,這樣在段落結束後就會換行了。 101 | 102 | 另外、還有 `...` 標記 (也可以用 ` ... `) 可以讓文字變粗體,而 `...` 指令則可以讓文字呈現斜體,` ... ` 標記可以強調文字,而 `...` 可以讓文字以類似程式碼的字型輸出。
103 |
104 | 若要讓文字變成上標,可以用 `...`,或用 `...` 則可以讓文字變下標,以下範例綜合的呈現了這些格式化標記的結果。
105 |
106 | ```html
107 |
108 |
109 |
110 |
111 |
112 |
113 | 一般字體 (Plain Text) 117 | 明顯 (Strong) 118 | 強調 (Emphasized) 119 |
120 |121 | 這是 上標 與 下標 的顯示情況! 122 |
123 | 124 | 125 | ``` 126 | 127 | 128 | 檢視檔案:
163 |
164 |
165 | ```
166 |
167 | 上述第一個指令 `
` 會按照原圖大小顯示,而 `
` 則會將圖形縮放到寬度 200,高度 300 的大小,最後一個用 20% 代表縮放到寬度為瀏覽器畫面視窗的百分之二十那麼大。
168 |
169 | 檢視檔案:| 183 | | 欄 1 | 184 |欄 2 | 185 |
|---|---|---|
| 列 1 | 188 |1,1 | 189 |1,2 | 190 |
| 列 2 | 193 |2, 1 | 194 |2, 2 | 195 |
Web 技術是建構在 Internet 這個基礎網路架構之上的一個應用層網路架構,Interent 網路所採用的協定為 TCP/IP ,而 Web 則是在 TCP/IP 之上再加上一層 HTTP 協定。
23 |在英文當中、Network、Internet 與 Web 這些名詞是區分得很清楚的,但是對於中文使用者而言,這三個名詞卻很難釐清,不過對於程式人員而言,區分這幾個名詞是很重要的是,特別是 Internet 與 Web 這兩個名詞,首先讓我們來看看這些名詞的差異。
25 |英文中的 Network 泛指任何的網路,包含像公路也叫做 Traffic Network,因此即使在電腦領域,Network 仍然泛指任何網路,包含區域網路、廣域網路、Internet、Ethernet 等等都是 Network。
26 |Internet 是指 1960 年代美國國防部 (Department of Defense, DoD) 所發展出來的那個網路,原本稱為 ARPANET,後來延伸到全世界之後,就稱為 Internet 了。
27 |1990 年 Tim Burner Lee 創造了 HTML 、URL、與全世界第一個 WebServer,從此開始創造出一個基於 Internet 的網路架構,這個網路架構被稱為 World Wide Web (簡稱為 Web 或 WWW),後來在 1992 年當時 Marc Andreessen 招聘了一些程式員開發出一個稱為 Mosaic 的瀏覽器 (Browser, 也就是 Web 的 Client 介面) 之後,推動了 Web 的急速發展。
28 |所以,凡是透過瀏覽器接觸到的網路,通常就是 Web 。而不是透過瀏覽器接觸到網路的軟體,則通常是基於 Internet 的應用程式。所以您用 Internet Explorer, Firefox, Chrome, Safari 等瀏覽器所看到的網站,其實都是一個一個的 Web 程式所組成的,而那些不經過瀏覽器,而是要另外安裝的應用程式,像是 Skype、MSN 等,則是 Internet 應用程式。
29 |本書的焦點是 Web 的程式設計,也就是網站的設計,而非像 Skype、MSN 這樣的 Internet 應用程式。
30 |如果您想學習的是 Internet 應用程式的設計,筆者另外有寫一本採用 C# 的程式設計書籍,請參閱該書,該書的網址如下:
31 | 34 |HTTP 是 Web (台灣稱「全球資訊網」、中國大陸稱「萬維網」) 的基礎協定,該協定架構在 TCP/IP 架構之上,屬於應用層的協定。構成 HTTP 的主要兩個應用程式是瀏覽器 (Browser) 與網站 (Web Server)。HTTP 是一個典型的 Client-Server (客戶端-伺服端) 架構的協定,使用者透過 Client 端的瀏覽器連結到 Server 的伺服器,然後由伺服端將結果以 HTML 的網頁格式傳回。 HTML 的網頁當中包含了許多超連結 (Hyperlink),這些超連結連接到某些網址 (URL),於是使用者可以透過瀏覽器中的超連結,進一步點選其他的網頁,進行網路瀏覽的行為。
36 |絕大部分的使用者,現在都是使用 Internet Explorer, Firefox, Chrome, Safari 等瀏覽器在上網,因此所使用到的就是 Web 程式,本書的焦點也正是這種基於 Web 的程式技術。
37 |Web 相關的技術非常的多,其中最核心的部分是 HTTP/HTML/URL/CSS/JavaScript 等技術,而圍繞著這些核心技術上所發展出來的技術則難以數計,像是 PHP、ASP/ASP.NET、JSP、Ruby on Rail、Python/Dejango、Node.js、XML、JSON、XMLHTTP、AJAX、jQuery 等等,本書後面的章節將採用一個最少語言的架構,以 JavaScript 為核心,採用 HTML + CSS + JavaScript 為主要技術,並搭配 JavaScript 所衍生出的 jQuery 與 Node.js 等技術,以建構出完整的 Web 程式設計概念。
38 |39 |41 |Web = HTTP + HTML + CSS + JavaScript + jQuery + Node.js 所組成的 Web Programming 技術
40 |
其中、HTTP 是所有技術的起點,讓我們先來看看 HTTP 到底做了甚麼事。
42 |當您用 Browser 看網站的時候,到底 Browser 傳遞什麼訊息給 Server,而 Server 又回傳神麼訊息給 Browser 呢?
44 |粗略的說、一個最簡單的 Web Server 之功能包含下列三個步驟:
45 |然而、在這個接收與傳回的過程中,所有的資訊都必須遵照固定的格式,規範這個接收/傳送格式的協定,稱為超文字傳送協定 (Hyper Text Transfer Protocol),簡稱為 HTTP 協定。
51 |HTTP 協定格式的基礎,乃是建構在網址 URL 上的傳輸方式,早期只能用來傳送簡單的 HTML 檔案,後來經擴充後也可以傳送 其他類型的檔案,包含 影像、動畫、簡報、Word 文件等。
52 |在本文中,我們將先簡介 HTTP 協定的訊息內容,然後在介紹如何以 Java 語言實作 HTTP 協定,以建立一個簡單的 Web Server。
53 |當你在 Browser 上打上網址(URL)後, Browser 會傳出一個HTTP訊息給對應的 Web Server,Web Server 再接收到這個訊息後, 根據網址取出對應的檔案,並將該檔案以 HTTP 格式的訊息傳回給瀏覽器,以下是這個過程的一個範例。
55 |豬小弟上網,在瀏覽器中打上 http://ccc.kmit.edu.tw/index.htm,於是、瀏覽器傳送下列訊息給 ccc.kmit.edu.tw 這台電腦。
56 |GET /index.htm HTTP/1.0
57 | Accept: image/gif, image/jpeg, application/msword, */*
58 | Accept-Language: zh-tw
59 | User-Agent: Mozilla/4.0
60 | Content-Length:
61 | Host: ccc.kmit.edu.tw
62 | Cache-Control: max-age=259200
63 | Connection: keep-alive
64 |
65 | 當 ccc.kmit.edu.tw 電腦上的 Web Server 程式收到上述訊息後,會取出指定的路徑 /index.htm ,然後根據預設的網頁根目錄 (假設為 c:),合成一個 c:.htm 的絕對路徑,接著從磁碟機中取出該檔案,並傳回下列訊息給豬小弟的瀏覽器。
66 |HTTP/1.0 200 OK
67 | Content-Type: text/html
68 | Content-Length: 438
69 | <html>
70 | ....
71 | </html>
72 | 其中第一行 HTTP/1.0 200 OK 代表該網頁被成功傳回,第二行 Content-Type: text/html 代表傳回文件為 HTML 檔案, Content-Length: 438 代表該 HTML 檔案的大小為 438 位元組。
73 |換言之、 Browser 會傳遞一個包含網頁路徑的表頭資訊給 Server,而 Server 則會回傳一個 HTML 檔案給 Browser,這樣的傳送格式與規則,就稱為 HTTP 協定。
74 |在 Web 開始成長之後,這樣的模式就顯得有點不足了,因為很多網頁需要使用者填入一些欄位,像是帳號密碼等資訊,但是上述的表頭並沒有欄位資訊預留空間,於是為了回傳這些使用者填入的訊息,有人想到了可以在網址的後面補上參數,這種方式就稱為 GET 的參數傳送方式,以下是一個傳送帳號密碼的表頭訊息,其中的 ?user=ccc&password=1234567 是 Browser 傳送給 Server 的參數。
75 |GET /login?user=ccc&password=1234567 HTTP/1.0
76 | Accept: image/gif, image/jpeg, application/msword, */*
77 | Accept-Language: zh-tw
78 | User-Agent: Mozilla/4.0
79 | Content-Length:
80 | Host: ccc.kmit.edu.tw
81 | Cache-Control: max-age=259200
82 | Connection: keep-alive
83 |
84 | 但是後來,這些填入的欄位越來越多,傳送的參數訊息也越來越長,而這些訊息有些也不希望被顯示在網址列上讓大家看到,因此又發展出了另外一種參數傳遞方式,這種方式就稱為 POST,以下是POST訊息的一個範例。
85 |POST /msg.php HTTP/1.0
86 | Accept: image/gif, image/jpeg, application/msword, */*
87 | Accept-Language: zh-tw
88 | Content-Type: application/x-www-form-urlencoded
89 | User-Agent: Mozilla/4.0
90 | Content-Length: 66
91 | Host: ccc.kmit.edu.tw
92 | Cache-Control: max-age=259200
93 | Connection: keep-alive
94 |
95 | user=ccc&password=1234&msg=Hello+%21+%0D%0AHow+are+you+%21%0D%0A++
96 | 上述表頭中的最後一句「user=ccc&password=1234&msg=Hello+%21+%0D%0AHow+are+you+%21%0D%0A++」是三個欄位參數被編碼後的結果,其中的 user 欄位值是 ccc,password 欄位值是 1234,而 msg 的值則是下列文章。
97 |Hello !
98 | How are you !
99 | POST 訊息與 GET 訊息不同的地方,除了在 HTTP 的訊息開頭改以 POST 取代 GET 之外,並且多了一個 Content-Length:66 的欄位,該欄位指示了訊息結尾會有 66 個位元組的填表資料,這些資料會被編碼後以文字模式在網路上傳遞。
100 |一但 Server 取得了 Browser 傳來的 GET 或 POST 訊息後,就可以根據其訊息以進行對應的動作,像是檢查帳號密碼是否正確、將某些訊息存入資料庫、然後在透過 HTML 的方式傳送回應畫面給 Browser,這種透過 HTTP 與 HTML 的簡單互動方式,正是由 World Wide Web 所帶來的核心技術,也讓全世界都捲入了這個影響深遠的網路革命當中。
101 |若您對 WebServer 的運作方式有興趣,可以參考筆者的三個程式與文章,這三個程式分別以 Java、C# 與 JavaScript/Node.js 寫成,這會讓您能夠更深入的體會 WebServer 與 HTTP 的運作原理。
102 |註:curl 這個工具聽說很適合用來觀察各種協定的運作原理,不過筆者還沒用過,未來會了再寫出來給大家看看! * http://curl.haxx.se/download.html
108 |【本文由陳鍾誠取材並修改自 維基百科,採用創作共用的 姓名標示、相同方式分享 授權】
115 || 欄 1 | 欄 2 | |
|---|---|---|
| 列 1 | 1,1 | 1,2 |
| 列 2 | 2,1 | 2,2 |
| 42 | | 欄 1 | 43 |欄 2 | 44 |
|---|---|---|
| 列 1 | 47 |1,1 | 48 |1,2 | 49 |
| 列 2 | 52 |2, 1 | 53 |2, 2 | 54 |
| 欄 1 | 欄 2 | |
|---|---|---|
| 列 1 | 1,1 | 1,2 |
| 列 2 | 2,1 | 2,2 |
| 欄 1 | 欄 2 | |
|---|---|---|
| 列 1 | 1,1 | 1,2 |
| 列 2 | 2,1 | 2,2 |