2012年03月21日

このブログにSyntaxHighlighterを設定してみる

こちら↓のページで説明されていました。

俺の砂箱 - さくらのブログやSeesaaブログでSyntaxHighlighterを使う。
http://sunabako.sblo.jp/article/45214485.html

ただ、説明通りにやるだけだと、自分の頭に残らないよなぁ、と思って本家も見ながら設定してみることに。

本家サイトはコチラ。
http://alexgorbatchev.com/SyntaxHighlighter/

Downloadページへ。
http://alexgorbatchev.com/SyntaxHighlighter/download/

「Click here to download」と書かれたリンクがあったのでクリック。
zipファイルをダウンロード。
2012/03/18 時点のバージョンは3.0.83でした。

使い方がわからんのでinstallationページへ。
http://alexgorbatchev.com/SyntaxHighlighter/manual/installation.html


Basic Steps

To get SyntaxHighlighter to work on you page, you need to do the following:

1. Add base files to your page: shCore.js and shCore.css
2. Add brushes that you want (for example, shBrushJScript.js for JavaScript, see the list of all available brushes)
3. Include shCore.css and shThemeDefault.css
4. Create a code snippet with either <pre /> or <script /> method (see below)
5. Call SyntaxHighlighter.all() JavaScript method



  • shCore.jsとshCore.cssを自分のページに置いて、
  • 使いたいbrushesも置いて、
  • shCore.cssとshThemeDefault.cssを読み込んで、
  • コードを<pre />か<script />で書いて、
  • SyntaxHighlighter.all()を呼ぶ。

ってことかしら。
最低限の説明っぽい…。[俺の砂箱」さんの方が説明充実してるなぁ。
画像とかswfのファイルはダウンロードしたファイルには含まれていなかったけど、バージョンが変わったせいかしら。
一応bloggerモードの説明は↓のページに書いてあるね。
http://alexgorbatchev.com/SyntaxHighlighter/manual/configuration/

これだけ調べたら、あとは「俺の砂箱」さんの説明通りでいいや、という気分に。
とりあえず、ヘッダーに必要な<script>と<link>を↓な感じで書く。












フッターには以下を記述。



んで、コードを書くところは<pre class="brush: ○○">〜</pre>で括る、と。
○○はコードの種類で、rubyとかhtmlとか書くらしい。
これでできあがりー!
便利ですね!
posted by t2low at 00:01| 日記

2012年03月20日

[Ruby] RubyでTDD 勉強会

以前、一緒に働いていた@tokoromが勉強会を開いてくれるというので行って来ました。
参加者は僕と@e_aureum
本当なら@u_s_kも参加予定だったのですが体調不良で欠席。
講師側として@u1tnkも予定が合えば…ということだったのですが、多忙のため断念。
3人での開催となりました。

勉強会の内容は「RubyでTDD」。RubyとRSpecを使ってTDDをやってみるというもの。
僕も@e_aureumもRubyは初心者だったので、本当に簡単なところから入っていきました。
ちょっと実際の順番と違ったり、TDDとしておかしなところがあるかも知れませんが、そこは私の記憶力のなさのせいです。

■Calc
とりあえず、練習として計算を行うクラスでTDDしてみることになりました。
引数を1つ取る足し算と引き算ができます。値は累積されていきます。そんなクラスを作ります。
TDDの基本、まずはテストから書きます。

RSpecではテストコードは「○○_spec.rb」と命名するのが通例のようです。
まず、calc_spec.rbを作ります。

calc
┗Calc_spec.rb

-- calc_spec.rb --

require "Calc"

describe "Calc" do
it "0 + 3 = 3" do
calc = Calc.new
calc.add(3).should == 3
end
end

こんな感じでしょうか。(勉強会のときは確かいきなりこんなに書きませんでしたけど)
実行します。

実行は「rspec -I . calc_rspec.rb」
結果として、「F」が表示されたらNG。「.」が表示されたらOKだそうです。
結果は...どっちでもなくてエラーになりますね…。当然ですね、クラスがありません。
それではcalcクラスを作ります。

calc
┣Calc.rb
┗Calc_spec.rb

-- calc_spec.rb --

class Calc
end

クラスができたのでテストを実行します。
今度は実行はできましたが、「F」です。何がダメなのか出力を見ます。
F

Failures:

1) Calc 0 + 3 = 3
Failure/Error: calc.add(3).should == 3
NoMethodError:
undefined method `add' for #
# ./spec/Calc_spec.rb:7:in `block (2 levels) in '

Finished in 0.005 seconds
1 example, 1 failure

Failed examples:

rspec ./spec/Calc_spec.rb:5 # Calc 0 + 3 = 3

NoMethodErrorと出ているので、メソッドがないことがわかります。
とりあえず、メソッドを用意して0 + 3 = 3を満たすコードを書きます。
class Calc
def add(val)
3
end
end

Rubyは初めてだったのですが、最後に評価した式(?)が戻り値になるって面白いですね。
ここでもう一度テスト実行します。
(そういえば、当日は空のメソッドを一度作ってからテストしたことを思い出しました)
.

