2013/06/25

複数バージョンのNode.jsを管理

ChangeLog を見ると分かりますが Node.js はバージョン・アップが頻繁に行われるため、これに対応して自身の環境の Node.js をバージョン・アップしていくのは非常に大変な作業です。また、昔作ったアプリを動かしたいので古いバージョンに戻したいといったシーンもあるかもしれません。
そこで複数バージョンのNode.jsを管理したいということになるわけですが、Ruby でそういった仕組ができてたのに端を発し Node.js でも同じようなことが可能になっています。

今回はWindows環境で利用可能な nodist についてインストールから使い方までを纏めようと思います。(なお、この手のツールは他にもあるようなので、調査したらまた記事を書きたいと思います。)

インストール

nodist は GitHub上のこちらのリポジトリで公開されていますので git clone でツールを取得します。
> git clone https://github.com/marcelklehr/nodist.git
次にnodistのルート配下のbinにパスをとおします。 最後にnodistのupdateコマンドを実行し依存するnodistが依存するNPMのライブラリを取得します。
> nodist update
ここまででインストールは完了です。 以下を実行し最新のバージョンが表示されることを確認します。
> nodist -v
0.3.7

Node.jsの管理

インストーラが完了したら Node.js を管理していきます。
まずは、利用可能なバージョンを確認します。
> nodist dist
  0.5.1
  0.5.2
  ~
  0.11.1
  0.11.2
非常にたくさんのバージョンが表示されます。 ここからもリリースが頻繁に行われている様相がうかがえます。 なお、コマンドの省略系でしょうか?以下でも同様の動作をします。
> nodist ds
  0.5.1
  0.5.2
  ~
  0.11.1
  0.11.2
確認できた最新バージョンの Node.js をインストールしてみます。 インストールはaddコマンド、あるいは、+コマンドを利用します。
> nodist add 0.11.2
0.11.2
インストールが完了したので、インストールされている Node.js のバージョンを確認してみましょう。 コマンドはlist、または、lsを利用します。なお、コマンドの指定が無い場合、インストール済みのバージョンが表示されるのでこれも合わせて確認してみましょう。
> nodist list
  0.11.2
> nodist ls
  0.11.2
> nodist
  0.11.2
今度は古いバージョン 0.10.12 をインストールしてみます。
> nodist add 0.10.12
  0.10.12
> nodist
  0.10.12
  0.11.2
ローカル環境に2つのバージョンをインストールできたので、利用するバージョンの切り替えをやってみます。 まず、0.10.12 をアクティベートしてみます。
 > nodist 0.10.12
  0.10.12
たったこれだけです。切り替わっているかを確認するには以下を実行します。
 > node -v
v0.10.12
ちゃんと指定した 0.10.12 が有効になっているのが確認できると思います。 では、今度は 0.11.2 に切り替えてみたいと思います。
 > nodist 0.11.2
  0.11.2
 > node -v
v0.11.2
0.11.2に切り替わっているのが確認できると思います。 

このように簡単にバージョンを切り替えられるのは非常に便利ですね。サーバサイドJavaScriptだけでなく、Node.js 上で動作するgrantやbowerといったJavaScriptの各種ツールが流行っているのでこういったツールは重宝するのではないでしょうか。

2013/06/22

msysGit

msysGitとはWindows環境で利用可能な分散型バージョン管理ツールのGit環境です。
GitHubの盛り上がりによってすっかり定着した感のあるGitですが、Windows環境でも十分な環境が整ってきています。

msysGitは、インストーラが提供されていて導入が簡単で最初にGitを試すにはよい環境だと思います。ただし、Linux環境等で利用されている周辺ツールなどが対応していないなど制約もあります。また、同時にインストールされるCUI環境のGit Bashでは日本語がまともに扱えないのでCUI環境をメインで使いたい方には注意が必要です。
Git自体の日本語の扱いは(主に日本語ファイル名ですが)、以前はとても使えない状態でしたが徐々に改善され、msysgit 1.7.10からUTF-8対応されてWindows環境で日本語ファイル名を使っても問題ない状態になりました。

今回はこのmsysGitのインストールから基本的な利用方法までを紹介したいと思います。

インストール手順

まずはインストーラをダウンロードします。
msysGitは、公式サイトの「Download」リンクをクリックし表示されたダウンロードページからインストーラを入手します。

公式サイト
ダウンロードページが表示されたらとりあえず、一番上に表示されている「Git-1.8.3-preview20130601.exe」をダウンロードすれば問題ないと思います。

Google Code ダウンロードページ


なお、Google Code上で配布されているので直接ダウンロードページにアクセスしても構いません。

ダウンロードが完了したらインストーラを起動します。
以下のウェルカム画面が表示された「Next」ボタンをクリックします。

