跳到主要內容

發表文章

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

MySQL Tables

轉載自網友的文章(這裡),說明了MySQL各種資料表的特性: 另外一比較MySQL資料表的文章也有詳細的比較。
MyISAM : 1.效能優,預設引擎,為 Mysql最早使用的引擎2.使用MyISAM將具備三種 檔案:        .frm (table format)  .MYD(data file)  .MYI(index file)3.所有資料是以low byte first儲存,數字型key是以high byte first儲存以利索引4.支援大檔 ( > 63 bit)5.支援42億(2^32次方) 資料筆數,如果MySQL編譯有加入--with-big-tables 選項可支援多一倍(2^32次方 * 2)資料量6.不支援事務處理,例如關聯式 資料庫7.AUTO_INCREMENT 更快(至少10%),序列的值被刪除之後就不能再利用InnoDB:1.具備Commit, Rollback和當掉復原的事務處理能力,可保護使用者資料2.可進行row-level的 鎖定同時維持nonlocking reads,以支援多人同時連線狀態3.可支援FOREIGN KEY4.InnoDB是專門為了大容 量資料的最大效率進行設計的,CPU效能是其他的disk-based資料庫引擎所不及的5.InnoDB儲存他的表和 index在一個表空間中,此表空間可能包含幾個檔(有可能在不同disk partitions),此點和MyISAM不同,MyISAM是一個表一個檔案,這差一點造成InnoDB表個可以非常大,即使是超過系統的file size(例如2GB)都可處理6.此為Windows安裝檔的 默認值7.InnoDB上可處理存儲超 過1TB的數據,可支援例如平均每秒800次插入/更新的負荷8.支援關聯資料庫InnoDB使用上的限制: 1.不要將MyISAM轉成InnoDB table2.不要在NFS格式上將 InnoDB設定成data files或log file,檔案容易被鎖住3.一個表不能包含超過1000 欄

Node.js get url parameters...

在Node.js中定義查詢路徑後,常會用到從url取值得問題,下面介紹取值的方式:router中定義網址路徑,並可以用":"的方式帶入動態參數作執行參考 app.get('/query/:id', mymodule.querySomething);
REST用法取URL參數值: var param = req.params.[key];直接取REST方式的值,以上面router來說,http://localhost:3000/query/100可以取到id這個參數的值[id=100]
Parameter用法取URL參數值: var url_parts = url.parse(req.url, true);
var query = url_parts.query;
console.log(query); //{Object}
console.log(query.xx); //{Object}取用url參數值,如查詢url為http://localhost:3000/qyery?pk=1000,則可以取到值{pk:1000}

Shell Script Cache PID

Shell中擷取上一個執行指令的PID可以使用: $!
而如果需要擷取執行當下shell本身的PID可以使用:$$
範例: #!/bin/bash
find . -name *.log -print > /tmp/log.txt &
# show the find pid
echo $! 
# show this shell's pid
echo $$

Node.js print object to JSON string

Node裡面可以用JSON這個物件的stringify方法作物件的輸出: JSON.stringify(obj)
而如果要show在頁面上 <%= JSON.stringify(obj) %> 或 <%- JSON.stringify(obj) %>
差別在原始碼中,如果使用<%= ... %>則會經過一個轉譯的動作,例如 " 會換成 &quot; 而使用<%- ... %>則不會有任何轉換動作 雖然在頁面上看起來都一樣,但是如果當作REST的輸出,就會有很大的差異喔!
ex: <%- JSON.stringify(obj) %> HTML原始碼: {"prop1":"value1","prop2":5}
<%= JSON.stringify(obj) %> HTML原始碼: {&quot;prop1&quot;:&quot;value1&quot;,&quot;prop2&quot;:5}

Node.js using express

1. 安裝express npm install express
2. 安裝ejs npm install ejs
3. 專案模組複製:此動作是希望將專案中會用到的模組存放在專案中,避免環境的變異造成專案執行上的異常 npm install (於專案資料匣下執行此指令)
4. 建立專案(Project_Name為專案名稱) express Project_Name 執行結果: $ express ExpressPrj
   create : ExpressPrj
   create : ExpressPrj/package.json
   create : ExpressPrj/app.js
   create : ExpressPrj/views
   create : ExpressPrj/views/layout.jade
   create : ExpressPrj/views/index.jade
   create : ExpressPrj/routes
   create : ExpressPrj/routes/index.js
   create : ExpressPrj/public
   create : ExpressPrj/public/stylesheets
   create : ExpressPrj/public/stylesheets/style.css
   create : ExpressPrj/public/javascripts
   create : ExpressPrj/public/images
   dont forget to install dependencies:
   $ cd ExpressPrj && npm install
4. 上面指令完成後,會產生一個以剛剛給定的名稱的資料匣,express預設以jade作為view engine,在此需要修改一些設定方可使用express之ejs作為view engine,目前專案的檔案結構說明如下: app.js: 實際主程式進入點package.json: 專案定義檔,含一些版本資訊public: 置放靜態檔案處,如javascript, css, image, html檔案等資料view: view engine主要讀取資料匣,包含jade的頁面程式,簡單說就是node.js的se…