ソフトウェアエンジニアのブログ

暇つぶしに書いてます。他に技術的なことは[http://qiita.com/nsas454]に書いてますのでそちらも見てください。

node.jsのインストール

今回はnode.js、ライブラリパッケージ管理のnpm、データベースとしてmongoDBを試しにインストールしてみたいと思います。mongoDBについてはまだ使ったことはないのですが、これを機に時間をみつけて触っていきたいと思います。

node.jsのインストール

Mac OS X 環境でのインストールです。

PATHの設定

sudo を使わなくてすむようにインストール先を ~/local にしました。
~/local/binへパスを通すために設定ファイルへの追記が必要です。
私はzshを使用しているので、.zshenvに以下の設定を追加します。

export PATH=$PATH:~/local/bin

以下のコマンドでパスが通っているか確認します。

echo $PATH
ソースからコンパイルしてインストール
git clone https://github.com/ry/node.gitcd node
./configure --prefix=~/local
make
make install

npmのインストール

$HOME/.npmrcを設定して一般ユーザーの権限で入れるのがベストらしい
npmをインストールする

wget https://download.github.com/isaacs-npm-v0.2.14-6-14-g0cec5bf.tar.gz
cat >>~/.npmrc <<NPMRC
root = $HOME/.node_libraries
binroot = $HOME/bin
manroot = $HOME/share/man
NPMRC
tar -zxvf isaacs-npm-v0.2.14-6-14-g0cec5bf.tar.gz
cd isaacs-npm-v0.2.14-6-14-g0cec5bf
make install

mongooseとexpressをインストール

expressと今回はmongoDBを使ってみたかったので、
npmを利用してmongooseとexpressをインストールします。
mongooseはnode.js用ORM/ODMでexpressはnode.js用のフレームワークです。

npm install mongoose
npm install express

node.jsの環境構築まとめ

javascriptでサーバーサイドプログラムができる話題のnode.jsがどんなものなのか調べてみました。

node.js
node.js本体です。
npm
ライブラリのパッケージ管理に使用します。
nvm
node.jsの複数のバージョンを切り替えて使う際に必要
node.jsで使えるデータベース

MacでSubversionを利用する際に発生する文字コード問題の解消方法

MACとWidowsでsubversionを使用していると濁点、半濁点が文字化けしてしまう問題があります。macでは「UTF-8-mac」というUTF-8とは少し異なる独自のコードを用いているため起こる現象です。「UTF-8-MAC問題」といわれるらしい。
私はwindowsユーザから指摘されるまで気づきませんでした。。

この問題を解消するパッチがMacPortから取得できるようになっています。

sudo port install subversion +unicode_path

SVNコマンドまとめ

SVNの記号の意味まとめ

no modifications
A ファイルが新規追加
C ローカルの修正とリポジトリの更新が競合
D ファイルが削除
G ローカルの修正とリポジトリの更新がマージ
I Ignored
M Modified
R ファイルの置換え(同じ名前だが履歴上は別物)
U ファイルがリポジトリの最新版に更新
X item is unversioned, but is used by an externals definition
? item is not under version control
! item is missing (removed by non-svn command) or incomplete
versioned item obstructed by some item of a different kind

補足

コピーした時にできる.svnファイルを一発で削除するコマンドです。
一個づつ削除するのめんどくさいので一撃でいっちゃいましょう。
いきなり消すのも怖いの時は、以下のコマンドで確認してください。

echo rm -rf `find . -type d -name .svn`
rm -rf `find . -type d -name .svn`


参考
http://ryukyu.astr.tohoku.ac.jp/pukiwiki/index.php?Members%2Fchinone%2F%B3%D0%BD%F1%2FSubversion#v87dfb88

MacのデスクトップをGeekToolでカスタマイズ

いまさら感はありますが、MACのデスクトップをカスタマイズしてIcalの予定や日付を表示させるようにしてみたいとおもい設定したときのメモです。メインはGeekToolですが、それだけでは足りない部分をdateline、XRG、Icalとの連携をiCalBuddyで行いました。


dateline
日付けを横一列に並べてくれるシンプルなカレンダーです。日付をクリックするとIcalを開いてくれます。

XRG
開発しているとメモリの使用率などが非常に気になることがおおいのですが、XRGが見た目も良さそうだったので導入してみました。CPUやメモリの使用率などをグラフで表示してくれるので非常に便利です。

GeekTool
MacのデスクトップにUNIXのコマンド結果を表示してくれる便利なツールです。
Dashboardとひと味違って私はこちらの方が好きです。Refreshの間隔も秒単位で設定出来る優れものです。

設定内容

デスクトップにカレンダーを表示させる

日曜日と当日に色がつくスクリプトがありましたので、そちらを使わせていただきました。
Colored Calendar (cal) in 10 lines of /bin/sh. Colored current DAY and DATE.

適当な場所に保存して、実行権限(chmod +x)を与えgeektoolに設定しました。
しかし、ちょっとしたトラブルが発生!

sed: 1: "s/ ? / \033[1;31m?\033[0m /\n": RE error: illegal byte sequence

ターミナルを日本語環境に設定している場合、文字コードの関係でエラーになるみたいです。
そこで、一時的に英語での表記にするため、2行追加しました。

LANG=C
NOLOCALE=1

結果以下の内容になりました。

#!/bin/sh
#
# colorcal - change current day and date via ANSI color escape sequences
#
# developed/tested on 10.6.3 with:
# /bin/sh --version GNU bash, version 3.2.48(1)-release (x86_64-apple-darwin10.0)
# geektool 3, 3.0 (12A)
# Terminal Version 2.1.1 (273)
# see http://www.termsys.demon.co.uk/vtansi.htm for color codes.
#
# sed (1) is your friend.
#
LANG=C
NOLOCALE=1
# pick color, clear color
color="\033[1;31m"
nocolor="\033[0m"

# get day & date
current_day=`/bin/date "+%a" | cut -b 1,2`
current_date=`date | awk '{print $3}'`

#color em.
color_day=`echo "${color}${current_day}${nocolor}"`
color_date=`echo "${color}${current_date}${nocolor}"`

# format cal output so the sed replacements work at begining and end of cal output.
function calendar {
/usr/bin/cal | sed 's/ /_/g' | sed -e 's/^/ /' -e 's/$/_/' | sed 's/_/ /g'
}
# run calendar & substitute colored day & date.
calendar | /usr/bin/sed -e "s/ ${current_day} / ${color_day} /" -e "s/ ${current_date} / ${color_date} /"
# END of colorcal
icalの予定とTODOをデスクトップに表示させる

iCalBuddyをインストールすればGeektoolと簡単に連携出来ます。インストールはinstall.commandをクリックするだけです。実行後に何か聞かれますが、yをタイプすれば勝手にインストールが始まります。こちらで特に設定することはありません。あとは、GeekToolのコマンドに以下のコマンドを入力すれば設定終了。


iCalBuddy

1週間の予定を表示

/usr/local/bin/icalBuddy -nc eventsToday+7 | sed -e "s/*/-/"
<
Refreshは3600秒

未消化ToDoリスト
>||
/usr/local/bin/icalBuddy uncompletedTasks | sed -e "s/*/-/"

Refreshは360秒


注意したいオープンソースのライセンス体系

オープンソースのソフトウェアを使用するにあたって注意しなければならないのが、ライセンです。基本オープンソースなので自由に使ってプログラミングすることは出来ますが、商用利用に使用するとなると注意しておかないとライセンス違反で訴訟に発展する危険性があります。特にGPL(GNU General Public License)のソフトウェアを使用する際は「ソースコードの公開」が義務づけられますので注意が必要です。
そんなわけで、今回オープンソースのライセンスについて調べてまとめてみました。

BSD(Berkeley Software Distribution License)

もっとも制約が緩いため利用しやすいライセンス体系です。思いつくところでの代表的なソフトウェアとしては、Apache,tomcat,struts,springなどがあります。

条件
  1. 再配布時には著作権表示*1を残す。
  2. 無保証である
特徴
  1. BSDライセンスのコードを他のプログラムで利用できる
  2. コードを非公開に出来る。
  3. 再配布時のライセンス条件を制限されることはないので*2、自由なライセンス条件を付与できる。
BSDスタイルの代表例

GPL(GNU General Public License)

再配布、二次的著作物についても同じライセンスを適用しなくてはならない制約がつきます。要するに、GPLライセンスのソフトウェアを使用して新たなソフトウェアを作ったとしても、GPLのライセンスの体系から変えたらダメですよと言った内容です。そこがBSDライセンスと大きな違いです。商用利用の際は注意してください。思いつくところでの代表的なソフトウェアとしては、WordPressJavaなどがあります。

条件
  1. 著作権表示を保持しなければならない
  2. 無保証である
  3. 誰でも自由に複製・改変・頒布することが許可されている
  4. GPLライセンスのソフトウェアやプログラムを使用した場合、その制作物もGPLライセンスで配布しなければならない
特徴
  1. バイナリーを受け取った人または、受け取る可能性のある人にソースコードの公開を原則としてる。
  2. 再配布の際にMITライセンスやBSDライセンスにする事は出来ない。

CC(Creative Commons)

WEBの素材でよくこのライセンスの形態を見かけますが、使用するにあたっては必ず著作権の表示が必要になります。

条件
  1. 著作権者のクレジット(名前)表記が必要
特徴
  1. 必ず著作権者の表記が必要

*1:ソースのヘッダに著作権表示していればOK

*2:BSDより緩くなるようなライセンスでの再配布は認めないといった条件は付与されるみたいですので完全に条件が制限されないということではない