インストールウィザード ウェルカム画面
ライセンス規約が表示されます。同意する場合は「Next」ボタンをクリックします。

インストールウィザード ライセンス規約
インストール先を指定します。Windows7環境では、「C:\Program Files (x86)\Git」がデフォルトです。基本的に特に変更する必要はないと思いますので、デフォルトのまま「Next」ボタンをクリックします。

インストールウィザード インストール先の選択

インストールするコンポーネントの選択画面です。内容は以下の通りです。
  • Additional icons : アイコンの配置に関する設定
    • In the Quick Launch : クイックランチにアイコンを配置
    • On the Desktop : デスクトップにアイコンを配置
  • Windows Explore integration : エクスプローラのコンテキストメニューとの統合に関する設定
    • Simple context menu (Registry based)
      • Git Bash Here
      • Git GUI Here 
    • Advanced context menu (git-cheetah plugin)
  • Associate .git* configuration files with the dfault text editor : Gitのコンフィグレーションファイルの関連付けに関する設定
  • Associate .sh files to be run with Bash : シェルスクリプトの関連付けに関する設定
  • Use a TrueType font in all console windows (not only for Gi Bash) : フォント設定 -> コマンドプロンプトで使用するフォントが英語フォントに変更されてしまうのでチェックを外す
個人的には必要性を感じないので、すべてチェックを外し「Next」ボタンをクリックします。

インストールウィザード コンポーネント選択
スタートメニューフォルダを選択します。
お好みのフォルダを指定して「Next」ボタンをクリックします。

インストールウィザード スタートメニューフォルダの選択
PATH環境変数の設定を行います。
内容は以下の通りです。
  • Use Git Bash only : Git Bash内でのみGitコマンドへのパスを設定する
  • Run Git from the Windows Command Promp : Git Bashに加えてコマンドプロンプト内でもGitコマンドへのパスを設定する
  • Run Git and included Unix tools from the Windows Command Prompt : Git Bash、コマンドプロンプト内の両方でGitとユニックスツール(コマンド)へのパスを設定する
上から順にWindows環境への影響が大きくなります。最下段の構成だとWindowsの純正コマンドとかぶるコマンド等については直接的に影響するのでお勧めしません。上2つのどちらかを選択しましょう。
私はデフォルトの状態で「Next」ボタンをクリックします。

インストールウィザード PATH環境変数の設定
Gitの改行コードに関連するオプションの指定です。
内容は以下の通りです。
  • Checkout Windows-style, commit Unix-style line endlings : チェックアウト時はWindowsスタイル、コミット時はUnixスタイルに改行コードの変換を行う設定
  • Checkout as-is, commit Unix-style line endings : チェックアウト時はないもしない、コミット時はUnixスタイルに改行コードの変換を行う設定
  • Checkout as-is, commit as-is : チェックアウト時、コミット時ともに変換しない設定
どういう環境で利用するかによって適切な設定は変わります。
私は自分でコントロールしたいので最下段を選択し、「Next」ボタンをクリックします。

インストールウィザード 改行コード設定
インストールが開始されます。

インストールウィザード インストール画面
インストール完了画面が表示されたら「Finish」ボタンをクリックし、インストール完了です。

インストールウィザード インストール完了画面

初期設定

インストール直後にやっておきたい設定に関する説明です。

Git Bash

msysGitのCUI環境を実行するためのシェル環境です。
Linxu系のコマンドが使えて便利なのですが、日本語がうまく扱えないのであまり利用しないかもしれませんが、とりあえずご紹介します。

HOME環境変数に格納されているホームディレクトリ配下にbash設定ファイル「.bashrc」を配置設定することができます。私はとりあえずプンプとの設定ぐらいは行います。

Git

Gitの設定です。
なお、Gitの設定の詳細は別のエントリで書きたいと思います。

UTF-8で日本語ファイル名のファイルをaddやcommitした際にファイル名がコードで表示されてしまうので以下の設定を行います。
git config --global core.quotepath false

前述の通りCUI環境で日本語がまともに扱えないのでGit Bash利用時にvimが開かないようにエディタを指定します。
git config --global core.editor "sakura.exe -CODE=4 -GROUP=9"


Gitではコミット時に名前とメールアドレスが記録されるので設定を行っておきます。
git config --global user.email hoge.piyo@example.jp
git config --global user.name "hoge piyo"


PUSH時にターゲットを指定しない場合のストラテジを設定しておきます。デフォルトでは同名のブランチを全てプッシュしてしまい思いもよらないブランチの変更をPUSHしてしまう可能性があります。(2.0ではsimpleがデフォルトになっています。)

git config --global push.default upstream

