在 Express 下使用 Redis 來存 Session

加上 Dependent Package

在 package.json 中加入 “connect-redis”

修改 app.js

1
2
3
4
var RedisStore = require('connect-redis')(express);
var sessionStore = new RedisStore({ttl: 1800}); // ttl 是 Expire 的秒數

app.use(express.session({ key: 'abcde', secret: 'WoW LoL', store: sessionStore}));

預設會自動連 localhost 的 Redis

可參考 express-redis-session

visionmedia/connect-redis

在 GitHub 上使用 Git-flow

git-flow 是由 Vincent Driessen 這位老兄建立的 Git 分支管理的工作模式,詳細介紹可參考 A successful Git branching model,現在就來看看如何把 git-flow 的開發模式帶進 GitHub 中吧。

在 Ubuntu 中安裝 git-flow
1
$ apt-get install git-flow
初始化一個新的 Repository 並將其命名為 fakerepo
1
2
$ git init fakerepo
$ cd fakerepo
在 Repository 中初始化 git-flow,git-flow 會問你要不要換 Branch 的名稱,這邊都 follow 預設名稱,一直按 Enter 就行了
1
2
3
4
5
6
7
8
9
10
11
$ git flow init
No branches exist yet. Base branches must be created now.
Branch name for production releases: [master]
Branch name for "next release" development: [develop]

How to name your supporting branch prefixes?
Feature branches? [feature/]
Release branches? [release/]
Hotfix branches? [hotfix/]
Support branches? [support/]
Version tag prefix? []
檢查 Branch 是否都有被成功建立出來
1
2
3
4
5
6
7
8
9
10
11
$ git branch
* develop
  master
$ git config -l | grep gitflow
gitflow.branch.master=master
gitflow.branch.develop=develop
gitflow.prefix.feature=feature/
gitflow.prefix.release=release/
gitflow.prefix.hotfix=hotfix/
gitflow.prefix.support=support/
gitflow.prefix.versiontag=
把剛建好的 Repository 送上 GitHub
1
2
3
4
5
6
7
8
9
$ git remote add origin https://github.com/shyuan/fakerepo.git
$ git push --set-upstream origin develop
To https://github.com/shyuan/fakerepo.git
 * [new branch]      develop -> develop
Branch develop set up to track remote branch develop from origin.
$ git push --set-upstream origin master
To https://github.com/shyuan/fakerepo.git
 * [new branch]      master -> master
Branch master set up to track remote branch master from origin.
檢查 Branch
1
2
3
4
5
6
$ git branch
* develop
  master
$ git branch -r
  origin/develop
  origin/master
其他使用者的操作步驟
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
$ git clone https://github.com/shyuan/fakerepo.git
$ cd fakerepo
$ git branch
* master
$ git branch -r
origin/HEAD -> origin/master
origin/develop
origin/master
$ git flow init
Which branch should be used for bringing forth production releases?
   - master
Branch name for production releases: [master]
Branch name for "next release" development: [develop]

How to name your supporting branch prefixes?
Feature branches? [feature/]
Release branches? [release/]
Hotfix branches? [hotfix/]
Support branches? [support/]
Version tag prefix? []

在 Ubuntu Linux 中安裝 Zsh 及 Oh-my-zsh

直接用 apt-get 安裝 zsh 套件

1
2
3
$ apt-get install zsh
$ zsh --verison
zsh 4.3.17

從 GitHub 下載 oh-my-zsh 套件

1
$ git clone https://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh

如果本來沒有安裝 zsh 可以直接使用 oh-my-zsh 的範例 zshrc

1
$ cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc

看看有什麼 Theme 可以用

1
$ ls ~/.oh-my-zsh/themes

編輯 ~/.zshrc 更換 zsh 的 theme 我自己喜歡用 candy

1
ZSH_THEME="candy"

看看有什麼 Plugin 可以用

1
$ ls ~/.oh-my-zsh/plugins

編輯 ~/.zshrc 啟用 Plugin

1
plugins=(git git-flow debian grails rvm history-substring-search github gradle svn node npm zsh-syntax-highlighting sublime)

下載 zsh-syntax-highlighting plugin

1
2
$ cd ~/.oh-my-zsh/custom/plugins
$ git clone https://github.com/zsh-users/zsh-syntax-highlighting.git

新增自訂 zsh 設定,我會把 alias 和 PATH 的設定放在這邊

1
2
3
4
5
$ cat ~/.oh-my-zsh/custom/xxx.zsh
alias df='df -h'
alias h='htop'

PATH=$PATH:/opt/app/bin/

在 Ubuntu Linux 中安裝 RVM(Ruby Version Manager)

安裝必要套件

1
$ sudo apt-get install bison build-essential libssl-dev

安裝 RVM 環境

1
$ curl -L https://get.rvm.io | bash -s stable

修改 zshrc 讓 zsh 操作 rvm 更方便

