Successfully reported this slideshow.

EtherCalc: 多人即時
協作試算表

6

Share

Upcoming SlideShare
EtherCalc for Drupal
EtherCalc for Drupal
Loading in …3
×
1 of 251
1 of 251

EtherCalc: 多人即時
協作試算表

6

Share

Download to read offline

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

EtherCalc: 多人即時
協作試算表

  1. 1. EtherCalc 多人即時 協作試算表 ethercalc.tw
  2. 2. 僅代表個人立場
  3. 3. 僅代表個人立場 (但難免會有業配)
  4. 4. 限於時間 只講故事 不講程式
  5. 5. 限於時間 概念 只講故事 不講程式
  6. 6. ethercalc.org ‣ npm install -g ethercalc ‣ ethercalc Please connect to: http://0:8000/ nodejs.org/#download
  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 Mayfield
  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

Editor's Notes

  • \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
  • ×