なお、push.default として設定可能な値は以下の4種類あります。

  • matching : 現在の(2.0より前のバージョンの)デフォルト値です。カレントでないブランチでも同名のブランチがリモートに存在すればプッシュしてしまう。
  • upstream : カレントに対してupstreamとして指定したブランチに対して名前が違ってもプッシュする。
  • simple : カレントに対して同名のブランチに対してプッシュする。
  • current : カレントに対してupstreamに指定されていなくても同名のブランチがあればプッシュする。
コマンドのエイリアスを設定します。git checkout を git co と短く書けるようになります。

好みで適当に設定してください。大概の操作は TortoiseGit で行うので、そんなに拘る必要はありません。git config --global alias.co checkout git config --global alias.br branch git config --global alias.st status


プロキシ環境下では、次のようにプロキシの設定も行なっておいてください。git config --global http.proxy http://example.jp:8080

とりあえず必要そうな設定はこんなところです。

PATH環境変数

インストールウィザードで設定を行った方は必要ありません。
私は自分でPATH環境変数を構成したいので、別途設定を行います。

gitコマンドが使えればとりあえずいいので、「C:\Program Files (x86)\Git\cmd」をPATH環境変数に加えます。

フロントエンド

msysGitに付属するCUI環境、GUI環境ともに使い易いものではないのでフロントエンドとして別のツールを導入します。

利用するツールはTortoiseGitです。
WindowsのExplore拡張として動作し基本的にすべてGUIで操作します。

まずはインストールです。
google code の TortoiseGit のダウンロードページからインストーラと言語パックをダウンロードします。
上の方に表示されているのがTortoiseGitのバイナリです。使っているPCのCPUアーキテクチャにあったものをダウンロードして下さい。下の方に表示されているのが言語パックです。Japaneseの行のものをダウンロードして下さい。


ダウンロードが完了したらTortoiseGit本体、言語パックの順でインストールを行います。
インストールウィザードが起動したら「Next」ボタンをクリックします。


ライセンス規約が表示されます。同意する場合は、「Next」ボタンをクリックします。


SSHクライアントの選択画面が表示されます。
TortoisePlink を利用しますので、そのまま「Next」ボタンをクリックします。


カスタムセットアップ画面が表示されます。
デフォルトの状態で問題はないと思いますので、「Next」ボタンをクリックします。


インストール確認画面が表示されたら「Install」ボタンをクリックします。


インストールが開始されます。


完了画面が表示されたら「Finish」ボタンをクリックしインストール完了です。


続いて言語パックをインストールします。
ウェルカム画面が表示されたら「Next」ボタンをクリックします。


すぐにインストールが開始されます。


完了画面が表示されたら「Finish」ボタンをクリックしインストールを完了します。


ここまで完了したらエクスプローラを起動します。
コンテキストメニューを表示し下図のようにTortoiseGitのメニューが表示されているのを確認して下さい。


コンテキストメニュー「TortoiseGit」→「Settings」を選択し設定画面を開きます。


メニュー「General」のLanguageで「日本語(日本)」を選択し日本語化します。
ここでいったん「OK」ボタンをクリックし設定を終了します。


サイドコンテキスメニューを表示すると日本語されてのが確認できます。
それでは設定の続きを行うのでサイド設定画面を開きます。



メニュー「一般」→「コンテキストメニュー」を選択します。
エクスプローラのコンテキスメニューのトップに表示するメニューを選択します。
なお、選択しないものはサブメニューとして表示されます。好みに合わせて選択を行ってください。

メニュー「一般」→「拡張メニュー」を選択します。
コンテキストメニューのサブメニューにも表示したくないメニューを選択します。好みに合わせて選択を行ってください。選択してないメニューをShiftを押しながら操作することで表示さることできるので、必要なさそうなものはとりあえずチェックを付けてしまってよいと思います。

メニュー「一般」→「代替エディタ」を選択します。
自分が使い慣れたテキストエディタを登録しておくとよいと思います。

メニュー「差分ビューア」を選択します。
WinMergeなどを利用されている場合は、「異なるリビジョンの比較に使用するプログラムの設定」に登録しておくと便利です。

とりあえずこれぐらい設定しておけば特に不自由はないと思います。

その他の環境

他のWindows上で利用可能なGit環境も紹介しておきます。
  • Cygwin:CUI環境が好みという方はCygwinを利用されるとよいと思います。
  • JGit (フロントはEGit)

2013/06/18

リモートデスクトップを有効にする

「コントロールパネル」→「システムとセキュリティ」→「システム」を選択し以下の画面を表示する。なお、ショートカット「Win + P」でも開くことができます。


画面が表示されたら「リモートの設定」し「システムのプロパティ」画面が表示されます。(リモートタブが表示された状態になっているはずです。)



リモートデスクトップのフィールドセットの「リモート デスクトップを実行しているコンピュータからの接続を許可する(セキュリティのレベルは低くなります)」を選択します。

