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

OSDC 於 2013年 4/20, 4/21 舉辦, 在此將會議聽到的做點紀錄.

OSDC 相關資料

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

相關網頁


關於 Tsung

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

發表迴響