發表文章

目前顯示的是 4月, 2012的文章

Node.js package : forever

forever為一套node.js維運套件 透過監控程式健康狀態來管理node.js程式,並在異常關閉時候重新啓動您的程式,這樣就不用怕程式因為沒有handle的exception導致異常關閉時候不能提供服務拉! forever的安裝與使用相當簡單: 1.首先,安裝forever套件(當然,您需要先有node.js與npm套件拉!),其中 -g 很重要,因為您必須要安裝到系統目錄,才能夠支援在任何環境下啟動forever程式 # npm install forever -g 2.使用forever管理您的node.js程式: (這邊假設我們建立了一個express專案,app.js的路徑是/tmp/TestPrj/app.js) 啟動您的node.js程式: forever start [node.js application path] # forever start /tmp/TestPrj/app.js  info:   Forever processing file: /tmp/TestPrj/app.js 檢視已啓動的forever程式(就是您使用forever啓動的node.js程式): forever list # forever list info:   Forever processes running data:       uid  command script              forever pid   logfile                          uptime         data:   [0] P0Fa node    /tmp/TestPrj/app.js 50062   50079 /Users/simonsu/.forever/P0Fa.log 0:1:49:10.335  關閉已啓動的Node程式: forever stop [forever process id] # forever stop 0 info:   Forever stopped process: data:       uid  command script              forever pid   logfile      

JavaScript: use strict

在Perl與JavaScript甚至Node.js中有發現 use strict的存在... 引用網友的說明: use strict是ECMA-262 Edition 5定義的新語法,表示要用嚴格的Javascript語法來執行,有一些過去慣用的寫法就會出錯,例如使用變數前沒有用var宣告。 use strict主要是影響他所在的scope,如果在函數中使用,並不會讓global scope以及其他未使用的函數變成use strict。 給大家參考∼

Express Error: connect.cookieParser("secret") required for security when using sessions

注意到了嗎?最近expressjs升版了,目前版本是Express 3.0.0 Alpha1 # npm list express npm WARN ls doesn't take positional args. Try the 'search' command /root ├── ejs@0.7.1  ├─┬ express@3.0.0alpha1  │ ├── commander@0.5.2  │ ├─┬ connect@2.1.2  │ │ ├── crc@0.1.0  ....   │ └── semver@1.0.13    ├── sprintf@0.1.1    └─┬ ssh-agent@0.1.0      └── ctype@0.5.0  但是使用了新的版本,執行上卻出現不明的Exception... 仔細檢查與舊版本間的差異...發現2.x跟3.x的版本有不少地方不一樣 直覺下做了幾個測試: 1. 2.x執行3.x所產生程式碼....無法執行,3.x的一些宣告2.x不認得,應該是function有做過修改... # node app.js  node.js:201         throw e; // process.nextTick error, or 'error' event on first tick               ^ TypeError: object is not a function     at Object.CALL_NON_FUNCTION (native)     at Object.<anonymous> (/root/TestPrj2/app.js:10:11)     at Module._compile (module.js:441:26)     at Object..js (module.js:459:10)     at Module.load (module.js:348:31)     at Function._load (module.js:308:12)     at Array.0 (module.js:479:10)     at EventEmitter._tickCallback (node.js:1
引用Cisco說明Bandwidth與Throughput的影片,供大家參詳這兩個字!

Auto install Node.js in SmartOS

許多時候,在IaaS上面生一臺機器,部署一臺機器 裝到最後都懶了... 以Node.js安裝在Joyent SmartOS上為例 下面是一個自動安裝並設定環境變數的script 透過自動安裝的腳本 您就可以....執行,然後去睡覺拉:D # cat prepareNode.sh  #!/bin/bash echo "Prepare the compile environment..." pkgin search gmake | grep gmake | awk '{print $1}' > /tmp/node.install pkgin search gcc | grep gcc | awk '{print $1}' >> /tmp/node.install pkgin search python | grep python27 | awk '{print $1}' >> /tmp/node.install for name in `cat /tmp/node.install`  do         echo 'Installing ' $name         pkgin -y install $name done   echo "Download Node source..." wget http://nodejs.org/dist/v0.6.14/node-v0.6.14.tar.gz tar -xzf node-v0.6.14.tar.gz cd node-v0.6.14 ./configure --prefix=$HOME/node make && make install echo "export PATH=$HOME/node/bin:$PATH" >> ~/.bashrc echo "Done!!" 附註:上面是以SmartOSPlus 64為安裝實例,該SmartMachine上安裝Node.js基本上缺少gmake, gcc++, python等套件,不同的SmartMachine版本可能會因預載套件不同而