1
2
[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" # Load RVM function
plugins=(... rvm ...)

重新開啟 Terminal 讓 zshrc 生效

讓 rvm 列出可以安裝的 ruby 環境

1
$ rvm list known

安裝 Ruby 1.9.3

1
2
3
$ rvm install 1.9.3
$ ruby --version
ruby 1.9.3p194 (2012-04-20 revision 35410) [i686-linux]

透過 NVM 使用 Node.js

第一次聽到 Node.js 這套 Server Side 的 Javascript 開發環境是在 2011 年的三四月份,利用 Chrome 瀏覽器高效能的 V8 Javascript engine,作為運作 Server Side 的核心。 如果你是熟悉 Java 的開發人員,可以將 Node.js 視為一個以 C++ 開發出來的 Javascript 的 Virtual Machine。 Node.js 能擁有極高效能,除了得力於 V8 Engine 之外,Javascript 本身的 Event Base 的開發模式相較於傳統 Server Side 的 Multi-Threading 能更快速地回應 Client 的要求。

如果作業系統是 M$ Windows/Apple Mac,Node.js 的官網有提供安裝套件可以直接安裝。

但因為 Node.js 在目前還是處於快速發展的階段,平均一至兩週會有小版本更新,每兩至三月會有一個主版本 Release ,寫這篇文章的時候,最新的版本是 0.8.2。

就因為版本快速的變化,常常會發生在舊版本正常運作的套件或程式,在升到新版後卻無法正常運作,所以才有了 NVM (Node Version Manager) 來管理 Node.js 的版本。

有了 NVM ,便可以同時安裝多個不同版本的 Node.js ,並且可以很快速的在不同版本之間進行切換。

下面就來介紹要如何安裝 Node.js

直接用 git 下載安裝

1
$ git clone git://github.com/creationix/nvm.git ~/nvm

如果要直接啟用 nvm 可以直接 source 剛剛下載回來的 nvm.sh

1
$ source ~/nvm/nvm.sh

讓每次登入時直接載入 NVM ,把以下的判斷加入 Shell 的 RC

1
[[ -s $HOME/nvm ]] && source $HOME/nvm/nvm.sh

重新啟動一個 Terminal 驗證 NVM 是否能被自動載入

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
$ nvm help            

Node Version Manager

Usage:
     nvm help                    Show this message
     nvm install <version>       Download and install a <version>
     nvm uninstall <version>     Uninstall a version
     nvm use <version>           Modify PATH to use <version>
     nvm run <version> [<args>]  Run <version> with <args> as arguments
     nvm ls                      List installed versions
     nvm ls <version>            List versions matching a given description
     nvm deactivate              Undo effects of NVM on current shell
     nvm alias [<pattern>]       Show all aliases beginning with <pattern>
     nvm alias <name> <version>  Set an alias named <name> pointing to <version>
     nvm unalias <name>          Deletes the alias named <name>
     nvm copy-packages <version> Install global NPM packages contained in <version> to current version
                  
Example:
    nvm install v0.4.12         Install a specific version number
    nvm use 0.2                 Use the latest available 0.2.x release
    nvm run 0.4.12 myApp.js     Run myApp.js using node v0.4.12
    nvm alias default 0.4       Auto use the latest installed v0.4.x version

在 Ubuntu 中必須要先安裝 build-essential 及 libssl-dev 這兩個套件

1
$ apt-get install build-essential libssl-dev

安裝 Node.js 0.8.2

1
2
3
4
5
$ nvm install v0.8.2
...
$ nvm list
v0.8.2
current:    v0.8.2

只要 nvm list 後有看到 current: v0.8.2 就表示安裝成功了

在 zsh 中如果沒有設定 default alias 可能會有執行的問題

1
2
3
4
5
$ node alias default 0.8.2
$ nvm list
v0.8.2
current:    v0.8.2
default -> 0.8.2 (-> v0.8.2)

安裝其他版本的 Node.js ,以 0.6.19 為例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
$ nvm install v0.6.19
...

$ nvm list
v0.6.19   v0.8.2
current:    v0.8.2
default -> 0.8.2 (-> v0.8.2)

$ node --version
v0.8.2

$ nvm use 0.6.19

$ nvm list
v0.6.19   v0.8.2
current:    v0.6.19
default -> 0.8.2 (-> v0.8.2)

$ node --version
v0.6.19

讓 Sudo 不用輸入密碼

對於 sudo 常常問密碼感到麻煩嗎?改一下 /etc/sudoers 設定檔吧!

把你的帳號加到 /etc/group 中
1
sudo:x:27:myAccount
把 NOPASSWD: 加到 /etc/sudoers 的 sudo group 段落
1
2
# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) NOPASSWD: ALL

在 Ubuntu Linux 中安裝 Redis-server

由於在 Ubuntu 中預設套件庫中的 redis-server 版本過於老舊,所以我們透過非官方的 PPA 套件庫來安裝。

從 Chris Lea 的 PPA 安裝 redis-server
1
2
3
$ sudo add-apt-repository ppa:chris-lea/redis-server
$ sudo apt-get update
$ sudo apt-get install redis-server

redis 有提供 CLI 指令進行操作,我們可以利用該指令實驗是否安裝成功

測試 redis-server 是否安裝成功
1
2
3
4
5
$ redis-cli
redis 127.0.0.1:6379> INFO
redis_version:2.4.15
...
...