• 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
私の場合はCucumberのfeatureをもちろん英語で書いた方が楽なんだけど、日本で生活している以上、日本語で書いた方がいい場合もある。そのため、簡単な日英対訳表をCucumber v0.3.101時点の[languages.yml](http://github.com/aslakhellesoy/cucumber/blob/master/lib/cucumber/languages.yml)からまとめました。 フィーチャの定義 ===========
英語 (原文)日本語 (推奨)日本語 (alt)
Featureフィーチャ機能
Background背景-
Scenarioシナリオ-
Scenario Outlineシナリオアウトラインシナリオテンプレート
テンプレ
シナリオテンプレ
シナリオの定義 (Given-When-Then) ============
英語 (原文)日本語 (推奨)日本語 (alt)
Featureフィーチャ機能
Given前提-
Whenもし-
Thenならば-
Andかつ-
Butしかし但し
Examplesサンプル
参考リンク ====== * [Cucumberの翻訳定義ファイル](http://github.com/aslakhellesoy/cucumber/blob/master/lib/cucumber/languages.yml) * [moroさん作](http://d.hatena.ne.jp/moro/20090603/1244042258)の[misoというwebrat用 日本語step_definitionジェネレータ](http://github.com/moro/miso/tree)は便利だよ
posted by lchin lchin on Fri 18 Sep 2009 at 23:02 with 0 comments

Snow LeopardでMySQLの64-bitバイナリのインストールまではメモなしでできてしまうけど、その後のmysql gemのインストールするためのおまじないはなかなか覚えられないからメモ書きする。

shell-unix-generic>>
sudo env ARCHFLAGS="-arch x86_64" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config
<<--

なぜARCHFLAGSが必要かというと、gem installする時に32-bitと64-bit両方に対応するgemをビルドしようとするけど、mysqlのバイナリは64-bitのみ(つまりUniversalじゃない)からARCHFLAGSでx86_64を明示的に指定しないとビルドが失敗する。mysql gemは例外的なケースらしいから、tmtmさんに早く直してほしいな。

参考リンク

posted by lchin lchin on Tue 8 Sep 2009 at 16:42 with 0 comments

事前にパスの調整をする。Macでは 、/etc/pathsで定義した方が楽だ。どのシェルを使っても、デフォで入るパス設定だ。以下のようにするといいかな。
shell-unix-generic>>
$ cat /etc/paths
/usr/local/bin
/usr/bin
/bin
/usr/local/sbin
/usr/sbin
/sbin
<<--
パスがこうなる:
shell-unix-generic>>
echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/usr/X11/bin
<<--
/usr/X11/bin/etc/paths.d/X11から設定されている。詳しくはman path_helperで。

MacではReadlineのかわりにBSD系Editlineを使っているけど、これは日本語などとの相性が悪くいためMac標準のRubyのirbが使いものにならない。なので、まずは最新のReadlineを入れる。
shell-unix-generic>>
curl -O ftp://ftp.cwru.edu/pub/bash/readline-6.0.tar.gz
tar xzf readline-6.0.tar.gz
cd readline-6.0
./configure --enable-multibyte --enable-shared
make
sudo make install
<<--

Readlineの用意ができたら、Rubyを入れる。Ruby 1.9でもいいけど、まだ自信がないので1.8.7にする。
shell-unix-generic>>
curl -O ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p174.tar.gz
tar xzf ruby-1.8.7-p174.tar.gz
cd ruby-1.8.7-p174
./configure --enable-shared --enable-pthread --with-readline-dir=/usr/local CFLAGS=-D_XOPEN_SOURCE=1
make
sudo make install
<<--

しめとしてRubyGems
shell-unix-generic>>
curl -O http://files.rubyforge.vm.bytemark.co.uk/rubygems/rubygems-1.3.5.tgz
tar xzvf rubygems-1.3.5.tgz
cd rubygems-1.3.5
sudo /usr/local/bin/ruby setup.rb
<<--

はい、カンタンですね。これくらいなら、まだまだMacPortsは要らない。

posted by lchin lchin on Mon 7 Sep 2009 at 17:49 with 0 comments

今朝Snow Leopardにアップデートしたら、デフォの設定でイーモバイルがうまく動作しないけど、環境設定の「ネットワーク」→「詳細」で以下の設定をしたらちゃんと接続できました。

  • 製造元:一般
  • 機種:Dialup Device
  • ダイアル:パルス

network_emobile.jpg

USBモデムD23HWを使っています。他の機種が上手いくかどうかわからないけど….

posted by lchin lchin on Fri 28 Aug 2009 at 04:01 with 0 comments

YAMLの復習

YAMLのノードには3種類(kind)がある:

  • Scalar (Unicodeの文字列として表現できるもの)
  • Sequence (配列みたいなもの)
  • Mapping (連想配列やHashみたいなもの)

それぞれのkindはいくつかのstyleで出力できる。

  • Scalar:
  1. Plain (1行)
    yaml>>
    Lorem ipsum dolor sit amet, consectetur adipiscing elit.
    <<--
  2. Single Quote (1行)
    yaml>>
    'Lorem ipsum dolor sit amet, consectetur adipiscing elit. '
    <<--
  3. Double Quote (1行)
    yaml>>
    "Lorem ipsum dolor sit amet, consectetur adipiscing elit. "
    <<--
  4. Block Literal (改行がそのまま残る)
    yaml>>
    Lorem ipsum dolor sit amet,
    consectetur adipiscing elit.
    Pellentesque tincidunt molestie est.
    Vestibulum ante odio, euismod ac,
    sagittis et, tempus ut, lorem.
    Praesent consectetur tempor ipsum.
    Nulla facilisi.
    <<--
  5. Block Folding (改行が空白になる)
    yaml>>
    --- >
    Lorem ipsum dolor sit amet,
    consectetur adipiscing elit.
    Pellentesque tincidunt molestie est.
    Vestibulum ante odio, euismod ac,
    sagittis et, tempus ut, lorem.
    Praesent consectetur tempor ipsum.
    Nulla facilisi.
    <<--
  • Sequence
  1. デフォルト
    yaml>>
  • one
  • two
  • three
    <<--
  1. inline
    yaml>>
    [1, 2, 3]
    <<--
  • Mapping
  1. デフォルト
    yaml>>
    height: 170
    weight: 60
    <<--
  2. inline
    yaml>>
    { height: 170, weight: 60}
    <<--

で、

YAML::dumpでオブジェクトをダンプしたい時、styleを統一する場合もある。が、YAML::dumpにはstyleを指定する機能はない。そこで、to_yaml_styleをオブジェクトに定義すればよい、という裏技(非ドキュメントメソッド)を紹介したい。このメソッドの返り値がそのオブジェクトのstyleになる。

例えば:
ruby>>
class String
def to_yaml_style
return :quote2
end
end
<<--
をすれば、YAML::dumpのすべての文字列がダブルクオートに囲まれる。

Rubyでのスタイルは以下:

ruby>>
:plain # クオートなし
:quote1 # シングルクオート
:quote2 # ダブルクオート
:literal # Block Literal
:fold # Block Folding
:inline # Inline (Sequence, Mapping)
nil # デフォルト (Sequence, Mapping)
<<--

ちなみに、これを調べた切っ掛けはHashをYAML::dumpした時にvalueの方にクオートがあったりなかったりしたからです。つまりこれ:
yaml>>
name: "鈴木"
height: 170
weight: 60
<<--
をこれにする:
yaml>>
name: "鈴木"
height: "170"
weight: "60"
<<--

monkeypatch的な解決方法:
ruby>>
class Hash
def to_yaml_with_quoted_strings(*args)
class << self
unless method_defined?(:each_with_quoted_strings)
def each_with_quoted_strings
each_with_normal_strings do |k,v|
if String === v && !v.frozen?
def v.to_yaml_style; return :quote2; end
end
yield k, v
end
end
alias_method :each_with_normal_strings, :each
alias_method :each, :each_with_quoted_strings
end
end
return to_yaml_with_normal_strings(*args)
end
alias_method :to_yaml_with_normal_strings, :to_yaml
alias_method :to_yaml, :to_yaml_with_quoted_strings
end
<<--

gist

参考

posted by lchin lchin on Wed 1 Apr 2009 at 16:54 with 0 comments

rdocのデフォルトのテンプレートが非常にダサくて、なかなか使いづらい。mislavのhannaを使えば、こんなにスタイリッシュになる:

hanna.jpg

おまけとして、簡単なメソッド検索もできます。また、テンプレート自体はhamlで書いていて、なかなか読みやすい。「スケールできる」ことが売りらしいけど、まぁ意味不明な自慢だよね。

インストール

  1. rdoc 2.3.0をインストールする。現在のhannaはまだ最新rdocの2.4.xに対応していないからご注意ください。
    shell-unix-generic>>
    sudo gem install rdoc -v 2.3
    <<--
  2. githubをgemのsourceに追加
    shell-unix-generic>>
    gem source add http://gems.github.com
    <<--
  3. インストール
    shell-unix-generic>>
    gem install mislav-hanna
    <<--
  4. インストール済みのgemのrdocをhannaにする
    shell-unix-generic>>
    hanna --gems
    <<--
  5. これからインストールするgemのrdocもhannaにするため、.gemrcに以下の一行を追加する
    yaml>>
    rdoc: --inline-source --line-numbers --format=html --template=hanna
    <<--

ちなみに、今使っている.gemrcはこんな感じ:
yaml>>

:benchmark: false
:update_sources: true
:sources:

もっと凄いドキュメント検索:sdoc

railsapiで使っているsdocというやつもある。これの検索機能がなかなかすばらしい。ただし、今のところは単体のプロジェクトでしか使えなくて、gemからtemplateとして指定することができないみたい。また、githubへのリンクもgithubを使っていないプロジェクトにとってはちょっと魅力が薄れる。にもかかわらず、とても魅力的だな。
shell-unix-generic>>
gem install voloko-sdoc --source http://gems.github.com
<<--
rdocは2.3ではなく、2.4が必要のようです。
shell-unix-generic>>
gem install rdoc -v 2.4
<<--
適当なプロジェクトで実行:
shell-unix-generic>>
cd
sdoc -N .
<<--
で、できあがり

sdoc.jpg

参考

posted by lchin lchin on Wed 1 Apr 2009 at 01:30 with 0 comments

今までのネットワーク接続はeth0でTAP-WIN32のアダプタに接続し、ホストマチン(Windows)のインターネット共有している。この方法で簡単にゲストのLinuxから外部(インターネットなど)に接続することはできるけど、外部(社内ネットワーク)からはゲストので動いているサーバへアクセスできない。社内ネットワークではcoLinuxのインスタンスに勝手にIPアドレスを与えることはできない場合サーバを公開したいならホストからゲストへポートをフォーワードするしかない。

以下の設定はetho0にTAP-WIN32の設定が既にあることを前提としている。

  1. ホスト(Windows)側のcoLinuxの設定ファイルにslirpのインタフェースを追加する:
    shell-unix-generic>>
    eth1=slirp,,tcp:22:22/tcp:80:80/tcp:443:443
    <<shell-unix-generic

  2. ゲスト(Linux)側の/etc/network/interfacesにeth1を追加:
    shell-unix-generic>>

secondary network for external network access

iface eth1 inet static
address 10.0.2.15
network 10.0.2.0
broadcast 10.0.2.255
netmask 255.255.255.0
gateway 10.0.2.2
<<shell-unix-generic
10.0.2.15は適当なアドレスだけど、gatewayの10.0.2.2は特別で、slirpデーモンのデフォルトアドレスだ。

この記事ではcolinux0.7.3のUbuntuで行なったけど、DebianやFedoraでも設定が同じだろう。ちなみに、XAMPPやandLinuxのようなパッケージを使えばこの設定は不要らしい。

注意点

  • windows側のfirewall設定
  • 複数default gatewayのルーティング問題。解決策が二つ:
  1. SLiRPのgatewayのみにする。要するにeth0/tapにgatewayを定義せず、インターネットの通信をslirpに通す。このやりかたがわりと簡単だけど、SLiRPが若干遅いことと10.0.2.2(slirpデーモン)以外のところにpingできない
  2. 複数default gatewayのルーティングの設定をする (iproute2でpolicy routing)
  3. SLiRPはIPv6に対応していないため、ゲスト側で効果したいサービスがIPv6のアドレスにバインドしてしまうとうまくいかない。netstat -n --inet6 --listeningなどで確認んできる。たとえば、sshの場合は:
    shell-unix-generic>>
    Proto Recv-Q Send-Q Local Address Foreign Address State
    tcp6 0 :::22 :::* LISTEN
    <<shell-unix-generic
    この問題を解決するにはIPv6を無効化にするか、各種サービスを明示的にIPv4のアドレスに設定する。

参考

posted by lchin lchin on Thu 27 Nov 2008 at 15:59 with 0 comments

先日に参加したRailsイベントfishというものを紹介してもらった。zshbashのようにUnixで使うコマンドシェルですが、fishのフルネーム(Friendly Interactive SHell)からもわかるように、使いやすさと対話的な利用を目的としている。以下の特徴があるらしい:

  • 基本的に色付けをする
  • シンタクスハイライト
  • コマンドやオプションのスペルチェック
  • htmlヘルプ (help打ったらブラウザが起動する)
  • 説付きTAB補完
  • サブシェルがない
  • ミニマルかつシンプルな文法

Mac OS Xでインストールするには:
shell-unix-generic>>
% sudo port install fish
<<shell-unix-generic

Mac OS Xでfishchshしたければ、/etc/shellsfishを追加しなければならない。

shell-unix-generic>>

List of acceptable shells for chpass(1).

Ftpd will not allow users to connect who are not using

one of these shells.

/bin/bash
/bin/csh
/bin/ksh
/bin/sh
/bin/tcsh
/bin/zsh
/opt/local/bin/fish
<<shell-unix-generic

使ってみるとこんな感じ:

  • 書きかけのコマンドが赤色
    fish01.jpg
  • 存在しているコマンドが緑色
    fish02.jpg
  • helpw3mが起動する
    fish03.jpg
  • funcedでビルトインの実装をみる(インデント、シンタクスハイライトあり)
    fish04.jpg
  • manもスマートに補完されている
    fish05.jpg

今までは正直zshbashのほとんどの機能を使っていませんし、しばらくはfishchshしてメインシェルとして使ってみることにする。

posted by lchin lchin on Tue 25 Nov 2008 at 19:43 with 0 comments
シドニーに帰省するついでに、11月19日に[地元のRuby on Railsイベント](http://rubyonrails.com.au/2008/11/10/sydney-meetup-november-2008)に参加してきた。参加したというか、LTで[RubyKaigi 2009](http://rubykaigi.org)の宣伝してきた。オリジナルな発表ではなく、[角谷さん](http://www.kakutani.com/)の[RubyConf 2008のLT](http://kakutani.com/20081106.html#p01)の[スライド](http://www.slideshare.net/kakutani/why-dont-you-come-to-rubykaigi2009-presentation)を無断に手を加えて再利用した。すみません!ありがとう! Why You Should Attend RubyKaigi 2009 ------------------------------ Slideshare: [Why You Should Attend RubyKaigi 2009](http://www.slideshare.net/l15n/why-you-should-come-to-rubykaigi-2009-presentation/) 他のLTは日本にイベントに鈍れず、クオリティがけっこう高かった。 - [RailsCamp 4](http://rubyonrails.com.au/railscamp)のイベントレポートとふりかえり - いくつかのライブラリの紹介とデモ: - [iUi](http://code.google.com/p/iui/):RailsによるiPhone開発ライブラリ -[Prawn](http://prawn.majesticseacreature.com/): PDF生成ライブラリ - デモをいくつ - 簡単な[Cometサーバ](http://splinter.com.au/blog/?p=43) - 国連の[ビジネスサイト](http://business.un.org)がRailsらしい - ネタトークをいくつ - [paml](http://gist.github.com/25657): Passenger+haml - [C64](http://www.c64.com/)風プレゼンでView/Controllerのrefactoringを紹介 - 最後のおまけトークは[Dr Nic](http://drnicwilliams.com/)が[tabtab](http://github.com/drnic/tabtab/tree/master)というbashでいろんなコマンドのtab補完拡張を自動生成するプロジェクトだった。 [バー](http://www.trinitybar.com.au/home.aspx)で開催したから、ビールを片手に発表した。あ、たのしかった。
posted by lchin lchin on Tue 25 Nov 2008 at 07:45 with 0 comments

今までMac OS XのTerminal.appでGNU Screenのスクロールバックバッファーをマウスで操作できなかったけど、やっと設定方法がわかった。

.screenrcに下記の設定を追加すればスクロールできるようになる。
shell-unix-generic>>
termcapinfo xterm* ti@:te@
<<shell-unix-generic

これでコピーモードを使わなくて済む! 便利。

引用元:Scrolling, copying in Mac OS X

posted by lchin lchin on Wed 19 Nov 2008 at 09:34 with 0 comments