Node.js mail module

之前介紹過node.js的一個mail module 但是當嘗試寄送html base的信件時候 發現支援有些問題....冏 這邊介紹另一個好用的套件nodemailer 安裝:npm install nodemailer 這邊直接將nodemailer包裝一下,使用者可以稍加修改後給專案使用 自製module: (file: sendMyMail.js) var nodemailer = require("nodemailer"); var smtpTransport = nodemailer.createTransport("SMTP",{         service: "Gmail",         auth: {             user: " my_mail@gmail.com ",             pass: "**password**"         } }); var mailOptions = {       from: "MyMail < my_mail@gmail.com >", // sender address       to: " receiver@mycompany.com ", // list of receivers       subject: "Hello", // Subject line       text: "Hello world ", // plaintext body       html: "<h1>MAIL...</h1><br/><b>Hello world </b>" // html body } exports.sendNodeMail = function(receivers, subject, msg) {   mailOptions.to = receivers;   mailOptions.subject = subject;

Node.js connect MySQL example

Node.js中連線MySQL相當方便(相信連線其他資料庫也差不多吧!) 這邊以三個步驟介紹撰寫MySQL撈資料的standalone程式 步驟如下: 步驟1. node mysql package npm install mysql 步驟2. db configure $ vi mysql-config.js var db_options = {     host: ' your.database.address ',     port: your_database_port ,     user: ' access_database_name ',     password: ' access_database_password ',     database: ' database_that_will_be_use ' }; var mysql = new require('mysql'), db = null; if(mysql.createClient) {     db = mysql.createClient(db_options); } else {     db = new mysql.Client(db_options);     db.connect(function(err) {         if(err) {             console.error('connect db ' + db.host + ' error: ' + err);             process.exit();         }     }); } exports.db = db; 步驟3. simple query $ vi mysql-example.js var config = require('./mysql-config')   , db = config.db; exports.doit = function() { //Query  db.query(' SELECT * FROM SOME_TABLE ', function(err, rows,

Node.js proxy server example

一個非常囋,卻非常短的Node.js範例 給大家參考: http://www.catonmat.net/http-proxy-in-nodejs/

想上雲端?先換腦袋! << WIRED.tw

好文分享… http://wired.tw/2012/04/10/change-cloud-computing/index.html

AWS first node.js express project

圖片
本篇重點不是在於使用express或是node.js建立web server... 而是在建立了express project之後,server也起來了...但是卻連不上線的問題... [ec2-user@ip-10-166-202-213 ~]$ npm install express ejs mail mysql npm http GET https://registry.npmjs.org/express npm http GET https://registry.npmjs.org/ejs npm http GET https://registry.npmjs.org/mail ...(Skip) [ec2-user@ip-10-166-202-213 ~]$ express TestPrj    create : TestPrj    create : TestPrj/package.json    create : TestPrj/app.js    create : TestPrj/public    create : TestPrj/public/javascripts    create : TestPrj/public/images    create : TestPrj/public/stylesheets    create : TestPrj/public/stylesheets/style.css    create : TestPrj/routes    create : TestPrj/routes/index.js    create : TestPrj/views    create : TestPrj/views/layout.jade    create : TestPrj/views/index.jade    dont forget to install dependencies:    $ cd TestPrj && npm install [ec2-user@ip-10-166-202-213 ~]$ cd TestPrj/ [ec2-user@ip-10-166-202-213 TestPrj]$ npm install npm http GET https://registr

簡單的CPU Benchmark

一個透算圓周率的Benchmark方式,簡單又方便 參考考站: http://www.linuxidc.com/Linux/2009-06/20495.htm 調用一些該網站的說明... time是计时程序。scale是精度,4*a(1)调用了反正切函数。由三角函数我们知道1的反正切是pi/4, pi=4* pi/4。 -l -q参数的意思请参照manpage。这一行其实就是让bc计算1的反正切,计算精度是5000位。 下面是來自Mac一代AIR的結果: $ time echo "scale=5000; 4*a(1)" | bc -l -q 3.141592653589793238462643383279502884197169399375105820974944592307\ 8164062862089986280348253421...(skip)... 3081770367515906735023507283540567040386\ 74351362222477158915049530984448933309634087807693259939780541934144\ 73774418426312986080998886874132604720 real 1m11.582s user 1m4.084s sys 0m0.404s

Install Node.js in AWS m1 server

如果有人看上AWS m1 instance上的免費750小時服務,又想要玩Node.js的 下面是安裝步驟,給大家參考: 下載node原始碼,並解壓縮 安裝Compile必要套件: 安裝gcc++ 安裝openssl-dev 安裝make 編譯node.js原始碼(我喜歡編譯到$HOME/node目錄,再到~/.bash_rc增加PATH設定即可) 以下是執行過程(紅色部分是指令,藍色部分是我選擇的套件): [ec2-user@ip-10-166-202-213 ~]$ wget http://nodejs.org/dist/v0.6.14/node-v0.6.14.tar.gz --2012-04-06 14:49:49--   http://nodejs.org/dist/v0.6.14/node-v0.6.14.tar.gz 正在查找主機 nodejs.org... 8.12.44.238 正在連接 nodejs.org |8.12.44.238|:80... 連上了。 已送出 HTTP 要求,正在等候回應... 200 OK 長度: 10742747 (10M) [application/octet-stream] Saving to: `node-v0.6.14.tar.gz' 100%[======================================================================================>] 10,742,747  28.9M/s   in 0.4s     2012-04-06 14:49:50 (28.9 MB/s) - `node-v0.6.14.tar.gz' saved [10742747/10742747] [ec2-user@ip-10-166-202-213 ~]$ tar -xzf node-v0.6.14.tar.gz  [ec2-user@ip-10-166-202-213 ~]$ cd node-v0.6.14 [ec2-user@ip-10-166-202-213 node-v0.6.14]$ yum search gcc Loaded plugins: fastestmirror, priorities, sec

Javascript同名函式

Javascript有別於一般物件導向程式語言的一個特色包含Javascript在同名函式的部分處理不同,物件導向語言中可以使用同名函式,並且以參數之型態與數量來判別真正要使用的函式,但Javascript則不然... 「 The arguments array- the secret to robust functions 」中有針對Javascript的函式名稱定義做一些說明,因為 Javascript函數的參數傳遞採用陣列方式(arguments array),傳入參數的個數可用arguments.length取得,而同名的函式反而在呼叫上有會出乎意料... /* file:  000-duplicateFun.js  */ function foo(x) {     console.log('Now call X!! x=' + x); } function foo(x,y) {     console.log('Now call XY!! x=' + x); } foo('a'); 執行結果: $ node 000-duplicateFun.js  Now call XY!! x=a 發現了嗎,foo(x)函式被忽略了!

jQuery由iframe內操作父視窗之物件

感謝Benson大提供! 由iframe中操作父視窗中的物件: $("#父窗口元素ID",wi ndow.parent.doc ument).method(); ex: $("#CaseDes",wi ndow.parent.doc ument).html('成功 了!!!');

Ssh初次連線忽略know_hosts詢問

連線新的SSH Client時會因為~/.ssh/know_hosts中無key存在,而會詢問 $ ssh root@my.ip_address The authenticity of host 'my.ip_address (my.ip_address)' can't be established. RSA key fingerprint is 2f:64:60:3b:01:54:31:d7:68:f1:ca:50:ee:2a:5c:43. Are you sure you want to continue connecting (yes/no)? 這時沒有回答yes還真的不給你連線...@@ 這在需要自動延展新的server時候,如果遇到這樣的問題...就麻煩拉! 下面有兩個可以避開know_hosts的詢問: 1.連線時候加上參數“-o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no” ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no username@ip_adreess 2.修改/etc/ssh/ssh_config檔案,打開StrictHostKeyChecking,並設定為no # Host * #   ForwardAgent no #   ForwardX11 no #   PubkeyAuthentication yes #   PasswordAuthentication yes #   FallBackToRsh no #   UseRsh no #   BatchMode no #   CheckHostIP yes     StrictHostKeyChecking no #   EscapeChar ~

Shell - Detect a file is exist or not...

非常常用的一個小範例: 檢查某個資料檔案是否存在 #!/bin/bash if [ -e /tmp/abc ] ; then         echo "Y..." else         echo "N..." fi