Successfully reported this slideshow.

# EtherCalc: 多人即時 協作試算表

6

Share   ×
1 of 251
1 of 251

# EtherCalc: 多人即時 協作試算表

6

Share

OSDC.tw 2012 slides for http://ethercalc.org/.

Please see http://ethercalc.tw/ for extra material in Chinese.

OSDC.tw 2012 slides for http://ethercalc.org/.

Please see http://ethercalc.tw/ for extra material in Chinese.

## More Related Content

### Related Books

Free with a 14 day trial from Scribd

See all

### Related Audiobooks

Free with a 14 day trial from Scribd

See all

### EtherCalc: 多人即時 協作試算表

1. 1. EtherCalc 多人即時 協作試算表 ethercalc.tw
2. 2. 僅代表個人立場
3. 3. 僅代表個人立場 (但難免會有業配)
4. 4. 限於時間 只講故事 不講程式
5. 5. 限於時間 概念 只講故事 不講程式
7. 7. ⟪開源應用架構⟫ aosabook.org aosa.tw
8. 8. 緣起
9. 9. VisiCalc, 1979 Dan Bricklin
10. 10. 哈佛商學院, 1977
11. 11. 哈佛商學院, 1977
12. 12. 哈佛商學院, 1977
13. 13. 哈佛商學院, 1977
14. 14. 哈佛商學院, 1977
15. 15. 最初的願景
16. 16. 最初的願景 Alto 工作站
17. 17. 最初的願景 Alto 工作站 滑鼠計算機
18. 18. 最初的願景 Alto 工作站 滑鼠計算機 頭戴顯示器
19. 19. 最初的願景 Alto 工作站 滑鼠計算機 頭戴顯示器
20. 20. =SUM( ) 0
21. 21. 10 =SUM( ) 10 0
22. 22. 10 20 =SUM( ) 30 10 0
23. 23. 10 20 30 =SUM( ) 60 30 10 0
24. 24. 10 20 30 =SUM( ) 60 30 10 0
25. 25. 1977 → 1978
26. 26. 1977 → 1978
27. 27. 1977 → 1978 + Integer BASIC
28. 28. 1978 → 1979
29. 29. 1978 → 1979 10 20 30 =SUM( ) 60
30. 30. 1978 → 1979 A B C D 1 10 20 30 2 =SUM( ) 60
31. 31. 1978 → 1979 A B C D 1 10 20 30 2 =SUM(A1,B1,C1) 60
32. 32. 1978 → 1979 A B C D 1 10 20 30 2 =SUM(A1,B1,C1) 60 Bob & Dan
33. 33. 1978 → 1979 A B C D 1 10 20 30 2 =SUM(A1,B1,C1) 60 ‣ Dan 持續用 BASIC 寫原型 Bob & Dan
34. 34. 1978 → 1979 A B C D 1 10 20 30 2 =SUM(A1,B1,C1) 60 ‣ Dan 持續用 BASIC 寫原型 ‣ Bob 以組合語言做出成品 Bob & Dan
35. 35. 1978 → 1979 A B C D 1 10 20 30 2 =SUM(A1,B1,C1) 60 ‣ Dan 持續用 BASIC 寫原型 ‣ Bob 以組合語言做出成品 ‣ 六年內售出 700,000 套 Bob & Dan
36. 36. 1978 → 1979 A B C D 1 10 20 30 2 =SUM(A1,B1,C1) 60 ‣ Dan 持續用 BASIC 寫原型 ‣ Bob 以組合語言做出成品 ‣ 六年內售出 700,000 套 ‣ 「殺手級應用」的始祖 Bob & Dan
37. 37. 1981
38. 38. 二十年來
39. 39. 二十年來
40. 40. 二十年來
41. 41. 二十年來
42. 42. 二十年來 始終如一
43. 43. “打不開”
44. 44. “打不開” “變亂碼”
45. 45. “打不開” “變亂碼” “有病毒!”
46. 46. 維基百科, 2001
47. 47. 維基百科, 2001
48. 48. 維基百科, 2001
49. 49. wikiCalc, 2005
50. 50. wikiCalc, 2005 ✓ 支援純文字、HTML、Wiki 語法。
51. 51. wikiCalc, 2005 ✓ 支援純文字、HTML、Wiki 語法。 ✓ 引用其他伺服器上的數值。
52. 52. wikiCalc, 2005 ✓ 支援純文字、HTML、Wiki 語法。 ✓ 引用其他伺服器上的數值。 ✓ 記錄所有編輯操作，以供稽核紀錄。
53. 53. wikiCalc, 2005 ✓ 支援純文字、HTML、Wiki 語法。 ✓ 引用其他伺服器上的數值。 ✓ 記錄所有編輯操作，以供稽核紀錄。 ✓ 保留每個版本，可隨時回復 。
54. 54. wikiCalc, 2005 ✓ 支援純文字、HTML、Wiki 語法。 ✓ 引用其他伺服器上的數值。 ✓ 記錄所有編輯操作，以供稽核紀錄。 ✓ 保留每個版本，可隨時回復 。 ✓ 開放源碼！(GPLv2)。
55. 55. wikiCalc.pl
56. 56. wikiCalc.pl 網站 ./wkcdata/sites/Foo ./wkcdata/sites/Bar ./wkcdata/sites/Baz
57. 57. wikiCalc.pl 網站 頁面 ./wkcdata/sites/Foo XXX ./wkcdata/sites/Bar ./wkcdata/sites/Baz YYY ZZZ
58. 58. wikiCalc.pl 網站 頁面 ./wkcdata/sites/Foo XXX ./wkcdata/sites/Bar ./wkcdata/sites/Baz YYY ZZZ 儲存格
59. 59. wikiCalc.pl 網站 頁面 ./wkcdata/sites/Foo XXX ./wkcdata/sites/Bar ./wkcdata/sites/Baz YYY ZZZ 儲存格 A1: 100
60. 60. wikiCalc.pl 網站 頁面 ./wkcdata/sites/Foo XXX ./wkcdata/sites/Bar ./wkcdata/sites/Baz YYY ZZZ 儲存格 A1: 100 A2: =A1*2
61. 61. wikiCalc.pl 網站 頁面 ./wkcdata/sites/Foo XXX ./wkcdata/sites/Bar ./wkcdata/sites/Baz YYY ZZZ 儲存格 A1: 100 B1: =XXX!C1 A2: =A1*2
62. 62. wikiCalc.pl 網站 頁面 ./wkcdata/sites/Foo XXX ./wkcdata/sites/Bar ./wkcdata/sites/Baz YYY ZZZ 儲存格 A1: 100 B1: =XXX!C1 A2: =A1*2
63. 63. wikiCalc.pl 網站 頁面 ./wkcdata/sites/Foo XXX ./wkcdata/sites/Bar ./wkcdata/sites/Baz YYY ZZZ 儲存格 A1: 100 B1: =XXX!C1 A2: =A1*2 B2: =YYY!D2
64. 64. wikiCalc.pl 網站 頁面 ./wkcdata/sites/Foo XXX ./wkcdata/sites/Bar ./wkcdata/sites/Baz YYY ZZZ 儲存格 A1: 100 B1: =XXX!C1 A2: =A1*2 B2: =YYY!D2
65. 65. wikiCalc.pl 網站 頁面 ./wkcdata/sites/Foo XXX ./wkcdata/sites/Bar ./wkcdata/sites/Baz YYY ZZZ 儲存格 A1: 100 B1: =XXX!C1 A2: =A1*2 B2: =YYY!D2 跨頁引用
66. 66. wikiCalc 編輯流程
67. 67. wikiCalc 編輯流程 A1: 100 A2: =A1*2
68. 68. wikiCalc 編輯流程 A1: 100 A2: =A1*2
69. 69. wikiCalc 編輯流程 A1: 100 A2: =A1*2 POST / ajaxsetcell=host:page:A1:300 wikicalc.pl
70. 70. wikiCalc 編輯流程 A1: 100 A2: =A1*2 POST / ajaxsetcell=host:page:A1:300 wikicalc.pl 200 OK <?xml version="1.0"?> <root><![CDATA[ A1:v:300:300:right:1:1:: A2:f:600:A1*2:right:1:1:: ]]></root>
71. 71. “載入中…”
72. 72. “載入中…”
73. 73. “載入中…” “C100k” 問題
74. 74. “載入中…” “C100k” 問題
75. 75. 打掉重練
76. 76. 打掉重練
77. 77. SocialCalc, 2006 Dan Bricklin Ross Mayﬁeld
78. 78. 設計目標
79. 79. 設計目標 ‣ 用 Javascript 重寫計算引擎。
80. 80. 設計目標 ‣ 用 Javascript 重寫計算引擎。 ‣ 進行編輯操作時提供快速回應。
81. 81. 設計目標 ‣ 用 Javascript 重寫計算引擎。 ‣ 進行編輯操作時提供快速回應。 ‣ 同時處理十萬個儲存格的能力。
82. 82. 設計目標 ‣ 用 Javascript 重寫計算引擎。 ‣ 進行編輯操作時提供快速回應。 ‣ 同時處理十萬個儲存格的能力。 ‣ 加強對各種不同瀏覽器的支援。
83. 83. 設計目標 ‣ 用 Javascript 重寫計算引擎。 ‣ 進行編輯操作時提供快速回應。 ‣ 同時處理十萬個儲存格的能力。 ‣ 加強對各種不同瀏覽器的支援。 ‣ 客戶端稽核紀錄及還原/重作功能。
84. 84. 系統架構
85. 85. 系統架構 SocialCalc.js HTTP Server
86. 86. 系統架構 SocialCalc.js GET HTTP Server
87. 87. 系統架構 SocialCalc.js GET HTTP Server
88. 88. 系統架構 SocialCalc.js GET GET HTTP Server
89. 89. 系統架構 SocialCalc.js GET GET (\$) HTTP Server
90. 90. 系統架構 SocialCalc.js PUT GET GET (\$) HTTP Server
91. 91. 系統架構 SocialCalc.js PUT GET GET (\$) HTTP Server
92. 92. 指令設計模式
93. 93. 指令設計模式 set A1 value n 42
94. 94. 指令設計模式 set A1 value n 42 set A2 formula A1*2
95. 95. 指令設計模式 set A1 value n 42 set A2 formula A1*2 merge A1:B2 cut A3 paste A4 sort A1:B9 A up B down set sheet defaultcolor blue ...
96. 96. 指令設計模式 set A1 value n 42 set A2 formula A1*2 ‣ 異步處理背景計算。
97. 97. 指令設計模式 set A1 value n 42 set A2 formula A1*2 ‣ 異步處理背景計算。 ‣ 僅需重繪可視區域。
98. 98. 指令設計模式 set A1 value n 42 set A2 formula A1*2 ‣ 異步處理背景計算。 ‣ 僅需重繪可視區域。 ‣ 還原重做次數不限。
99. 99. 指令設計模式 set A1 value n 42 set A2 formula A1*2 ‣ 異步處理背景計算。 ‣ 僅需重繪可視區域。 ‣ 還原重做次數不限。 ‣ 鍵盤滑鼠隨時可用！
100. 100. 指令設計模式 set A1 value n 42 set A2 formula A1*2 ‣ 異步處理背景計算。 ‣ 僅需重繪可視區域。 ‣ 還原重做次數不限。 ‣ 鍵盤滑鼠隨時可用！
101. 101. “社會化” 試算表
102. 102. “社會化” 試算表
103. 103. “社會化” 試算表 評論、按讚、推薦、 標記、分享、嵌入...
104. 104. 社會物件 人際連結
105. 105. 社會物件 人際連結
106. 106. 社會物件 人際連結
107. 107.
108. 108. CPAL 通用公共授權
109. 109. CPAL 通用公共授權 ㊔ BSD, MIT
110. 110. CPAL 通用公共授權 © ㊔ BSD, MIT LGPL, MPL
111. 111. CPAL 通用公共授權 © ++© ㊔ BSD, MIT LGPL, MPL GPL
112. 112. CPAL 通用公共授權 © ++© ㊔ BSD, MIT LGPL, MPL GPL “ASP

• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n