彙整

Node.js 記錄處理 (1)

基本介紹

教學目標

透過 log4js 套件實作出每日的 API 存取記錄檔。

前置作業

  1. 完成 Node.js 套件安裝與設置。

套件安裝

1
2
$ npm install log4js --save
$ npm install express --save

使用教學

初始設定

log.js

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
var log4js = require('log4js');  
log4js.configure({
appenders: [
{
type: 'console',
category: "console"
}, {
type: "dateFile",
filename: 'log',
pattern: " yyyy-MM-dd",
alwaysIncludePattern: true,
category: 'level'
}],
replaceConsole: true,
levels:{
level: 'INFO'
}
});
var logger = log4js.getLogger('level');
exports.logger = logger;
exports.use = function(app) {
app.use(log4js.connectLogger(logger, {level:'auto', format:':method :url'}));
}

server.js

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
var express = require('express'); 
var app = express();

var router = express.Router();
app.use('/api/v1', router);
router.get('/user', function(req, res){
var data = {id: 1,name: "leoyeh"};
logger.info(JSON.stringify(data));
res.json(data);
});

var log = require('./log');
var logger = log.logger;
log.use(app);

var port = process.env.PORT || 8080;
app.listen(port);

啟動伺服器

1
$ sudo PORT=80 node server.js

開啟瀏覽器,在網址列輸入 http://127.0.0.1/api/v1/user

確認記錄檔

1
2
[2014-11-22 05:17:04.513] [INFO] level - {"id":1,"name":"leoyeh"}
[2014-11-22 05:17:04.541] [WARN] level - GET /api/v1/user

相關資源

雲端服務 Microsoft Azure (1)

基本介紹

教學目標

初步了解如何透過 Micorsoft Azure 機器學習的雲端服務,進行電影推薦實驗。

使用教學

建立專案

  1. 開啟 Microsoft Azure 機器學習官方網站 ,按下「立即開始使用」按鈕。
  2. 點選「 + NEW」按鈕,接著搜尋「Recommender」關鍵字。
  3. 選擇「Movie Recommender - Development」 建立新專案。

了解流程

  • Movie Ratings (Saved Datasets)
    電影評分資訊,某個人 (UserId) 在何時 (Timestamp) 針對某部電影 (MovieId) 進行評分 (Rating) 。
  • Project Column (Data Transformation - Manipulation)
    主要進行資料的轉換,將資料中的時間的資訊排除。
  • Split (Data Transformation - Sample and Split)
    主要進行資料的轉換,將資料特定比例當成機器學習的訓練樣本資料。
  • Train Matchbox Recommender (Machine Learning - Train)
    透過訓練樣本資料以 Matchbox 演算法產生推薦結果。
  • Score Matchbox Recommender (Machine Learning - Score)
    以 Matchbox 演算法產生預測分數進行評估。
  • Evaluate Recommender (Machine Learning - Evalute)
    進行推薦演算法的評估。

進行實驗

了解流程的運作之後,接著在下方點選「RUN」按鈕,就能進行實驗,最後只要點擊在每個流程的下方圓點點選「Visualize」即可查看每個流程產出的結果。

Microsoft Azure - Mechine Learning Sample

相關資源

Node.js 圖表處理 (3)

基本介紹

教學目標

透過 highcharts 套件實作圖表,呈現看劇的男生和女生比例資訊。

使用教學

chart.html

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link href="http://library.leoyeh.me/css/bootstrap/bootstrap-3.3.1.min.css" rel="stylesheet"></link>
<link href="http://library.leoyeh.me/css/bootstrap/bootstrap-theme-3.3.1.min.css" rel="stylesheet"></link>
<script src="http://library.leoyeh.me/js/jquery/jquery-1.8.2.min.js" type="text/javascript"></script>
<script src="http://library.leoyeh.me/js/highchart/highcharts.js" type="text/javascript"></script>
</head>
<body>
<center>
<div class="input-group">
<input type="text" class="form-control" id="keyword"></input>
<span class="input-group-btn">
<button class="btn btn-default" type="button" id="generate">產生圖表</button>
</span>
</div>
<div id="container" style="min-width: 310px; height: 400px; margin: 0 auto"></div>
</center>
<script>
$("button").click(function(){
var keyword = $("#keyword").val();
var url = "http://127.0.0.1:8080/query/"+keyword;
var options = {
chart: {
renderTo: 'container',
type: 'pie'
},
title: {
text: '男女比例'
},
yAxis: {
title: {
text: 'percent'
}
},
tooltip: {
pointFormat: '<b>{series.name}: </b>(point.y) {point.percentage:.1f} %'
},
plotOptions: {
pie: {
allowPointSelect: true,
cursor: 'pointer',
dataLabels: {
enabled: true,
format: '<b>{point.name}: </b>(point.y) {point.percentage:.1f} %',
style: {
color: (Highcharts.theme && Highcharts.theme.contrastTextColor) || 'black'
}
}
}
},
series: [{}]
};
$.getJSON(url, function(data) {
options.series[0].data = data;
var chart = new Highcharts.Chart(options);
});
});
</script>

