pm2, node的程序(進程)管理工具, 使用與教學

今天的東東叫pm2, pm2是node的一個可監控程序的工具, 不多廢, 進主題

進行全域安裝
workspace npm install pm2 -g                                                                                                                           
/home/cabox/.nvm/versions/node/v5.2.0/bin/pm2 -> /home/cabox/.nvm/versions/node/v5.2.0/lib/node_modules/pm2/bin/pm2                                       
/home/cabox/.nvm/versions/node/v5.2.0/bin/pm2-dev -> /home/cabox/.nvm/versions/node/v5.2.0/lib/node_modules/pm2/bin/pm2-dev                               
/home/cabox/.nvm/versions/node/v5.2.0/bin/pm2-docker -> /home/cabox/.nvm/versions/node/v5.2.0/lib/node_modules/pm2/bin/pm2-docker                         
/home/cabox/.nvm/versions/node/v5.2.0/bin/pm2-daemon -> /home/cabox/.nvm/versions/node/v5.2.0/lib/node_modules/pm2/bin/pm2-daemon                         
/home/cabox/.nvm/versions/node/v5.2.0/bin/pm2-runtime -> /home/cabox/.nvm/versions/node/v5.2.0/lib/node_modules/pm2/bin/pm2-runtime                       
/home/cabox/.nvm/versions/node/v5.2.0/lib                                                                                                                 
`-- pm2@2.5.0                                                                                                                                             
                                                                                                                                                          
npm WARN optional Skipping failed optional dependency /pm2/chokidar/fsevents:                                                                             
npm WARN notsup Not compatible with your operating system or architecture: fsevents@1.1.2                                                                 
➜  workspace          
YA裝好了, 目前安裝的是2.5.0版本

如何使用它
進入到你的node app資夾, 一般情況下都是執行npm start啟動你的node app
start的內容多半是指定在package.json裡, 可以去看就道了, 如果你的啟動是index.js
那就是...
bk git:(master) pm2 start index.js                                                                                                                     
[PM2] Starting /home/cabox/workspace/bk/index.js in fork_mode (1 instance)                                                                                
[PM2] Done.                                                                                                                                               
┌──────────┬────┬──────┬──────┬────────┬─────────┬────────┬─────┬───────────┬──────────┐                                                                  
 App name  id  mode  pid   status  restart  uptime  cpu  mem        watching                                                                   
├──────────┼────┼──────┼──────┼────────┼─────────┼────────┼─────┼───────────┼──────────┤                                                                  
 index     0   fork  9660  online  0        0s      0%   13.3 MB    disabled                                                                   
└──────────┴────┴──────┴──────┴────────┴─────────┴────────┴─────┴───────────┴──────────┘                                                                  
 Use `pm2 show ` to get more details about an app  
瞧, 有了! 這樣就開始被監控了, 然後你的app 也啟動了

也是可以將App name命名, 如
bk git:(master) pm2 start index.js --name myapp                                                                                                        
[PM2] Spawning PM2 daemon with pm2_home=/home/cabox/.pm2                                                                                                  
[PM2] PM2 Successfully daemonized                                                                                                                         
[PM2] Starting /home/cabox/workspace/bk/index.js in fork_mode (1 instance)                                                                                
[PM2] Done.                                                                                                                                               
┌──────────┬────┬──────┬───────┬────────┬─────────┬────────┬─────┬───────────┬──────────┐                                                                 
 App name  id  mode  pid    status  restart  uptime  cpu  mem        watching                                                                  
├──────────┼────┼──────┼───────┼────────┼─────────┼────────┼─────┼───────────┼──────────┤                                                                 
 myapp     0   fork  10014  online  0        0s      0%   13.4 MB    disabled                                                                  
└──────────┴────┴──────┴───────┴────────┴─────────┴────────┴─────┴───────────┴──────────┘                                                                 
 Use `pm2 show ` to get more details about an app 
瞧, 有了! 己變成myapp, 然後你的app 也啟動了, 去看看吧
(app啟動無圖) XD

接下來看看監控的dashboard
bk git:(master) pm2 monit       
會出現下列
Process list ─────────────────────────────┐┌─ Global Logs ───────────────────────────────────────────────────────────────────────────────────────────┐ 
[ 0] myapp     Mem:  44 MB    CPU:  0 %  on │ myapp > Executing (default): SELECT `id`, `title`, `body`, `noteday`, `createdAt`, `updatedAt`,         │ 
                                            │ `ProfileId` FROM `Notes` AS `Note`;                                                                     │ 
                                            │ myapp > Executing (default): SELECT `id`, `email`, `password`, `createdAt`, `updatedAt` FROM            │ 
                                            │ `Accounts` AS `Account`;                                                                                │ 
                                            │                                                                                                         │ 
                                            │                                                                                                         │ 
                                            │                                                                                                         │ 
                                            │                                                                                                         │ 
                                            │                                                                                                         │ 
                                            │                                                                                                         │ 
                                            │                                                                                                         │ 
                                            │                                                                                                         │ 
                                            │                                                                                                         │ 
                                            │                                                                                                         │ 
                                            │                                                                                                         │ 
                                            │                                                                                                         │ 
                                            │                                                                                                         │ 
                                            │                                                                                                         │ 
                                            │                                                                                                         │ 
                                            │                                                                                                         │ 
                                            │                                                                                                         │ 
                                            │                                                                                                         │ 
                                            │                                                                                                         │ 
                                            │                                                                                                         │ 
                                            │                                                                                                         │ 
                                            │                                                                                                         │ 
                                            │                                                                                                         │ 
                                            │                                                                                                         │ 
                                            │                                                                                                         │ 
                                            │                                                                                                         │ 
                                            │                                                                                                         │ 
└────────────────────────────────────────────┘└─────────────────────────────────────────────────────────────────────────────────────────────────────────┘ 
┌─ Custom metrics (http://bit.ly/code-metric─┐┌─ Metadata ──────────────────────────────────────────────────────────────────────────────────────────────┐ 
│ Loop delay                         0.47ms  ││ App Name              myapp                                                                             │ 
│                                            ││ Restarts              0                                                                                 │ 
│                                            ││ Uptime                14m                                                                               │ 
│                                            ││ Script path           /home/cabox/workspace/bk/index.js                                                 │ 
│                                            ││ Script args           N/A                                                                               │ 
│                                            ││ Interpreter           node                                                                              │ 
│                                            ││ Interpreter args      N/A                                                                               │ 
│                                            ││ Exec mode             fork                                                                              │ 
│                                            ││ Node.js version       5.2.0                                                                             │ 
│                                            ││ watch & reload        ?                                                                                 │ 
└────────────────────────────────────────────┘└─────────────────────────────────────────────────────────────────────────────────────────────────────────┘ 
瞧, 是不是, 監控畫面開啟了

如何停止它
workspace pm2 stop myapp                                                                                                                               
[PM2] Applying action stopProcessId on app [myapp](ids: 0)                                                                                                
[PM2] [myapp](0) ✓                                                                                                                                        
┌──────────┬────┬──────┬───────┬─────────┬─────────┬────────┬─────┬───────────┬──────────┐                                                                
 App name  id  mode  pid    status   restart  uptime  cpu  mem        watching                                                                 
├──────────┼────┼──────┼───────┼─────────┼─────────┼────────┼─────┼───────────┼──────────┤                                                                
 myapp     0   fork  0      stopped  0        0       0%   0 B        disabled                                                                 
 myapp2    1   fork  10826  online   0        2m      0%   24.2 MB    disabled                                                                 
└──────────┴────┴──────┴───────┴─────────┴─────────┴────────┴─────┴───────────┴──────────┘                                                                
 Use `pm2 show ` to get more details about an app                                 
瞧, myapp己停止了

如何刪除它
workspace pm2 delete myapp                                                                                                                             
[PM2] Applying action deleteProcessId on app [myapp](ids: 0)                                                                                              
[PM2] [myapp](0) ✓                                                                                                                                        
┌──────────┬────┬──────┬───────┬────────┬─────────┬────────┬─────┬───────────┬──────────┐                                                                 
 App name  id  mode  pid    status  restart  uptime  cpu  mem        watching                                                                  
├──────────┼────┼──────┼───────┼────────┼─────────┼────────┼─────┼───────────┼──────────┤                                                                 
 myapp2    1   fork  10826  online  0        11m     0%   22.7 MB    disabled                                                                  
└──────────┴────┴──────┴───────┴────────┴─────────┴────────┴─────┴───────────┴──────────┘                                                                 
 Use `pm2 show ` to get more details about an app       
瞧, myapp己被刪了

不再用它時

好了, 關閉pm2的監控吧
bk git:(master) pm2 kill                                                                                                                               
[PM2] Stopping PM2...                                                                                                                                     
[PM2] Applying action deleteProcessId on app [all](ids: 0)                                                                                                
[PM2] [myapp](0) ✓                                                                                                                                        
[PM2] All processes have been stopped and deleted                                                                                                         
[PM2] PM2 stopped                                                 

workspace pm2 list                                                                                                                                     
[PM2] Spawning PM2 daemon with pm2_home=/home/cabox/.pm2                                                                                                  
[PM2] PM2 Successfully daemonized                                                                                                                         
┌──────────┬────┬──────┬─────┬────────┬─────────┬────────┬─────┬─────┬──────────┐                                                                         
 App name  id  mode  pid  status  restart  uptime  cpu  mem  watching                                                                          
└──────────┴────┴──────┴─────┴────────┴─────────┴────────┴─────┴─────┴──────────┘                                                                         
 Use `pm2 show ` to get more details about an app              
瞧, 己經沒有app被監控了

收工, 今天就介紹到這兒吧, 下次再做進階的應用, 881~





Read More

GitBook的本機環境與應用的產出

線上文件是一種顛覆本機工作的產物,哈!今天來玩玩GitBook的文件產出XD
這篇不是新手文章,是新手的請確認你己會使用gitbook
直接進主題:

確定己經安裝了gitbook-cli還沒裝的快去裝XD, 這個套件可以讓我們的gitbook文件產出
HTML 文件
ePub 電子書
Kindle 電子書
製作 PDF 電子書

今天的例子是HTML文件
先切換像到你的gitbook目錄位置, 執行終端指令
開啟.gitignore檔查看

# Node rules:
## Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
.grunt

## Dependency directory
## Commenting this out is preferred by some people, see
## https://docs.npmjs.com/misc/faq#should-i-check-my-node_modules-folder-into-git
node_modules

# Book build output
_book

# eBook build output
*.epub
*.mobi
*.pdf

如果沒有上面這段就自己打吧XD

若在本地看gitbook命令列輸入:
gitbook serve
它預設會開啟 localhost:4000


若要產生html靜態檔案, 命令列輸入:
gitbook fulid --output=/site/mybook


然後...

登登 success
來去目錄查看一下吧

有了之後, 直接去打開index.html吧GO~~

YA~有嘍~大功告成, 美觀又漂亮XD

收工! (握拳


Read More

hello react

不廢話, 在hello-react之前, 先去把環境設定好吧
什麼環境? 就是可以run react的環境啦...
比如安裝nodejs, live-server, gulp, gulp-livereload, 等等的,  請看這裡...好吧, 我真的很懶XD

Read More

玩玩 jsbin.com

好用的jsbin,http://jsbin.com是一套前端的編輯工具線上,可在撰寫前端程式碼,然後可即時反應,也不用自己F5,XD

開始玩一下吧


在JavaScript區塊中來個JSON如下,完成JSON後,再按CTRL+S,進行存檔
{ 

"name": "jsbin",
"age": 99,
"birthday": "1988/02/02",
"mails": {"home": "hotmail@mail.com", "work": "yahoo@mail.com"},
"phones": {"mobile": "0923456789", "home": "048353868" }

}



將網址列的URL記下來,等一下會用到


再開一個新的jsbin,在JavaScript區塊中來個一段如下

$.ajax({
url: 'http://jsbin.com/dijeyodote/2/edit?js',
dataType: 'json',
success: function(data) {

var json_str=JSON.stringify(data);
var json = JSON.parse(json_str);
alert(json.phones.mobile);

}

});


完成,顯示JSON的mobile值


好,收工 XD


Read More

ALTER TABLE on ADD, ALTER, DROP column_name

常用的表格欄位新增異動語法 MS SQL
--加欄位ADD column
ALTER TABLE my_table_name ADD my_column_name nvarchar(50)

--異動資料類型ALTER COLUMN
ALTER TABLE my_table_name ALTER COLUMN my_column_name nvarchar(50)

--移除欄位DROP COLUMN
ALTER TABLE my_table_name DROP COLUMN my_column_name

Read More

JSON.parse(), 將字串JSON物件

JSON.parse(), 將字串JSON物件


//JSON string
var json_str = '{"name":"jsbin","age":99,"birthday":"1988/02/02"';
json_str.concat(',"mails":{"home":"hotmail@mail.com","work":"yahoo@mail.com"}');
json_str.concat(',"phones":{"mobile":"0923456789","home":"048353868"}}');

//轉JSON物件
var json = JSON.parse(json_str);
alert(json.mails.home);

收工

Read More

JSON.stringify(), JSON資料轉字串

JSON.stringify(), JSON資料轉字串


//JSON資料
var data = {
"name": "jsbin",
"age": 99,
"birthday": "1988/02/02",
"mails": {"home": "hotmail@mail.com", "work": "yahoo@mail.com"},
"phones": {"mobile": "0923456789", "home": "048353868" }
}

//轉字串
var json_str = JSON.stringify(data);
alert(json_str);

JSON.parse(), 將字串JSON物件


//JSON string
var json_str = '{"name":"jsbin","age":99,"birthday":"1988/02/02"';
json_str.concat(',"mails":{"home":"hotmail@mail.com","work":"yahoo@mail.com"}');
json_str.concat(',"phones":{"mobile":"0923456789","home":"048353868"}}');

//轉JSON物件
var json = JSON.parse(json_str);
alert(json.mails.home);

收工

Read More

Python Dictionary, 字典的應用

dictionary, 字典是指有一組以上的 key 與 value 所組成不多說, 直接展示吧...

"""建立hi_dict的dictionary"""

hi_dict = {'name': '王小明', 'age': 25, 'mail': 'sample@gmail.com'}

"""取得某key的值"""

print hi_dict.get('name')
"""或"""
print hi_dict['name']

"""加入一組 key 與 value"""
add_dict = {'blog','http://myblog.com'}
hi_dict.update(add_dict)
"""或"""
hi_dict.update({'blog','http://myblog.com'})

"""移除一組 key 與 value"""
hi_dict.pop('blog') """若key 'blog' 不存在時會回傳, KeyError: 'bolg' 訊息"""


"""複製dict"""
hi_dict2=hi_dict.copy()



Read More