Finished in 0.007 seconds
1 example, 0 failures

無事通りました。成功です。完璧です。
なお、この時点ではメインのクラスとテストのクラスが同じディレクトリにありますが、specというディレクトリを作ってそちらにテストクラスを入れておくと良いようです。

calc
┣Calc.rb
┗spec
 ┗Calc_spec.rb

こんな感じ。
calcディレクトリにいるとき「rspec -I .」で実行できるようになるとのこと。

では、確認のためにテストを追加します。

it "0 + 5 + 2 = 7" do
calc = Calc.new
calc.add(5).should == 5
calc.add(2).should == 7
end

テスト結果は…
.F

Failures:

1) Calc 0 + 5 + 2 = 7
Failure/Error: calc.add(5).should == 5
expected: 5
got: 3 (using ==)
# ./spec/calc_spec.rb:12:in `block (2 levels) in '

Finished in 0.007 seconds
2 examples, 1 failure

Failed examples:

結果が「.F」となっているので、最初のテストはパスしたけど、追加したテストで失敗しているようです。
まぁ、3しか返さないメソッドなので当然ですね。修整します。
class Calc
def initialize
@value = 0
end

def add(val)
@value += val
end
end

通りました。ばっちりです。
initializeというのがjavaでいうコンストラクタ的なものらしいです。
@〜でメンバ変数だそうです。宣言なしで使えるってのはちょっと不安がありますけども。

続いては、テストコードのリファクタリングを行なうようです。
ちょっとこのへん記憶が曖昧なので、ガッと修正後のコードを載せます。
require "Calc"

describe Calc do
before(:each) do
@target = Calc.new
end
subject { @target }

it "0 + 3 = 3" do
subject.add(3).should == 3
end

it "0 + 5 + 2 = 7" do
subject.add(5).should == 5
subject.add(2).should == 7
end
end

修正点はこんな感じ

  • describeの後のダブルクォートを取った。特定のクラスの明示的な指定?だとか?
  • before部分。テストの前にやらせたいことを書くらしい。:eachだと各テスト毎、:allだと全体で1回だって。
  • subject部分。イマイチよくわかってません。あとで調べよう。

で、またテスト実行します。

..

Finished in 0.006 seconds
2 examples, 0 failures

うん、成功しますね。
とりあえず、練習はこんな感じ。
続きは…後日書けたら書きます。
タグ:ruby TDD RSpec
posted by t2low at 12:49| Ruby

2012年03月11日

[Ruby] RSpecのインストール

前の記事の続き。RSpecのインストール。
ぐぐったら、RSpecをインストールするにはRubyGemsが必要らしい。
(必要ないかもしれないけど、RubyGemsを使ってインストールできるらしい)

RubyGemsのインストールは、こちらのサイトを参考にさせてもらった。
http://d.hatena.ne.jp/gtaka555/20071012/p3
しかし、2007年の記事か…。
僕はだいぶ遅れているな…orz

ここ↓のページから[rubygems-1.8.17.zip]をダウンロード。
http://rubyforge.org/frs/?group_id=126
今日時点で一番新しいやつをダウンロードした。
ダウンロードしたzipを展開して、適当な場所に配置。


C:\rubygems-1.8.17>ruby setup.rb


これでRubyGemsがRubyをインストールしたディレクトリにセットアップされるのか。なるほど。
一応、セットアップが完了したことを確認。


C:\>gem -v
1.8.17


つづいて、RSpecのインストール。それはこっち↓を見ながら。
http://jp.rubyist.net/magazine/?0021-Rspec

以下のコマンドを実行。


C:\>gem install rspec


確認。


C:\>spec -v
'spec' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。


ん?
もしかして?


C:\>rspec -v
2.8.0


出た。
昔はrspecってコマンドじゃなくて、specってコマンドだったのかしら。
とりあえず、これで勉強会の準備はおしまい、かな。
タグ:ruby RSpec
posted by t2low at 11:52| Ruby

2012年03月10日

[Ruby] Rubyのインストール

今度、知人と勉強会が開かれることになりました。
題材は「RubyでTDD」
とりあえず「RubyとRSpecはインストールしといて」と言われましたが、Rubyはやったことがありません。
RSpecなんてなんなのかもわからないレベルです。

とりあえず、ぐぐってRubyのインストール。
http://www.ruby-lang.org/ja/
いろいろ種類があるようですが、Windows版RubyバイナリのActiveScriptRubyをダウンロードしました。
バージョンもいくつかあってよくわからんので、まぁ、最新のものを落としとけば良いだろうと。
「Ruby-1.9.3-p125 Microsoft Installer Package(2012-02-16)」これ。

ここ↓にインストールされたので、ここを環境変数に追加。
「C:\Program Files (x86)\Ruby-1.9.3\bin」
コマンドプロンプトを起動して、インストールされてることを確認。

> ruby -v
ruby 1.9.3p125 (2012-02-16) [i386-mswin32_100]

とりあえず、RubyはOKかな。
posted by t2low at 19:07| Ruby