「Administrator」権限を所有しているユーザを利用している場合は、ここまでのオペレーションでリモートデスクトップによる接続が許可された状態になります。「Administrator」権限を所有していないユーザに対してリモートデスクトップによる接続を許可したい場合は「ユーザの選択」ボタンをクリックします。


「追加」ボタンをクリックします。


「選択するオブジェクト名を入力してください」の入力欄に、リモートデスクトップ接続を許可するユーザーア名を入力し「OK」をクリックします。

2013/06/17

Chromeのメモリ消費

Chromeのメモリ消費状況はアドレスバーに『chrome://memory-redirect/』を入力すると専用の画面が表示され確認することができる。

2013/06/12

Ruby on Rails 新規アプリケーションの作成

今更ながらRuby on Rails 新規アプリケーションの作成方法についての説明です。
Ruby on Rails で新規アプリケーションを作成するには、rails newコマンドを利用します。
書式は以下の通りです。

 rails new APP_PATH [options]

APP_PATHはrailsアプリケーションのルートディレクトリのパス(相対パスでの可)です。
optionsには、以下のオプションが指定可能です。
カテゴリ オプション 説明
基本オプション -r, [--ruby=PATH] Rubyバイナリのパスを指定する。
-b, [--builder=BUILDER] アプリケーションビルダーのパスを指定する。(ファイルシステムのパスまたはURL)
-m, [--template=TEMPLATE] アプリケーションテンプレートのパスを指定する。(ファイルシステムのパスまたはURL)
[--skip-gemfile] Gemfileの作成をスキップします。
[--skip-bundle] bundle installをスキップします。gemを追加定義するのでよく使います。
-G, [--skip-git] .gitignoreファイルの作成をスキップします。
-O, [--skip-active-record] Active Record ファイルの作成をスキップします。
-S, [--skip-sprockets] Skip Sprockets files
-d, [--database=DATABASE] デフォルトのsqlite3以外のデータベースを利用する場合に指定します。指定したデータベースの設定がコンフィグに反映されます。(指定可能なデータgベース:mysql/oracle/postgresql/sqlite3/frontbase/ibm_db/sqlserver/jdbcmysql/jdbcsqlite3/jdbcpostgresql/jdbc)
-j, [--javascript=JAVASCRIPT] デフォルトのjQuery以外のJavaScriptライブラリを利用する場合に指定します。指定可能なライブラリは要調査。
-J, [--skip-javascript] JavaScriptライブラリの設定をスキップします。
[--dev] Setup the application with Gemfile pointing to your Rails checkout
[--edge] Gemfile に設定するRailsのリポジトリを指定します。
-T, [--skip-test-unit] Skip Test::Unit files
[--old-style-hash] Force using old style hash (:foo => 'bar') on Ruby >= 1.9
ランタイムオプション -f, [--force] すでにファイルが存在する場合に上書きする。
-p, [--pretend] Run but do not make any changes
-q, [--quiet] Suppress status output
-s, [--skip] ファイルが既に存在する場合は作成をスキップする。

2013/06/05

Spring 3 組込みデータベースサポート

概要

組込みデータベースサポート機能はSpring 3で追加された機能で、アプリケーションと同一VM上で動作するオン・メモリなデータベースサポート機能です。DBの実装についてはSpringが持っているわけではなく外部ライブラリを利用します。サポートしているDBは以下の3つです。

  • HSQLDB
  • H2
  • Apache Derby
なお、この機能はorg.springframework.jdbc.datasource.embeddedパッケージにより提供されます。

ユースケース

想定されるユースケースとしては以下の通りです。他に何かアイデアがあれば是非教えて下さい。

  • サンプル
  • 教育
  • プロタイプ(なにを検証するかにもよります)
  • テンポラリデータ(トランザクションの中間データなど)
  • データ・キャッシュ(今はもっといい方法があるのでキャッシュとしては最適ではないかもしれません)

利用方法

Bean定義XMLに設定する方法

  
    
    
  
組込みデータベースの設定はjdbc名前空間のembedded-database要素として定義します。この要素によって定義されたBeanはデータソースとして振る舞います。従ってトランザクションマネージャなどからデータソースとして参照することになります。type属性にはデータベースのタイプを指定します。ここで指定する文字列は列挙方EmbeddedDatabaseTypeの属性の文字列表現になります。

初期化に関するデフォルトの振る舞いは、embedded-database要素として内に定義されたSQLスクリプトを無条件に実行します。なお、実行順は上から優先的に実行されます。

プログラムで制御する方法

初期化は以下の通りです。
  EmbeddedDatabaseBuilder builder = new EmbeddedDatabaseBuilder();
  builder.setType(EmbeddedDatabaseType.H2);
  builder.addScript("schema.sql");
  builder.addScript("test-data.sql");
  db = builder.build();
シャットダウン処理は以下の通りです。
  db.shutdown();

参考情報