OSDC 於 2013年 4/20, 4/21 舉辦, 在此將會議聽到的做點紀錄.
OSDC 相關資料
- OSDC 2013 的 Schedule 與 投影片 皆於此頁: OSDC 2013
- OSDC IRC Log 2013-04-19 / OSDC IRC Log 2013-04-20
- OSDC 2013 錄影檔
OSDC 2013 筆記
Selena Deckelmann - What beginners teach us
- selenamari, Data Architect, Mozilla
- 中文版 - 新手教我們的事
- 新手新裡有許多可能性, 老手心裡則少得多
- 當你回答新手得問題時... 先停下來想一想, 聽到你的回答, 對方會有和感受?
- PyLadies - 寫程式的女人齊聚一堂
- 弄懂如何為人師
- 新手: 接受各種可能性 - "選擇太多, 不知所措"
- 初心者最可貴之處: 冒險力、可能心、包容心
- Python Download page 有太多選擇..... http://www.python.org/download/
- http://preview.python.org/download/ 簡化多了~
- 我們的工作就是回答: 下一步該做什麼?
- 並且考慮到: 人們再做下一步時, 內心的感受如何?
- 學寫程式 是什麼感覺?
- evphona despair 不斷的上下震盪
- 參加工作坊(超嗨) -> 習題練不動 -> 一改爛光光....
- PyLadies 如何成功? 參加工作坊 up -> 練不動 down -> 黑客松、小聚會 up -> 爛光光
- down...
- 建構經驗
- 開源初步 - 快速上手, 人際聯繫, 共學環境 , 目標遠大
- The unwriteen first chapter - Early wins, In-person connections, Learning
- environment, Big goals.
- 如何建構 良好新手經驗
- 別說 "嗯, 其實呢...", 不用故作吃驚~
- Pairing (搭檔): 剛學會的人, 是最好的老師
- 教一次, 做三次. 1:3 ratio, instruction to doing
- "傾聽" 學生的 重述 和 提問
- PyLadies 111位, 每週聚會 1~2次
- 教學相長
- 寫出更好的程式, 寫出更好的文件, 獲得洞察力
- AdaInitiative.org , OpenHatch.org , PyLadies.org
- Please go out to teach~ 🙂
- 挑戰: Teach is very hard...
YAHOO | Yi-Kai Tsai - OpenStack 101
- Yi-Kai Tsai, Yahoo Inc! yikai@yahoo-inc.com
- 101: 美國課程代碼, 數字越小越簡單, 基礎課程得意思
- 概念性, 比較容易理解的說明法
- 因為我沒參加呀 XDDD
- Cloud computing - Service models : Users (SaaS) -> Application (SaaS), Platform
- Cloud Service (Paas) -> Inforastructure (IaaS) -> Physical Layer (IaaS)
- SaaS > PaaS > IaaS 由下往上. 越上面越走向 ROI & Innovation
- OpenStach history: NASA, rackspace
- 軟體開發、Working code.
- 上面跟軟體有關, 下面跟硬體有關
- 他們不是為了制定某種標準、Spec
- OpenStack 完全管理開發的角度, 不是從某種 Spec 標準制定下來, 而是完全依照需要直
- 接做下來(Working code).
- 可以選擇你需要的部份來用.
- OpenStack 不區分 Public, Private cloud, 打造是可以 support both.
- 不管任何元件, 都有提供 3 種 interfaces: GUI, Command Line, HTTP/REST API
- OpenStack Shared Services (API) 支援 雲端運算: 計算 (Compute)、網路
- (Networking)、儲存 (Storage) - 雲端運算三種類型
- Compute - Nova (Project name)
- Nova: Highly scalable Computer management framework.
- Nova 所以都透過 RabbitMQ 來串接 API、Scheduler、Computer...
- Object Storage - Swift (Project name)
- Un-structure data storge service.
- - Not offering raw access (不會有直接可以存取得 raw file)
- - API to access whole object
- 類似 S3
- Block Stroage - Cinder (Project name) (外接硬碟服務)
- Bock storage as a service
- - External Hard Drives
- Networking - Quantum (Project name)
- Virtual network Layer 1 / 2 and IP address management service
- Lverage advanced technologies with "plugin"
- API Client - Quantum Service - Backend X-(Nova compute)
- Share services
- Keystone - 管理身分認證
- Glance - 可以選擇 VM images , Login、註冊、注銷.. 等
- Common - Logging, Configuration
- OpenStack Architecture (Folsom)
- Dashboard: Horizon (Project name)
- Project 可以 create 多少 resource... 等等.
- Getting start
- Use it - trystack.org - 可以在這邊試用看看
- Run it - Adopt product
- Build it - devstack.org
- - Adopt distribution
- 要 Download 套件, 然後, 把東西 Build 起來... 會比較不建議, 細節很多, 會需要熟很多東西
KKBOX | Gea-Suan Lin - Percona XtraDB Cluster 入門
- Talk about Percona XtraDB Cluster - Gea-Suan Lin
- PPT: https://github.com/KKBOX/OSDC.tw.2013 - 有 PDF 和 my.cnf
- Percona XtraDB Cluster (PXC)
- 同步式 Replication
- Syncharonous Replication - No Replication Lag.
- Active-Active Multi-Master
- 兩台可以同時使用, 同時讀寫.
- 缺點:
- DELETE on no-PK table may break consistency
- 沒有 PK 可能會造成機器兩台是不同步得. (ex: log server)
- Perfer to InnoDB (以 InnoDB 為基礎)
- 可以處理 MyISAM, 但是還在實作中.
- Hardware Suggestion
- PXC 有三台, 有任何一台掛掉, 另外兩台是屬於多數邊, 來當操作.
- 如果更上層掛掉, 會讓你讀寫都不會動. 確保資料一致性.
- 寫入是同步, 所以會等其他台都等說寫入成功, 才會繼續往下走
- 機器需要同等級.
- 因為是以多數為主, 所以最少要三台 (兩台會是 1 vs 1, 掛掉會無法操作)
- 一台機器負責投票, 不用是多數邊. (兩台很好得機器, 一台便宜機器, 負責投票(多數邊))
- garbd - 負責投票得程式
- One dedicated small server for backup & garbd (可以跑 replication, 隨時停下來、備份...)
- Two same powerful servers for database
- Software Suggestion 軟體建議
- Debian (x86_64)
- Setup 舊資料與新資料得設定檔, 差異蠻大 (還在開發中)
- Install Percona PGP Key
- Setup APT 套件
- apt-get install percona-xtradb-cluster-server-5.5 # 指定版本, 才不會突然升級到 5.6...
- 比較安全
- install Percona Toolkit # 套件程式, pt check sum, 強制把不一樣的部份取代掉, pt sync
- Set /etc/mysql/my.cnf
- See Github (my.cnf)
- [mysqld_safe] wsrep_cluster_address = gcomm://10.1.1.1:4567, gcomm://10.1.1.2:4567...
- 三台機器, 要設定三組, 第四組設空的. (看 pdf)
- 4567 是 default port, 但是不指定會跑不起來
- [mysqld] binlog_format = ROW (一定要跑 ROW format), server_id = 12345, wsrep_cluster_name = XXX, wsrep ...
- wsrep_cluster_name 三台機器需用同一個 name
- gcache.size=1G, gcache size 機器離線到回來, gcache 會記錄從離線到回來 1G 得資料, 離
- 線離太久, 超過 1G, 另外一台機器就會做 full resync
- 注意, 不要設太大, 會吃實際記憶體得大小.
- wsrep_slave_threads = 8, 不然同時執行一個指令, 就會卡住.
- 就自動需要 full re-sync 得時候, 會用到 wsrep_sst_auth, wsrep_sst_method.
- Setup gardb 設定負責投票得機器
- /usr/bin/garbd -d -a gcomm://10.1.1.1:4567 -g xXX -l /tmp/garbd-xxx.log
- -a 是指定要設哪台機器
- PXC 解決問題1: 傳統 Master-Master, M1: tuncate + id = 1, M2:truncate + id =2, 造成資料就不同步.
- PXC 解決問題2: 註冊帳號同時寫兩個 Table, 使用者瀏覽器同時點兩下, 會造成 dup key.. 等等.
- 1,2,3 三台, 平常都存取同一台就好, 只有在 failover 才會用到另外一台
只有在特別狀況, 才會把 第二台拿出來"讀".
PIXNET | Zack Yang: Say yo to AngularJS
- PPT: https://dl.dropboxusercontent.com/u/16706203/OSDC_Say%20yo%20to%20AngularJS/index.html
- PPT 使用此套件: The HTML Presentation Framework https://github.com/hakimel/reveal.js
- User wants good user experience.
- ng-app, ng-model
- ANGULAR Feature.
- HTML Extension
- Follow convention.
- Dependency injection
- Two way data-binding
- 能快速將資料變化, 反應到 View 上面, User 也可以隨時反應資料狀態, 反應到資料中.
- AngularJS 用 $scope 得 View object 操作
- Separation of concerns
- 很基本 MVC Design、Filter
- Directive 概念: 自創行為、Element 可以靠 Directive 來做.
- Factory: 共同的任務、行為, 可以定義 Factory
- Factory: Sharing common functionality.
- Routes:
- Content 隨著網址變動而變動, 提供 Route 和 View 得結合.
- Use Yeoman to build your web.
- YEOMAN.
- How to DRY in your Workflow?
- YEOMAN Feature
- - Package management
- -- bower (bower search jquery)
- - Generators
- - Live reload
- - Testing
- - Build system
- 結論: Angular 沒那麼簡單, 文件不夠清楚
- 結論: YEOMAN 包山包海, Tool 很多, 要去了解很多 config.
- 這兩個 Project 都是由 Google 主導.
- YEOMAN build Angular 得過程.
- bower search angular
- yo angular
- Build: 用 grunt 來做
- Demo 影片: http://www.youtube.com/watch?v=612ViIB4X_c
ETU | 韓祖棻: Hadoop Cluster HA 的經驗分享
- jerryhan@etusolution.com
- Facebook Namenode High Availability
- Hadoop Ecosystem
- HDFS Architecture (Master / Slave)
- Namenode 存 Metadata
- Namenode: 你現在在做得事情, 要去哪個 data node 抓取
- The namenode was a Sing point of failure(SPOF).
- Facebook namenode
- AvaterNode, Standby AvatarNode
- AvaterNode <- NFS Filer (write / read transation) -> Standby AvatarNode
- Hadoop 1.0 Namenode
- Backup Namenode Approach
- 更新 Namenode 直接將 Active Namenode Log 送到 Standby Namenode
- HDPs Full-Stack HA Architecture
- Namenode server 擺在 HA Cluster 裡面, 在靠應用程式監控
- JT: Job tracker
- HA for HDFS NameNode Using VMware
- Don't use the NameNode VM for running any other master node
- NN: NameNode
- Journal Nodes.
- Master、Worker
- Master: Name Node, Job Tracker、HBase Master、Zookeeper (Leader)、Hive
- Worker: Data Node Task Tracker、Region Server 、Zookeeper
- HA Architecture (Active <-Synchronised File System -> Standby)
- HA based on CDH 4.0.1
- Data Synchronization:
- Hadoop ecosystem: configuration 存在 Zookeeper, Hive meta data 存在 PostgreSQL.
- PostgreSQL: 使用 PostgreSQL Replication
- User data.
- System configuration or data: PostgreSQL ...
- 最好需要兩台 Master (Active、Standby), 兩台 Worker
- Worker (ZK, Zookeeper)
- Design Details - Enabling HA
大貓: 那些函數語言Tutorial沒教我的事 miaout17
- PPT: http://www.slideshare.net/miaout17/tutorial-19128603
- http://about.me/miaout17
- Functional programming concurrent.
- 函數語言的各種特性 Functional Programming -> First-Class Function:
- - Higher-Order Function
- - Function Composition
- - Partial Application
- 純函數: 1. 沒有副作用, 2. 給與相同參數, 得到相同結果
- 1. 沒有副作用? - 所有程式都有 Side-Effect, 修改記憶體狀態、螢幕顯示、輸出到檔案
- 重點不是「避免副作用」, 而是區分「有副作用」及「沒有副作用」得 Function.
- 所有程式都有副作用.
- 學習函數語言的編成典範, 能對純函數、不可便資料等資料有更透徹得理解.
- 分析語言帶來的好處, 應該逐一分析:
- - 語言特性帶來的優點(及其代價)
- - 編成典範帶來的優點
- 函數語言不是並行、平行程式的萬靈丹, 但其編成典範相當適合並行、平行程式
OOO: Functional Programming Using Underscore.js
- othree
- Function of Functional Language
- Pure Function
- First Class Citizen
- - Function like variable
- Higher Order Function
- -Function takes or return functions (Function 可以吃 Function 回傳得 Function.)
- ex: event listener.
- function prop(name) {
return function (object) {
return object[name];
}
}
- A small DOM library for the Cull.JS family of libraries https://github.com/culljs/dome
- Functional Programming in JavaScript
- Native: forEach, map/reduce, filter
- Functional JavaScript - by Oliver Steele at 2007
- Underscore.js - by Jeremy Ashkenas from DocumentCloud
- Underscore is a utility-belt library for JavaScript that provides a lot of the functional
- programming support.
- LiveScript & prelude.ls
- Underscore.js: compose, map/reduce, filter, pluck
- Performance -> Bad. XD
- Functional Programming - 程式碼會比較清楚, 好維護, 但是不要走火入魔全換~
- Help: lo-dash
- Higher-Order JavaScript
- http:/interglacial.com/hoj/hoj.html