</body>
</html>

server.js

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
var express = require('express');
var app = express();
app.get("/query/:keyword",function(req, res) {

var keyword = req.params.keyword;
var query = [];
query["來自星星的你"] = [{
"gender":"female",
"count":"300"
},{
"gender":"male",
"count":"100"
}];
var data = query[keyword];
var chart_data = [];
if (data) {
try {
for (var n=0; n<data.length; n++) {
if (data[n].gender == "female") {
chart_data.push(["女生",parseInt(data[n].count)]);
}
if (data[n].gender == "male") {
chart_data.push(["男生",parseInt(data[n].count)]);
}
}
res.header('Access-Control-Allow-Origin', '*');
res.json(chart_data);
} catch(err) {
console.log(err)
}
} else {
res.header('Access-Control-Allow-Origin', '*');
res.json(chart_data);
}
});
var port = process.env.PORT || 8080;
app.listen(port);
console.log("http://127.0.0.1:" + port);

接著透過以下指令啟動資料 API 的伺服器。

1
$ node server.js

用瀏覽器開啟 chart.html 檔案進行測試。

相關資源

雲端服務 API 新經濟 (1)

( 以下內容純屬參與活動會後的重點心得筆記,資料來源: IDC, 2014 )

基本介紹

教學目標

初步了解開放 API 新經濟體系將會帶動創新的商業模式。

基本概念

開放 API 產生創新連結

  • 海量資料的大數據潛力無窮,該如何促進數據流通 ?
  • 物聯網時代,該如何串聯萬物的資訊 ?
  • O2O虛實整合,該如何整合資源創新服務 ?

開放 API 帶動創新商業模式

2014 年是第三平台的基礎確立與創新發展的期間,市場上由許多藉由開放 API 的方式加速創新與創造營收。在面對企業經營「成本」與「彈性」的兩難問題,IDC 認為透過雲端服務不但是最佳解決途徑,更是改變市場遊戲規則的關鍵,加速企業在典範轉移的過程中取得市場先機與提升市場競爭力與佔有率。

Amazon、Google 與 Salesforce.com 等雲端服務業者更藉由 開放 API 加速服務普及度與創造巨額營收。

  • Amazon 每天都透過開放 API 處理近 1 兆筆的交易資料。
  • Google 透過開放 API 創造十億美金以上的營收。
  • Salesforce.com 則有超過一半以上的營收來自於 開放 API。

隨著開放 API 的大量產生,是否有相對應的管理平台與銷售平台變的越來越重要。

  • Mulesoft 以 3 千 7 百萬美金收購最活耀 API 社群 (Programmable Web) 所推出的 API 發佈平台 - Anypoint API Portal。

第三平台興起 -> 雲端服務 -> API 新經濟

雲端服務下的新經濟體系 (API 新經濟)。

  • API is the product
    主要按照交易次數、分級訂價機制獲得直接營收,例如: PayPay、Skype、Googe AdWords。
  • API projects the product
    接觸更多客戶、提供更多功能,以及進行更深層的服務整合,例如: Salesforce.com、Spotify。
  • API promotes the product
    商務發展導向、提升使用人數、推銷品牌與廣告,例如: Netflix。
  • API powers and feeds the product
    獲得更多內容與夥伴合伴進行內部創新,例如: Facebook、Youtube、Twitter。

更多開放 API 可以參考 Mashape 免費 API 管理平台和市集。

相關資源

Node.js 圖表處理 (2)

基本介紹

教學目標

透過 chart.js 套件實作圖表,比較 App 產品的本週與上週活躍使用者資訊。

使用教學

chart.html

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script src="http://library.leoyeh.me/js/jquery/jquery-1.11.1.min.js"></script>
<script src="http://library.leoyeh.me/js/chart/chart.min.js"></script>
</head>
<body>
<canvas id="chart" width="600px"></canvas>
<script>
var ctx = $("#chart").get(0).getContext("2d");
var data = {
labels: ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"],
datasets: [
{
label: "上週活躍使用者",
fillColor: "rgba(220,220,220,0.2)",
strokeColor: "rgba(220,220,220,1)",
pointColor: "rgba(220,220,220,1)",
pointStrokeColor: "#fff",
pointHighlightFill: "#fff",
pointHighlightStroke: "rgba(220,220,220,1)",
data: [18000, 16500, 15900, 15600, 15500, 14000 , 18100]
},
{
label: "本週活躍使用者",
fillColor: "rgba(151,187,205,0.2)",
strokeColor: "rgba(151,187,205,1)",
pointColor: "rgba(151,187,205,1)",
pointStrokeColor: "#fff",
pointHighlightFill: "#fff",
pointHighlightStroke: "rgba(151,187,205,1)",
data: [ 18600, 12800, 14800, 14000, 12700, 17000, 19000]
}
]
};
var chart = new Chart(ctx).Line(data);
</script>

</body>
</html>

用瀏覽器開啟 chart.html 檔案進行測試。

相關資源