Twitter 利用 Human Computation 改善搜尋結果(Amazon's Mechanical Turk)
五種 Social Media Startups 獲利的 Business Model
Freemium Model
基本版的服務是免費的,但是如果想要進階功能,就要額外收費。採用此 model 的服務必須要思考,【有什麼誘因】可以讓使用者從免費版升級到進階付費版。如果免費版就可以提供大部分目標客群所需要的功能,那付費的比例就會很低了。
原文中指出使用這種模式的服務有:UserVoice、Flickr、LinkedIn 和 PollDaddy。其中,UserVoice的使用者有16,652人(至2009/05),付費的比例大約是5%。
設計良好的Web API
這篇文章是:Designing robust web API
根據作者過去的經驗,提供幾個在設計API的Best Practice或個人經驗。分別為:
- Use a RESTful Model:使用HTTP + RESTful + JSON作為API的開發架構
- Stabilize your API:Expose the API as minimal as possible. 保持API的穩健,不應該有大量變動。已經釋出的功能很難被刪減。
- Version your API:在API的Request URL中加入版本資訊方便使用者做區別。
- Asynchronous Invocation:如果你的response需要很長的時間,採用asyn的方法。實作上有兩種模式可以參考:(1) Client在request之後,server response是一個receipt,用來向server詢問response是否已經處理完畢。(2) Client提供callback address,當server處理完response之後,會丟回callback的位置讓client接收。
【相關閱讀】
Youtube影片連續撥放服務
大家有興趣可以到以下這三個服務去試試看,還蠻簡單方便使用的:
【相關閱讀】
好站 - 搜尋 YouTube MV 並自動播放
UML類別圖中的聚合(aggregation)與組合(composition)關係
Aggregation和Composition都是表達一個物件包含另外一個物件的關係(has-a)。比如說:一個公司包含一些員工、一艘船中包含幾個引擎、一個飛機場中包含數架飛機等等。
- Aggregation
Aggregation是Association的一個特例(specialization),用來表達兩個物件之【整體和部分(whole-part)】的關係。當B物件與A物件之間是Aggregation的關係時,代表A物件消失時,B物件還可以給C物件繼續使用。
舉例來說,機場與飛機之間的關係就是Aggregation。A機場裡面會有很多台飛機,當A機場不再存在時,裡面的飛機還可以屬於(停靠在)C機場,不會因為A機場消失了,本來停靠的飛機也跟著消失。
- Composition
Composition所表達的是更進一步的aggregation。除了代表兩個物件之間的whole-part關係之外,還代表這兩個物件之間是有相同的生命周期(life-cycle)。白話一點的說,若是B物件與A物件之間是composition的關係時,代表當A物件消失的時候,B物件也要跟著消失。
舉例來說,一個員工和員工薪資資料就是composition的關係,當A員工離職後,它所對應的員工薪資資料也會跟著無效。
Android的Activity學習筆記
在開發Android的Mobile Application當中,Activity是相當重要的一個觀念。這一篇紀錄著我學習Activity相關的筆記,也歡迎大家留言討論。
低耦合(Low-Coupling)與高內聚力(High Cohesion)的設計原則
J2EE Solutions 比較表
http://swik.net/CompareJ2EESolutions
Apache Load-Balancer Load Module Order
- LoadModule proxy_module modules/mod_proxy.so
- LoadModule proxy_http_module modules/mod_proxy_http.so
執行MySQL出現ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10061)錯誤
- mysqld --install
- net start mysql
Spring Social 介紹
[Shell Script] 用echo將文字以附加(apppend)方式寫入檔案
echo "aaa" >> /home/kevingo/example.txt
echo "bbb" >> /home/kevingo/example.txt
如此一來,example.txt中的內容就會是:
aaa
bbb
High Availability(HA) 與 Load Balance
High Availability(HA)指的是提供一個高可靠度的運作環境,以網路服務來說,在Back-End需要的是Web Server Cluster和Database Cluster,目的在於當有任何一個節點crash後,會有其他的節點自動補上。
而Load Balance指的是當使用者的請求(request)進入到Back-End之後,會導入到目前loading比較輕的server,如此一來可以減輕每個server的負擔。
【相關閱讀】
商業服務的Ruby on Rails HTTP Cluster觀念及測試
MySQL Cluster 之 Data Nodes 與 Node Groups 之間的關係
- number of node groups = number of data nodes / NoOfReplicas
換句話說,你沒有辦法直接對node groups的數量進行設定,它取決於data nodes的數量和NoOfReplicas這兩個參數。
例如:
假設data nodes = 4
NoOfReplicas = 1 , node groups = 4
NoOfReplicas = 2 , node groups = 2
NoOfReplicas = 4 , node groups = 1
data nodes的數量最好是偶數,才能被平均分配到每個group當中。
Scrum 專案管理
在Scrum的管理方法中,總共有四種角色:
- Stakeholder
- 使用者
- 負責提供需求,在Scrum中,我們稱之為故事(Stroy)
- Product Owner
- 整個Scrum團隊的負責人
- 將使用者的Story轉換為Product Backlog
- 必須要為使用者的Story依據重要性進行排序(Priority)
- Scrum Master
- 開發團隊的領導人
- 通常需要較深的開發經驗與技術知識背景
- Scrum Team Member
- 完成產品需求
從這裡可以看出,Scrum的角色定義其實並沒有太特別,比較有趣的是它的運作流程,讓我們來看看這張圖:
這張圖可以被拆成以下幾個步驟:
- Stakeholder向Product Owner提出自己的需求
- Product Owner將需求轉換為Product Backlog
- 透過Sprint Planning Meeting後,將Product Backlog轉換為Sprint Backlog
- 在每一次的Sprint中,按照優先順序,進行一次Sprint(衝刺)
- 每次的衝刺中,都會進行Daily Scrum Meeting,確保進度
- 完成產出後,由Product Owner來驗收成果
- 整個Scrum流程做完後,進行Retrospective Meeting,檢討整個流程需要改進之處
而在Scrum中,幾個名詞的解釋如下:
- Product Backlog:指的就是使用者的需求。通常被排定好重要性和預計完成時間。
- Sprint:一個工作週期,通常為期一到四週
- Sprint Backlog:每一個Sprint需要完成的工作清單
- Sprint Planning Meeting:在執行每次的Sprnit之前所召開的會議,用來決定這次的Sprint要完成的工作(Sprint Backlog)
- Daily Scrum Meeting:在每天會舉行的會議,時間大約為15分鐘左右。Scrum Master會在這個會議中問三件事情
- 昨天完成什麼
- 今天要作什麼
- 遭遇到什麼困難
為了管理方便,在Scrum進行過程中,還會有一些工具來幫助你進行得更加順暢:
- Task Board:用來確認工作完成狀況的表格。實際上許多人會用有顏色的便利貼來區分,不同的顏色代表不同的工作或不同的負責人。
- Burn Down Chart:用來監控專案進度的表格,X軸是時間,Y軸是專案總時程或總工作數目。理想中的走勢應該是向藍色線一樣的斜率,但是實際執行時,通常會有出入,可能會像紅色摺線一般,可以用來觀察專案的走勢。
【相關閱讀】
Scrum (development)
A Simple Intro of Scrum
What is SCRUM?
5分鐘 學 Scrum (簡介)
MongoDB REST Interface
MongoDB provides rest interface for basic observation of server status. The URL for rest interface is "port+1000".
For example, if you specify the mongodb port with 10000, the rest interface URL will be http://localhost:11000.
For example, if you specify the mongodb port with 10000, the rest interface URL will be http://localhost:11000.