OSDC (Open Source Developers' Conference) 2010 筆記整理

OSDC 於 2010年 4/24, 4/25 舉辦, 在此將會議聽到的做點紀錄.

OSDC 錄影影片

  • OSDC 會場都有錄影, 影片可見: OSDC 2010 影片
  • 註: hlb 那場的影片錄壞了, 所以不在這列表上.

相關網頁

OSDC 重點

  • IE6 MUST DIE!!
  • MUST DIE!!

OSDC 2010 筆記

NoSQL with Cassandra gasol@pixnet
  1. NoSQL with Cassandra 投影片
  2. Big Table + Dynamo
  3. Open source by facebook in 2008
  4. Apache Top Level Project
  5. Key "L", 跑去 E, E 節點認為, 這資料應該要在 H 之後.
  6. 所以在 H 之後, replication 3份.
  7. 所以 M, P, S 都會有 "L" 這份資料
  8. Partitioner 若要換, 資料需要重塞, 不然會爆炸.
  9. Memory table 會暫存 key. (key, memtable size, 時間)
  10. Memory table column 是先排序好, 然後存入 SSTable.
  11. SSTable 寫死後, 就不能夠更動裡面的 data.
  12. 順序,
  13. 1. write to disk commit log (sequential)
  14. 2. replication
  15. 3. Memtable
  16. 4. SSTable: stands for Sorted Strings Table
  17. 5. compaction
  18. 6. tombstone
  19. tombstone, 寫是都可以寫, 刪資料也是寫入.
  20. 在分散式的系統, 刪除資料比寫入資料複雜.
  21. rows 大於 compaction 大小, 會出現 out of memory error.
  22. CAP: Consistency, Availibility, Partation Tolerance.
  23. 只能 2/3, 犧牲 1/3, 這套是犧牲 Consistency.
  24. Consistency - all nodes see the same data at the same time.
  25. Availibility - nodes failures do not prevent survivors from continue to operate
  26. Partition Tolerance - the system continues to operate despite arbitrary message lose
  27. Partition Tolerance, 若連接到一半, 溝通斷掉的話, 要保證系統還是能正常運作.
  28. Consistency - Write.
  29. ZERO - asynchronously.
  30. ANY - 不確定會寫在哪個 node
  31. ONE 寫到一個 node 去
  32. QORUM - N / 2 + 1, 至少要有寫入這麼多位置.
  33. Read
  34. ONE - first node
  35. QUORUM - recent timestamp
  36. if W + R > N, you will hava consistency.
  37. "W=1, R=N", "W=N, R=1", "W=Q, R=Q where Q = N / 2 + 1"
  38. Column: {name:"xxx", value: "abc" timestamp:123}
  39. ColumnFamily, row key = primary key.
  40. ColumnFamily 想像這是一個 DB, 裡面有非常多的 row.
  41. Sorting - Comparator
  42. Bytes Type - no validation
  43. AsciiType - like Bytes Type, but validates as ASCII
  44. LongType - 64 bit long
  45. UTF8Type - A string encoded as utf8
  46. LexicalUUIDType - A 128 bit UUID, usually version 4
  47. TimeUUIDType - a 128 bit version 1 UUID, compared by timestamp
  48. timestamp 要寫, 要用 TimeUUIDType, 不然若拿 timestamp 當 key, 可能會被覆蓋.
  49. Client API
  50. THRIFT- 347, PHP TSocket timeout issues (PHP 容易出現 TSocket timeout)
  51. THRIFT-601, sending random data 容易 crashed.
  52. get(), get_slice, multiget(), multiget_slice(), get_count(), get_range_slice(), get_range_slices(), insert(), batch_insert(), remove(), batch_mutate().
  53. NoSQL
  54. ApacheCassandra - Woodpecker Wiki for CPUG
  55. Using Cassandra with PHP
The Future of JavaScript. I mean ECMAScript - Douglas Crockford
  1. JavaScript - Java + Scheme + Self
  2. Caja(google-caja: A source-to-source translator for securing Javascript-based web content) / ADsafe(Making JavaScript Safe for Advertising.)
  3. IE6 MUST DIE!
  4. HTML5 will take a long time to complete.
  5. It is complicated. Complexity is the enemy of security.
  6. Reset HTML5.
  7. security by inconvenience (TSA), obscurity, vigilance.
  8. Security as identity.
  9. Reset HTML5 and start over.
  10. HTML5 does not fix the web. It makes it worse.
  11. The Web is important enough to fix.
  12. SQL was optimized for injections.
  13. Template-based web frameworks are optimized for XSS attacks.
  14. JavaScript大師:HTML 5標準制訂 欠缺安全考量
Upcoming improvements for HBase - Andrew Purtell (Trend Micro)
  1. Upcoming improvements for HBase 投影片
  2. HBase - The Hadoop Database
  3. CAP => HBase 是 CP
Less is more - gugod
  1. Less is more 投影片
  2. 這投影片是用 vroom 產生的
  3. 以簡馭繁
  4. cpanm - cpan 模組安裝程式
  5. Sinatra - ruby web framework.
  6. DSL - for web app
  7. 寫很少程式碼, 就可以達到簡單的目的.
  8. API 的設計 設計簡單, 方便, 俐落.
  9. 寫得 API, 如何算好?
  10. DOM API - 沒人喜歡.
  11. 如何讓人看到你的 API, 就像看到 jQuery 一樣, 簡單又漂亮.
  12. DOM API - 用字繁瑣 - 練打字.
  13. DOM API - 以繁馭簡 ...
  14. $array->item(3);
  15. $hash->retrieve("key");
  16. $session->fetch("is_admin")
  17. $db->load();
  18. 可以全部改成 get, $array->get(), $hash->get() ... *->get(), 不用去想要用哪個動詞.
  19. 容器的概念.
  20. 情境分明, 簡單用字, 以簡馭繁 => 從一個容器裡面把東西拿出來.
  21. 用簡單的字, 來操作後面繁雜的概念.
  22. 鄉民程式設計 - 剪下貼上程式設計
  23. 美醜不計.
  24. $@%/?!:\*?/
  25. 這段可能是髒話, 但是同樣也是 perl code. XD
  26. 程式題目 解的好 - 程式好讀, 好快, 好短~
  27. 可讀性?
  28. 原始碼不可讀, 需要情境.
  29. 演什麼就要像什麼~ 李立群
  30. 一致性的口味, 是提昇人氣關鍵
  31. 每杯都要一樣.
  32. "一致性"
  33. code <-> document (因為寫程式要去看 API)
  34. 因為 API 設計是不一致的.
  35. 短期記憶有限, 遺忘快速.
  36. "API 應該被設計成, 很容易記憶."
  37. $("noun").verb(arg1, arg2, callback)
  38. $("noun").verb(arg1, callback)
  39. $("noun").verb(callback)
  40. jQuery 幾乎最後都會有 callback, callback 都會放在最後.
  41. Fork Programming - 鄉民程式設計
  42. 一致性 API = Document 縮短
  43. "Consistency is Everything"
  44. 因為鋼琴的琴鍵有限, 才能奏出音樂的無限
  45. 比較少得設計, 才能設計出較多的彈性.
  46. One More Thing.
  47. http://more.handlino.com
  48. 好像有點意義, 其實是廢話.
  49. cpanm Acme::Lingua::ZH::Remix
  50. http://more.handlino.com/sentences.json?n=100
  51. http://more.handlino.com/sentences.json?callback=alert
The introduction of Cloud Operating Platform Technology - 吳政學(trend)
  1. Might be the most abused phrase since virtualization - VMWARE CTO 說的.
  2. "雲" 就是將背後的 "複雜" "模糊化"
  3. TCloud
  4. 雲端服務是簡單 而且有效率的.
  5. 虛擬化驅使網路的自動化: 動態防火牆, 動態 vLan, 動態路由
  6. 動態的服務改變, 需要動態的設定配置
  7. 測不準原理 - 監控不能影響服務品質
  8. 資料收集, 發現問題, 判斷並篩選問題, 通報問題, 歷史報告
  9. 預測問題比發現問題更重要
  10. 一個設備有問題, 其他設備馬上接手
  11. 分散的服務與高可用性
  12. 資料儲存能自動搬移並平衡負載.
  13. 儲存技術: 兼具大量儲存以及隨機存取的特性
  14. Private cloud 不夠用得時候, 可以去自動跟 Amazon cloud 拿些資源來用.
  15. Open Source - VM Management
  16. ConVirt (XenMan), Enomaly, Entropy, Eucalyptus, Google Ganeti, OpenNebula, Ovirt, Libvirt
  17. Monitor: Nagios, RRD Tool, Ganglia, Heartbeat, Open vSwitch, SNMP
  18. Storage: GlusterFS, XtreemFS, GFS, Luster, Fuse, Ceph, HDFS, DRBD
  19. Deployment/config: DNSMasq, Cobbler, Puppet, KickStart, YUM
  20. Computing: Hadoop, Hbase, HDFS, Map-Reduce, ZooKeeper, Cascading
  21. 騰雲計算 TCloud Computing
  22. 趨勢投資的子公司
  23. Tao Elaster - GPL2 Release
Programming Android Application in Scala - Brian Hsu
  1. Programming Android Application in Scala 投影片
  2. simple-build-tool - A build tool for Scala
  3. Scala 學習筆記
Designing Website for Mobile Safari - hlb
  1. Designing Website for Mobile Safari 投影片
  2. Designing for iPad
  3. 最小化輸入, 最大化輸出.
  4. 因為空間不足, 所以會取捨掉沒有用得, 只留下可以用得.
  5. focus on "Goal"
  6. focus 這個網頁主要提供的功能是什麼.
  7. 不要將網頁做起來像 iPhone App.
  8. 看起來應該是會怎麼樣, 但是實際上, 並不會作這件事.
  9. empty canvas = freedom
  10. Decision: website or webapp?
  11. mobile first:設計桌面版之前、先設計行動版
  12. native != best solution (iPhone, Android 原始的介面, 並不是那麼好用)
  13. 人少 : 用 click +, -, 人多: 不適合 click 慢慢一直加上去.
  14. 放個 404 頁面, 來操爆瀏覽器. 😛
  15. 我只是想知道有沒有下雨, 但是我又不想開窗戶~
  16. Akihabara - JavaScript Game Engine.
  17. http://www.kesiev.com
  18. 一定要有真的手機, 模擬器跟你看到的東西是不一樣的, ex: 手機比較亮, 顏色會有色差.
  19. http://www.quirksmode.org/m/table.html
  20. http://www.quirksmode.org/m/css.html
  21. Compatibility table
  22. abilities: HTML5, CSS3, Geolocation API, Client Side, storage, Offline Application,..
  23. iPhone 若叫他播放 Audio / Video, iPhone 就會自己去開 QuickTime.
  24. 因為 <audio> ... 所以爆炸~
  25. 遇到 iPhone, iPod, iPad, $("audio").remove(); ... XD
  26. Redmine iPhone.
  27. viewport: 980px
  28. viewport: 在 mobile safari 真實多大.
  29. iPhone: 320 x 480 (寬 x 長).
  30. 雖然是 320, 但是會假裝成 980px. (將 980px 縮成 320px 的 size)
  31. <meta name="viewport"content="width= [200 to 10,000 || device-width]">
  32. 實際畫面 320px * 416px
  33. 手指頭 按是 50 x 50.
  34. iPhone 可以把 web 存成 web app. 所以可以設 iphone 的 icon.
  35. position:fixed.
  36. iPhone 會在畫面外.
  37. 因為實際畫面是靠 viewport 拉進來的, 所以... 會發現在畫面外.
  38. JavaScript 的動畫, 在 iPhone 不要用, 很慢.
  39. http://delicious.com/hlb/osdc2010
eServ - jserv (0xlab)
  1. 不會跟傳統 Web 有關.
  2. 會用 C 語言的是真男人!
  3. Real men program in C
  4. C 語言 又回到王者的位置 - 冠 C
  5. 病毒種後門, 也會幫你開個 Web Server.
  6. Wt - http://www.webtoolkit.eu/ - C 寫得 Web Framework.
  7. Wt - 大量使用 C++ STL / boost
  8. 效能還沒 boost, 程式碼就瘋狂暴漲.
  9. 現在的 Server 比 Client 還慢.
  10. Klone - http://www.koanlogic.com/klone/
  11. 允許用 JSP / ASP <% code %> 來寫 Web.
  12. Klone - 不斷地編譯~
  13. KLone does everything, and does it fast and small~
  14. 目標: 有彈性, 22M -> 22k (容量縮小)
  15. DidiWiki - 全部以 C 寫得 Wiki (web + wiki + db) - size: 34Kb
  16. ldd didiwiki => 只有用到 libc.so.6 ... XDDDD
  17. 大學學個計算機概論, 就可以來寫這個了. XD
  18. Cervlet, Cppserv, Tntnet, Ajaxembed
  19. 6本在 debug hello world, 1本在 debug 泡泡排序.
  20. 真男人要自己刻教材
  21. 讓學生抓老師的 Bug. 老師接受 Bug report, 並追蹤 issue.
  22. 沒有送 Bug report 就打 0分. XD
  23. eserv = 易射夫
  24. 容易射出 Web content 的 伺服器~
  25. 讓學生罰寫原始程式碼, 可以在兩堂課內抄寫完~
  26. 在軍中, 帶一堆信紙, 假裝在寫情書, 實際上在寫 code.
  27. 程式碼要控制在, 兩堂課可以抄完~
  28. eServ: size: 13kb.
  29. http://code.google.com/p/eserv/
  30. eServ 指維護 AJAX 需要的基本功能, UI 都交給 jQuery.
  31. 原始碼控制在 300行 (要兩堂課 可以抄完)
  32. eServ: HTTP 1.1 Keep-Alive, Send file, Session / Timestamp, CGI / Servlet, Security: Avoid SQL injection..., Multithreaded, Efficient memory management, C-based APIs.
  33. 沒有必要每行都懂, 但是要可以讓學生可以修改~
  34. 類似 Busybox, 將所有 userspace 程式都放在同一個執行檔 (ln -s busybox eserv) :: argv[0]
  35. 與原本 C/ C++ 系統共用函式庫
  36. 從頭到尾都用 gdb 去 debug. XD
  37. 因為全都寫在 C code, 只有一隻程式.
  38. 程式碼, 不要從頭看, 這程式碼打死都run 不到~
  39. 靠 gdb 告訴你哪個程式碼會跑到~
  40. DOM ... JavaScript ... 搞不懂沒關係, 因為他還會再改版. XD
  41. strip -s eserv # 把 debug 訊息拿掉.
  42. 只要用 C 來寫 code, 就可以跟機器的距離拉得更近~
  43. Document = Source code.
  44. 先要會抄, 然後看得到結果, 才會覺得有趣.
  45. 偵測訊號強度, 只有 C API.
  46. 每個 driver 的回應都不一樣, 回應是錯得, 不符合規定~
  47. 把 printf 改成 sprintf.
  48. sqlite 太複雜, 考慮再寫個小的來用. XD
  49. 為了講作業系統, 所以寫個作業系統....
Building a platform from open source at Yahoo! - Dustin Whittle (Yahoo!)
  1. Languages do not scale, architectures do
AnyMQ: Scalable and Simple Message Queues in Perl - clkao
  1. AnyEvent, AnyMQ, AMQP
  2. PSGI, Plack
  3. Plack: Perl Web 相關合起來的超強套件.
  4. 用 %hash 取得 http response
  5. PSGI: Streaming Interface
  6. CGI.pm Must DIE!!!
  7. AnyEvent: event-driven programming
  8. AnyMQ Tasumaki::MessageQueue
  9. AMQP: Message protocol
  10. AnyMQ 可以 bind 再AMQP 上.
  11. Server-push, comet (comet = 彗星)
  12. comet = 長頭髮的星星
  13. 需要再很多不同 browser 不同的 hack.
  14. 瀏覽器有 connection 限制(限制兩個 connection)
  15. Websocket
  16. HTML5 websocket
  17. 以上的所有整合: Web:Hippie, Web::Hippie::-Pipe
  18. Hippie: Websocket, MXHR
  19. MXHR support: firefox
  20. Pipe: 煙斗 😛
  21. realtime 的 web, 可以看 Hippie
  22. SVG
  23. PSGI: 新的 protocol, 一般 cgi -> 轉成 PSGI request.
Jesse Vincent (Best Practical)
  1. K-9 Mail for Android
  2. K-9: Email client for Android.
  3. mutt
  4. Android + mutt = K-9 (robot dog)
  5. Android Mail Must Die~ XD
  6. Just build the whole OS
  7. 可以跑在模擬器上, 但是在手機上不能跑~
  8. beacuse "Security"
  9. Fork! Fork the OS.... XD
  10. K9mail - google code
  11. k9mail in google code
  12. ant debug
  13. adb install bin/K9-debug.apk
SVG-based Application Development - 李圭烽/蔡志展/黃昭龍
  1. 操作介面: 手指 / remote control
  2. Target: non-PC products
  3. SVG: Scalable Vector Graphics
  4. DOM API: jQuery & XBL
  5. 建立可以重複使用的 UI 元件
  6. Linux | Dbus for IPC | Gecko | XPCom
  7. (software stack)
  8. XUL Runner
  9. 快速作 UI 的雛型
  10. XBL binding
  11. 將行為與物件 binding
GO - Jack Palevich (Google)
  1. C-like speed
  2. Java-like safety
  3. Python-like brevity / flexibility
  4. CSP-style (message passing) concurrency
  5. Discovered Go in summer 2008
  6. When do you check types?
  7. C++: At compile time.
  8. Go: When down-casting. (JITS vtables if nescessary)
  9. Python: When calling a method.
  10. worker pool = thread
  11. quitChan := make (chan bool)
  12. joinChan := make (chan bool)
  13. jobChan := make (chan Rect)
  14. torrent: Bencode: http://zh.wikipedia.org/zh-tw/Bencode
  15. "Channels and goroutines" make networking code pretty easy to write.
  16. code format: gofmt: http://golang.org/cmd/gofmt/
  17. Reference vs. copy semantics = deserialize(x) vs. deserialize(&x)
  18. Doesn't run on Windows. (mingw port in progress.)
  19. Can't be called from C code.
  20. Can't create shared libraries.
  21. Ian Lance Taylor: http://www.airs.com/blog/
  22. Russ Cox: http://research.swtch.com/
  23. Google groups: golang-nuts, golang-dev, golang-checkins
  24. http://github.com/jackpal/Taipei-Torrent
Plug:千萬人同時上線的虛擬世界 - 胡舜元 (中央研究院)
  1. CAVE: 戴上 3D 眼鏡, 進入這個房間, 看起來東西就在你面前.
  2. Virtual Walking
  3. Holographic Projections 虛擬實境
  4. Billion-scale Virtual World
  5. Physical Limitations Must Die
  6. Text -> 2D -> 3D -> HD 3D
  7. users: single -> multi -> MMO
  8. Virtual words 可能會是幾百萬人, 幾千萬人的環境~
Designing Beautiful Ruby APIs by ihower
Lighting Talk
Vim Hack - c9s
  • cpan.vim : 從裝好的模組(cpan)找 Class 且編輯, 並找未安裝得 cpan module
  • git.vim
OSSF
  • Freddi
  • Freddi Must Die!!!
IJS - COSCUP
  • 2010 / 8, 14 ~ 15 COSCUP
$4 - taiwan radio tuner
  • GtkHiRad
  • hiChannel
  • Shell Script MUST DIE!
  • C MUST DIE!
  • jQuery++
Maidroid 用萌畫得手機入侵藍星 - BrianHsu - 墳墓
  • 只要是阿宅, 就要看 Keroro~
  • 只要阿宅燃起來, 就會把他做出來.
  • Maidroid - for AndroidReminder
  • 剛開啟要記的把手機喇叭關掉~
  • 功能: 鬧鐘
perlbrew - gugod
  • Perl 5.12.0 ...
  • perl is a really backward-compatible program
  • perlbrew manages multiple versions of perl
  • perlbrew: 安裝多個版本得 perl
  • perlbrew install perl-5.12.0
  • $HOME/perl5/perlbrew/bin/perl
  • perl + cpan modules in $HOME
  • http://github.com/schacon/showoff/
Cerealize - a drop-in replacement for ActiveRecord's serialize
  • Serialize out of the "Cerealize" Box
  • serialize :can, Hash
  • ruby
  • YAML is a human friendly data serialization
  • YAML slow for machine
  • Moduel.search - Rails 3
  • pomsets: Workflow management for your cloud

關於 Tsung

對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.
本篇發表於 My_Note。將永久鏈結加入書籤。

OSDC (Open Source Developers' Conference) 2010 筆記整理 有 1 則回應

  1. ygtw 說道:

    拜 真篇好棒!!

發表迴響