Your SlideShare is downloading. ×
0
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
EtherCalc: 多人即時
協作試算表
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

EtherCalc: 多人即時
協作試算表

1,898

Published on

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

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

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

Published in: Technology, Sports
2 Comments
5 Likes
Statistics
Notes
No Downloads
Views
Total Views
1,898
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
30
Comments
2
Likes
5
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Transcript

    • 1. EtherCalc多人即時協作試算表ethercalc.tw
    • 2. 僅代表個人立場
    • 3. 僅代表個人立場(但難免會有業配)
    • 4. 限於時間只講故事不講程式
    • 5. 限於時間 概念只講故事不講程式
    • 6. ethercalc.org‣ npm install -g ethercalc‣ ethercalc Please connect to: http://0:8000/ nodejs.org/#download
    • 7. ⟪開源應用架構⟫aosabook.org aosa.tw
    • 8. 緣起
    • 9. VisiCalc, 1979Dan Bricklin
    • 10. 哈佛商學院, 1977
    • 11. 哈佛商學院, 1977
    • 12. 哈佛商學院, 1977
    • 13. 哈佛商學院, 1977
    • 14. 哈佛商學院, 1977
    • 15. 最初的願景
    • 16. 最初的願景 Alto 工作站
    • 17. 最初的願景 Alto 工作站滑鼠計算機
    • 18. 最初的願景 Alto 工作站滑鼠計算機 頭戴顯示器
    • 19. 最初的願景 Alto 工作站滑鼠計算機 頭戴顯示器
    • 20. =SUM( ) 0
    • 21. 10 =SUM( ) 10 0
    • 22. 10 20 =SUM( ) 30 10 0
    • 23. 10 20 30 =SUM( ) 60 30 10 0
    • 24. 10 20 30 =SUM( ) 60 30 10 0
    • 25. 1977 → 1978
    • 26. 1977 → 1978
    • 27. 1977 → 1978 + Integer BASIC
    • 28. 1978 → 1979
    • 29. 1978 → 1979 10 20 30 =SUM( ) 60
    • 30. 1978 → 1979 A B C D1 10 20 302 =SUM( ) 60
    • 31. 1978 → 1979 A B C D1 10 20 302 =SUM(A1,B1,C1) 60
    • 32. 1978 → 1979 A B C D1 10 20 302 =SUM(A1,B1,C1) 60 Bob & Dan
    • 33. 1978 → 1979 A B C D 1 10 20 30 2 =SUM(A1,B1,C1) 60‣ Dan 持續用 BASIC 寫原型 Bob & Dan
    • 34. 1978 → 1979 A B C D 1 10 20 30 2 =SUM(A1,B1,C1) 60‣ Dan 持續用 BASIC 寫原型‣ Bob 以組合語言做出成品 Bob & Dan
    • 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. 1978 → 1979 A B C D 1 10 20 30 2 =SUM(A1,B1,C1) 60‣ Dan 持續用 BASIC 寫原型‣ Bob 以組合語言做出成品‣ 六年內售出 700,000 套‣ 「殺手級應用」的始祖 Bob & Dan
    • 37. 1981
    • 38. 二十年來
    • 39. 二十年來
    • 40. 二十年來
    • 41. 二十年來
    • 42. 二十年來 始終如一
    • 43. “打不開”
    • 44. “打不開”“變亂碼”
    • 45. “打不開”“變亂碼”“有病毒!”
    • 46. 維基百科, 2001
    • 47. 維基百科, 2001
    • 48. 維基百科, 2001
    • 49. wikiCalc, 2005
    • 50. wikiCalc, 2005✓ 支援純文字、HTML、Wiki 語法。
    • 51. wikiCalc, 2005✓ 支援純文字、HTML、Wiki 語法。✓ 引用其他伺服器上的數值。
    • 52. wikiCalc, 2005✓ 支援純文字、HTML、Wiki 語法。✓ 引用其他伺服器上的數值。✓ 記錄所有編輯操作,以供稽核紀錄。
    • 53. wikiCalc, 2005✓ 支援純文字、HTML、Wiki 語法。✓ 引用其他伺服器上的數值。✓ 記錄所有編輯操作,以供稽核紀錄。✓ 保留每個版本,可隨時回復 。
    • 54. wikiCalc, 2005✓ 支援純文字、HTML、Wiki 語法。✓ 引用其他伺服器上的數值。✓ 記錄所有編輯操作,以供稽核紀錄。✓ 保留每個版本,可隨時回復 。✓ 開放源碼!(GPLv2)。
    • 55. wikiCalc.pl
    • 56. wikiCalc.pl 網站./wkcdata/sites/Foo ./wkcdata/sites/Bar ./wkcdata/sites/Baz
    • 57. wikiCalc.pl 網站 頁面./wkcdata/sites/Foo XXX ./wkcdata/sites/Bar ./wkcdata/sites/Baz YYY ZZZ
    • 58. wikiCalc.pl 網站 頁面./wkcdata/sites/Foo XXX ./wkcdata/sites/Bar ./wkcdata/sites/Baz YYY ZZZ 儲存格
    • 59. wikiCalc.pl 網站 頁面./wkcdata/sites/Foo XXX ./wkcdata/sites/Bar ./wkcdata/sites/Baz YYY ZZZ 儲存格 A1: 100
    • 60. wikiCalc.pl 網站 頁面./wkcdata/sites/Foo XXX ./wkcdata/sites/Bar ./wkcdata/sites/Baz YYY ZZZ 儲存格 A1: 100 A2: =A1*2
    • 61. wikiCalc.pl 網站 頁面./wkcdata/sites/Foo XXX ./wkcdata/sites/Bar ./wkcdata/sites/Baz YYY ZZZ 儲存格 A1: 100 B1: =XXX!C1 A2: =A1*2
    • 62. wikiCalc.pl 網站 頁面./wkcdata/sites/Foo XXX ./wkcdata/sites/Bar ./wkcdata/sites/Baz YYY ZZZ 儲存格 A1: 100 B1: =XXX!C1 A2: =A1*2
    • 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. 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. 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. wikiCalc 編輯流程
    • 67. wikiCalc 編輯流程 A1: 100 A2: =A1*2
    • 68. wikiCalc 編輯流程 A1: 100 A2: =A1*2
    • 69. wikiCalc 編輯流程 A1: 100 A2: =A1*2 POST / ajaxsetcell=host:page:A1:300 wikicalc.pl
    • 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. “載入中…”
    • 72. “載入中…”
    • 73. “載入中…”“C100k” 問題
    • 74. “載入中…”“C100k” 問題
    • 75. 打掉重練
    • 76. 打掉重練
    • 77. SocialCalc, 2006Dan Bricklin Ross Mayfield
    • 78. 設計目標
    • 79. 設計目標‣ 用 Javascript 重寫計算引擎。
    • 80. 設計目標‣ 用 Javascript 重寫計算引擎。‣ 進行編輯操作時提供快速回應。
    • 81. 設計目標‣ 用 Javascript 重寫計算引擎。‣ 進行編輯操作時提供快速回應。‣ 同時處理十萬個儲存格的能力。
    • 82. 設計目標‣ 用 Javascript 重寫計算引擎。‣ 進行編輯操作時提供快速回應。‣ 同時處理十萬個儲存格的能力。‣ 加強對各種不同瀏覽器的支援。
    • 83. 設計目標‣ 用 Javascript 重寫計算引擎。‣ 進行編輯操作時提供快速回應。‣ 同時處理十萬個儲存格的能力。‣ 加強對各種不同瀏覽器的支援。‣ 客戶端稽核紀錄及還原/重作功能。
    • 84. 系統架構
    • 85. 系統架構SocialCalc.jsHTTP Server
    • 86. 系統架構 SocialCalc.jsGET HTTP Server
    • 87. 系統架構 SocialCalc.jsGET HTTP Server
    • 88. 系統架構 SocialCalc.jsGET GET HTTP Server
    • 89. 系統架構 SocialCalc.jsGET GET ($) HTTP Server
    • 90. 系統架構 SocialCalc.js PUTGET GET ($) HTTP Server
    • 91. 系統架構 SocialCalc.js PUTGET GET ($) HTTP Server
    • 92. 指令設計模式
    • 93. 指令設計模式set A1 value n 42
    • 94. 指令設計模式set A1 value n 42set A2 formula A1*2
    • 95. 指令設計模式set A1 value n 42set A2 formula A1*2merge A1:B2cut A3paste A4sort A1:B9 A up B downset sheet defaultcolor blue...
    • 96. 指令設計模式set A1 value n 42set A2 formula A1*2‣ 異步處理背景計算。
    • 97. 指令設計模式set A1 value n 42set A2 formula A1*2‣ 異步處理背景計算。‣ 僅需重繪可視區域。
    • 98. 指令設計模式set A1 value n 42set A2 formula A1*2‣ 異步處理背景計算。‣ 僅需重繪可視區域。‣ 還原重做次數不限。
    • 99. 指令設計模式set A1 value n 42set A2 formula A1*2‣ 異步處理背景計算。‣ 僅需重繪可視區域。‣ 還原重做次數不限。‣ 鍵盤滑鼠隨時可用!
    • 100. 指令設計模式set A1 value n 42set A2 formula A1*2‣ 異步處理背景計算。‣ 僅需重繪可視區域。‣ 還原重做次數不限。‣ 鍵盤滑鼠隨時可用!
    • 101. “社會化” 試算表
    • 102. “社會化” 試算表
    • 103. “社會化” 試算表 評論、按讚、推薦、 標記、分享、嵌入...
    • 104. 社會物件 人際連結
    • 105. 社會物件 人際連結
    • 106. 社會物件 人際連結
    • 107. 工
    • 108. CPAL 通用公共授權
    • 109. CPAL 通用公共授權 ㊔BSD, MIT
    • 110. CPAL 通用公共授權 © ㊔BSD, MIT LGPL, MPL
    • 111. CPAL 通用公共授權 © ++© ㊔BSD, MIT LGPL, MPL GPL
    • 112. CPAL 通用公共授權 © ++© ㊔BSD, MIT LGPL, MPL GPL “ASP
    • 113.   ”
    • 114. CPAL 通用公共授權 © ++© ㊔BSD, MIT LGPL, MPL GPL “ASP
    • 115.   ” Affero GPL
    • 116. CPAL 通用公共授權 © ++© ㊔BSD, MIT LGPL, MPL GPL “ASP
    • 117.   ” CPAL Affero GPL
    • 118. CPAL 通用公共授權 © ++© ㊔BSD, MIT LGPL, MPL GPL “ASP
    • 119.   ” CPAL Affero GPL
    • 120. CPAL 通用公共授權 © ++© ㊔BSD, MIT LGPL, MPL GPL “ASP
    • 121.   ” CPAL Affero GPL
    • 122. CPAL 通用公共授權 © ++© ㊔BSD, MIT LGPL, MPL GPL “ASP
    • 123.   ” CPAL Affero GPL
    • 124. Sheetnode, 2008Karim Ratib
    • 125. Sheetnode, 2008 Views + Fields + CCKKarim Ratib
    • 126. Sheetnode, 2008 Views + Fields + CCK SocialCalc.jsKarim Ratib
    • 127. Sheetnode, 2008 Views + Fields + CCK SocialCalc.jsKarim Ratib
    • 128. Sheetnode, 2008 Views + Fields + CCK SocialCalc.jsKarim Ratib
    • 129. Sheetnode, 2008 Views + Fields + CCK SocialCalc.jsKarim Ratib
    • 130. OLPC, 2008
    • 131. OLPC, 2008Luke Closs Dan
    • 132. Mesh網絡
    • 133. Manusheel GuptaVijit Singh
    • 134. SocialCalcActivity.py Gecko/XPCOM SocialCalc.js XoCom.js XoCom.pyManusheel GuptaVijit Singh
    • 135. SocialCalcActivity.py Gecko/XPCOM SocialCalc.js XoCom.js set A1 value n 42 XoCom.pyManusheel GuptaVijit Singh
    • 136. SocialCalcActivity.py Gecko/XPCOM SocialCalc.js XoCom.js set A1 value n 42 XoCom.py D-Bus + TelepathyManusheel GuptaVijit Singh
    • 137. SocialCalcActivity.py Gecko/XPCOM SocialCalc.js XoCom.js set A1 value n 42 XoCom.py D-Bus + Telepathy OLPC MeshManusheel Gupta 網絡廣播Vijit Singh
    • 138. SocialCalcActivity.py Gecko/XPCOM SocialCalc.js XoCom.js set A1 value n 42 XoCom.py D-Bus + Telepathy OLPC MeshManusheel Gupta 網絡廣播 D-Bus + Telepathy Gecko/XPCOM SocialCalc.js XoCom.js XoCom.pyVijit Singh SocialCalcActivity.py
    • 139. SocialCalcActivity.py Gecko/XPCOM SocialCalc.js XoCom.js set A1 value n 42 XoCom.py D-Bus + Telepathy OLPC MeshManusheel Gupta 網絡廣播 D-Bus + Telepathy Gecko/XPCOM set A1 value n 42 SocialCalc.js XoCom.js XoCom.pyVijit Singh SocialCalcActivity.py
    • 140. 很讚,但是...
    • 141. 很讚,但是...‣ 必須同時開啟試算表。
    • 142. 很讚,但是...‣ 必須同時開啟試算表。‣ 漏接訊息時無法復原。
    • 143. 很讚,但是...‣ 必須同時開啟試算表。‣ 漏接訊息時無法復原。‣ 編輯同一格時會衝突。
    • 144. 很讚,但是...‣ 必須同時開啟試算表。‣ 漏接訊息時無法復原。‣ 編輯同一格時會衝突。‣ 只能在 OLPC 上運行!
    • 145. YAPC::Tiny, 2009 跳格 Multiplayer SocialCalc 二零零九 唐鳳 字 中英雙宇有字版
    • 146. EV: 事件驅動
    • 147. Tatsumaki EV: 事件驅動 @miyagawa
    • 148. Tatsumaki EV: 事件驅動 Web::Hippie @miyagawa @clkao
    • 149. Tatsumaki EV: 事件驅動 Web::Hippie Feersum @miyagawa @clkao @stash
    • 150. WebSocket 同步編輯 multiserver.pl Web::Hippie Plack Feersum EV/libev
    • 151. WebSocket 同步編輯 SpreadsheetControl multiserver.pl Web::HippieScheduleScheetCommand set A1 value n 2046 Plack RenderSheet Feersum EV/libev
    • 152. WebSocket 同步編輯 SpreadsheetControl multiserver.pl Web::HippieScheduleScheetCommand set A1 value n 2046 Plack RenderSheet 傳送 Feersum EV/libev
    • 153. WebSocket 同步編輯 SpreadsheetControl multiserver.plScheduleScheetCommand Web::Hippie 群播 set A1 value n 2046 Plack RenderSheet 傳送 Feersum EV/libev
    • 154. WebSocket 同步編輯 SpreadsheetControl multiserver.plScheduleScheetCommand Web::Hippie 群播 set A1 value n 2046 Plack ScheduleScheetCommand RenderSheet 傳送 Feersum EV/libev set A1 value n 2046 (isRemote = true) RenderSheet
    • 155. 新增功能
    • 156. 新增功能✓ 加入時取得目前狀態。
    • 157. 新增功能✓ 加入時取得目前狀態。✓ 斷線重連時可以復原。
    • 158. 新增功能✓ 加入時取得目前狀態。✓ 斷線重連時可以復原。✓ 顯示別人的游標位置。
    • 159. 新增功能✓ 加入時取得目前狀態。✓ 斷線重連時可以復原。✓ 顯示別人的游標位置。✓ 可以在各平台上運行!
    • 160. 新增功能✓ 加入時取得目前狀態。✓ 斷線重連時可以復原。✓ 顯示別人的游標位置。✓ 可以在各平台上運行!
    • 161. 更讚了,但是...
    • 162. 更讚了,但是...‣ 要相信誰的目前狀態?
    • 163. 更讚了,但是...‣ 要相信誰的目前狀態?‣ 所有人離線: 資料消失?
    • 164. 更讚了,但是...‣ 要相信誰的目前狀態?‣ 所有人離線: 資料消失?‣ 一定要有人負責按儲存?
    • 165. 更讚了,但是...‣ 要相信誰的目前狀態?‣ 所有人離線: 資料消失?‣ 一定要有人負責按儲存?‣ 重新連接: 回播所有指令?
    • 166. 更讚了,但是...‣ 要相信誰的目前狀態?‣ 所有人離線: 資料消失?‣ 一定要有人負責按儲存?‣ 重新連接: 回播所有指令?
    • 167. 打掉重練
    • 168. 打掉重練
    • 169. YAPC::NA, 2006
    • 170. YAPC::NA, 2006“I think, but I cannot prove, that bythe next year JavaScript 2.0 willbootstrap itself, complete selfhosting, compile back to JavaScript,and replace Ruby as the Next BigThing in all environments. ”
    • 171. YAPC::NA, 2006
    • 172. YAPC::NA, 2006“JavaScript will become the commonbackend for all dynamic languages,and so you can write Perl to run in thebrowser, on the server, and insidedatabases, all with the same set ofdevelopment tools. ”
    • 173. YAPC::NA, 2006
    • 174. YAPC::NA, 2006“Because, as we all know,worse is better, so the worstscripting language is doomedto become the best.”
    • 175. YAPC::NA, 2006“Because, as we all know,worse is better, so the worstscripting language is doomedto become the best.” 劣即是夯
    • 176. JavaScript: 缺點減少
    • 177. JavaScript: 缺點減少 CoffeeScript: 標點減半 cs = (js) = js/2 JeremyAshkenas
    • 178. JavaScript: 缺點減少 CoffeeScript: 標點減半 cs = (js) = js/2 JeremyAshkenas
    • 179. JavaScript: 缺點減少 CoffeeScript: 標點減半 cs = (js) = js/2 “原 JavaScript 行數: 22k。  重寫過的 CoffeeScript 行數: 5k。  {async, jsdom, zappa, optimist etc}++” JeremyAshkenas
    • 180. {x,y} = @offset
    • 181. {x,y} = @offsetvar _ref = this.offset;
    • 182. {x,y} = @offsetvar _ref = this.offset;var x = _ref.x;
    • 183. {x,y} = @offsetvar _ref = this.offset;var x = _ref.x;var y = _ref.y;
    • 184. {x,y} = @offsetvar _ref = this.offset;var x = _ref.x;var y = _ref.y; js2coffee.org
    • 185. Function::ᵒ = (fun) -
    • 186. Function::ᵒ = (fun) - (arg) = @ fun arg
    • 187. Function::ᵒ = (fun) - (arg) = @ fun argf = (x) = x * 2
    • 188. Function::ᵒ = (fun) - (arg) = @ fun argf = (x) = x * 2g = (x) = x * 3
    • 189. Function::ᵒ = (fun) - (arg) = @ fun argf = (x) = x * 2g = (x) = x * 3h = f .ᵒ g
    • 190. Function::ᵒ = (fun) - (arg) = @ fun argf = (x) = x * 2g = (x) = x * 3h = f .ᵒ gh 100 # 600
    • 191. Function::ᵒ = (fun) - (arg) = @ fun argf = (x) = x * 2g = (x) = x * 3h = f .ᵒ gh 100 # 600
    • 192. Zappa: Node.js 懶人包 zappajs.org
    • 193. Zappa: Node.js 懶人包MauriceMachado zappajs.org
    • 194. Zappa: Node.js 懶人包 “If you can describe it in 495 characters, why on earth shouldMaurice it take 879?”Machado zappajs.org
    • 195. require(zappa) - @view layout: - html = body = @body @get /: - @render index @view index: - for name, value of { wiki: Wiki to HTML html: HTML to Wiki } form method: post, = p = textarea {name} p = input {type: submit, value}
    • 196. require(zappa) - @view layout: - html = body = @body @get /: - @render index @view index: - for name, value of { wiki: Wiki to HTML html: HTML to Wiki } form method: post, = p = textarea {name} p = input {type: submit, value}
    • 197. require(zappa) -@post /: - - @view layout: if @data.wiki? @body html = body = @send w2h @data.wiki @get /: - @render index else if @data.html? @send h2w @data.html @view index: - for name, value of { else redirect / wiki: Wiki to HTML html: HTML to Wiki } form method: post, = p = textarea {name} p = input {type: submit, value}
    • 198. COSCUP, 2011
    • 199. COSCUP, 2011
    • 200. COSCUP, 2011hack
    • 201.  hack
    • 202.  hack
    • 203.  ...
    • 204. COSCUP, 2011hack
    • 205.  hack
    • 206.  hack
    • 207.  ...
    • 208. EtherCalc 系統架構
    • 209. EtherCalc 系統架構 main.coffee sc.coffee Socket.ioSocialCalc.js Express Node.js db.coffee EV/libuv redis.js Zappa
    • 210. EtherCalc 系統架構 main.coffee sc.coffee Socket.ioSocialCalc.js Express Node.js db.coffee EV/libuv redis.js Zappa Redis(optional)
    • 211. EtherCalc 系統架構 main.coffee sc.coffee Socket.ioSocialCalc.js Express Node.js db.coffee EV/libuv player.coffee redis.js Zappa SocialCalc.js Redis(optional)
    • 212. EtherCalc 系統架構 main.coffee MULTI sc.coffee GET snapshot Socket.io LRANGE logSocialCalc.js EXEC Express Node.js db.coffee EV/libuv player.coffee redis.js Zappa SocialCalc.js Redis(optional)
    • 213. EtherCalc 系統架構 main.coffee MULTI sc.coffee GET snapshot Socket.io LRANGE logSocialCalc.js EXEC Express Node.js db.coffee EV/libuv player.coffee redis.js Zappa SocialCalc.js RPUSH log cmd Redis(optional)
    • 214. EtherCalc 系統架構 main.coffee MULTI sc.coffee GET snapshot Socket.io LRANGE logSocialCalc.js EXEC Express Node.js db.coffee EV/libuv player.coffee redis.js Zappa SocialCalc.js RPUSH log cmd Redis(optional)
    • 215. EtherCalc 系統架構 main.coffee MULTI sc.coffee GET snapshot Socket.io LRANGE logSocialCalc.js EXEC Express Node.js db.coffee EV/libuv player.coffee redis.js Zappa SocialCalc.js RPUSH log cmd Redis(optional)
    • 216. EtherCalc 系統架構 main.coffee MULTI sc.coffee GET snapshot Socket.io LRANGE logSocialCalc.js EXEC Express Node.js db.coffee EV/libuv player.coffee redis.js Zappa SocialCalc.js MULTI RPUSH log cmd Redis DEL log(optional) SET snapshot snapshot EXEC
    • 217. 跨頁即時更新
    • 218. 跨頁即時更新伺服端
    • 219. 跨頁即時更新伺 客服 戶端 端
    • 220. 跨頁即時更新 ask.log: Foo伺 客服 戶端 端
    • 221. 跨頁即時更新 ask.log: Foo伺 log: Foo,snapshot,log 客服 戶端 端
    • 222. 跨頁即時更新 ask.log: Foo伺 log: Foo,snapshot,log 客 execute: set A1服 formula Bar!B2 戶端 端
    • 223. 跨頁即時更新 ask.log: Foo伺 log: Foo,snapshot,log 客 execute: set A1服 formula Bar!B2 ask.recalc: Bar 戶端 端
    • 224. 跨頁即時更新 ask.log: Foo伺 log: Foo,snapshot,log 客 execute: set A1服 formula Bar!B2 ask.recalc: Bar 戶端 recalc: Bar,snapshot 端
    • 225. 跨頁即時更新 ask.log: Foo伺 log: Foo,snapshot,log 客 execute: set A1服 formula Bar!B2 ask.recalc: Bar 戶端 recalc: Bar,snapshot 端 recalc: Bar,snapshot
    • 226. PaaS 遠端建置
    • 227. PaaS 遠端建置 stackato.yml app.js
    • 228. PaaS 遠端建置 stackato.yml app.js dotcloud.yml server.js
    • 229. PaaS 遠端建置 stackato.yml app.js dotcloud.yml server.js server.js
    • 230. REST 資源界面
    • 231. REST 資源界面GET /_/pagePUT /_/page
    • 232. REST 資源界面GET /_/page POST /_/pagePUT /_/page {commands:[…]}
    • 233. REST 資源界面GET /_/page POST /_/pagePUT /_/page {commands:[…]} GET /_/page/cells/A1 PUT /_/page/cells/A1 GET /_/page/names/range
    • 234. TODO, 2012
    • 235. TODO, 2012‣ 內建聊天室、即時共筆
    • 236. TODO, 2012‣ 內建聊天室、即時共筆‣ 匯出匯入、動態製圖
    • 237. TODO, 2012‣ 內建聊天室、即時共筆‣ 匯出匯入、動態製圖‣ 與 Drupal 系統整合
    • 238. TODO, 2012‣ 內建聊天室、即時共筆‣ 匯出匯入、動態製圖‣ 與 Drupal 系統整合‣ 與 Socialtext 系統整合
    • 239. TODO, 2012‣ 內建聊天室、即時共筆‣ 匯出匯入、動態製圖‣ 與 Drupal 系統整合‣ 與 Socialtext 系統整合‣ Forks welcome!
    • 240. 感謝收看! EtherCalc 多人即時 協作試算表
    • 241. EtherCalc以著作結合本文件之人,在法律許可之範圍內,拋棄該著作依著作權法所享有之權利,及其相關或鄰接的法律權利,宣告該著作貢獻至公共領域。採用 CC0 之著作,不要求姓名表彰。 ethercalc.tw

    ×