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