2011年12月29日木曜日

Lion ServerでのApache設定

Mac OSX Lion ServerのWebサーバのDocumentRootは、
/Library/Server/Web/Data/Sites/Default/
設定ファイルは、
/etc/apache2/sites/0000_any_80_.conf
システム環境設定→共有→Web共有→コンピュータのWebサイトフォルダを開く... からだと、
/Library/WebServer/Documents
が開かれてしまうので注意する。

2011年12月27日火曜日

NodeでWebSocket

2011/12/27現在NodeでWebSocketを使うなら、WebSocket-Nodeがベストなようだ。
ブラウザサポートが幅広い。

proxy環境内からnpm

npmnodeにパッケージを追加しようとしたらエラー発生。
対策はこちら。
npm config set registry http://registry.npmjs.org/

先人の知恵に感謝。 proxy環境でnpm使おうとしたら、Error: socket hang up

2011年8月9日火曜日

vimdiffは忘れやすい

たまにしか使わないのでいつも忘れてしまう。
とりあえずdoとdpの使い方さえマスター出来れば、マージ作業の速度は10倍ぐらいに上がるはず。

起動
vimdiff file1 file2 [file3 [file4]]

起動 gvimの場合
gvim -d file1 file2 [file3 [file4]]

あるいは
alias gvimdiff='gvim -d' #もし無ければaliasを設定

gvimdiff file1 file2 [file3 [file4]]

前の差分へ移動
[c

次の差分へ移動
]c

現在のバッファをもう1つのバッファと同じくなるように変更をする
"o" は "obtain"の意味 (via :h vimdiff)
do

もう1つのバッファを現在のバッファと同じくなるように変更する
"p"何だろう?"put"のp?
dp

2011年6月3日金曜日

デュアルブートをシングルブートにしてパーティションサイズを広げる方法

WindowsとUbuntuのデュアルブートにしていたPCから、Windowsを削除してUbuntuのみシングルブートにした時のやり方。

ゴール
プライマリパーティションのWindowsを削除する
拡張パーティションのUbuntuをプライマリパーティションに移動する
拡張パーティションを削除する
プライマリパーティションを目一杯大きく取る

前提条件
プライマリパーティションが拡張パーティションよりも容量が大きいこと。
そうでない場合は、一時退避用に外部のストレージを用意する必要がある。

手順

  1. UbuntuのLiveCDを用意する

  2. 1のLiveCDでブートする

  3. 一時転送

  4. ddrescueを入れて、パーティションのクローンを作る
  5. ここらへんを参考に。
  6. GPartedをインストールする

  7. GPartedで転送先のパーティションをチェックする

  8. GPartedで不要となる拡張パーティションを削除し、プライマリパーティションを広げる

  9. 拡張パーティションにSwap領域を確保してマウントしている場合、swapoffする必要があるかも。
  10. Grubをインストールしなおす
  11. ここらへんを参考に。
  12. 再起動する
  13. 再インストールしたGrubによって、新しいパーティションのUbuntuで起動。


転送先の容量を間違えて転送元よりも小さなものを使ってしまい、クローン作成に失敗してはまった。

数百GBあるとかなり時間がかかるので、暇なときにやるとよいでしょう。

2011年5月29日日曜日

git-upload-pack: not found のとき

自分でgitをインストールしたサーバーにレポジトリを作って、ローカルからgit+sshでcloneしたら怒られた。そんな時の対策。

現象
$ git clone ssh://username@server/~/myrepo.git
bash: git-upload-pack: command not found
fatal: The remote end hung up unexpectedly

サーバーにログインして確認してみると、git-upload-packへのパスはちゃんと通っている。
$ which git-upload-pack
/home/username/local/bin/git-upload-pack

なぜ?
それは、ssh経由でログインした場合、PATHを.bashrcに設定したとしても読み込まれないのが原因。

対策A
--upload-packオプションで毎回指定する

git clone --upload-pack=/home/username/local/bin/git-upload-pack ssh://username@server/~/myrepo.git


対策B
git-configでサーバーのgit-upload-packのパスをconfigに書きこむ
git config remote.origin.uploadpack /home/username/local/bin/git-upload-pack

2011年5月22日日曜日

さくらのスタンダードプランでWebSocket

さくらインターネットのスタンダードプランで、WebSocketサーバーを実行してみたらうまく行った、という話。

使う物
  1. Ruby 最新版でいいだろう。

  2. RubyGems これも最新版でいいだろう。

  3. rev-websocket



手順
  1. node.jsのインストール → 失敗
  2. 定番WebSocketサーバーのnode.jsはport絡みのファイルの書き込み権限の問題で断念。
    きっとVPSならそんな心配はないのだろう。
  3. ローカルへのRubyのインストール

  4. $ wget ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-p180.tar.bz2
    $ tar jxvf ruby-1.9.2-p180.tar.bz2
    $ cd ruby-1.9.2-p180
    ホームディレクトリ直下のlocalにインストールする。
    $ ./configure --prefix=$HOME/local
    $ make
    $ make install

  5. インストールしたRubyへのパスを設定する

  6. .bash_profile(.bashrc派の人もいるかな)に以下を記述
    前略
    export PATH=$HOME/local/bin:$PATH

    $ . .bash_profile

  7. RubyGemsをインストール

  8. $ wget http://rubyforge.org/frs/download.php/74886/rubygems-1.8.3.tgz
    $ tar zxvf rubygems-1.8.3.tgz
    $ cd rubygems-1.8.3
    $ ruby setup.rb

  9. rev-websocketをインストール

  10. $ gem install rev-websocket


    以下は動作テスト。

  11. rev-websocketのサンプルを~/wwwにコピー

  12. $ cp -r ~/local/lib/ruby/gems/1.9.1/gems/rev-websocket-0.1.3/examples/public ~/www
    $ cd ~/www/public

    エディタでecho.htmlを開く
    WS_URL = "ws://localhost:8081"; を WS_URL = "ws://サーバーのホスト名:8081"; に修正

  13. rev-websocketのサンプルのechoサーバーを起動

  14. $ ruby ~/local/lib/ruby/gems/1.9.1/gems/rev-websocket-0.1.3/examples/echo.rb
    start on 0.0.0.0:8081

  15. Webブラウザーでrev-websocketのサンプルにアクセス

  16. http://ホスト名/public/echo.html
    こんな表示が出ればOKだ。
    server: Hello, world!
    client: hello
    Sun May 22 2011 09:41:40 GMT+0900 (JST)connecting to ws://ホスト名:8081...
    Sun May 22 2011 09:41:40 GMT+0900 (JST)connected.
    Sun May 22 2011 09:41:40 GMT+0900 (JST)message sent: client: hello
    Sun May 22 2011 09:41:40 GMT+0900 (JST)message received: server: Hello, world!
    Sun May 22 2011 09:41:40 GMT+0900 (JST)message received: client: hello
    Sun May 22 2011 10:17:32 GMT+0900 (JST)disconnected...


さて、何を作ろうか?