JUnit実践入門第4章を読んでみた

ゆっくりーとですがじわじわ読んでいます。
というわけで読んだことを忘れないうちにメモ。

第4章を読んで覚えたこと

  • AssertクラスとCoreMatchersクラスを組み合わせて利用することで自然言語に近いアサーションコードが記述可能になる。
  • (JUnit4の)アサーションメソッドはassertThat()とfail()の2つと思ってよい。assertEquals()とassertTrue()は過去バージョンとの互換性のために残ってるだけ。
  • CoreMatchersクラスのisメソッドにnullを指定することはできない。中身がnullであることを検証したい場合はCoreMatchersクラスのnullValueメソッドを利用する。
  • 必要に応じてカスタムMatcher APIを自作できる(本章に作例あり)。

気になったこと

カスタムMatcher APIはテストしなくていいのかな…というのがちょっと気になりました。
でも本筋とは関係ないし気にしなくてもいいのかな。

実践

せっかくなのでnullValueメソッドを使うサンプルコードを書いてみました。

// テスト対象のクラス
package junit.test;

public class PersonalData {

	  private String name;
	  
	  public PersonalData() {
		  this.name = null;
	  }
	  public void setName(String name) {
		  this.name = name;
	  }
	  
	  public String getName() {
		  return this.name;
	  }
}
// テストクラス
import org.junit.Test;
import static org.junit.Assert.*;
import static org.hamcrest.CoreMatchers.*;

import junit.test.PersonalData;


public class PersonalDataTest {

	@Test
	public void PersonalDataクラスのnameフィールドがデフォルトの場合nullである() {
		// Setup
		PersonalData sut = new PersonalData();
		// Exercise
		String actual = sut.getName();
		assertThat(actual, is(nullValue()));
	}
	
	@Test
	public void PersonalDataクラスのnameフィールドにTonyを設定できる() {
		//Setup
		PersonalData sut = new PersonalData();
		// Exercise
		String expected = "Tony";
		sut.setName("Tony");
		String actual = sut.getName();
		assertThat(actual, is(expected));
	}
}

2つのテストは無事に通過することができました。めでたしめでたし。

さくらのレンタルサーバ(スタンダード)にRuby on Railsをインストールしてみた



2013年6月24日時点での情報です。将来も同じ方法でうまくいく保証はありません。
(現に、参考にしたサイトの通りにやってもうまくいかない部分がいくつかありました)

やることはざっくり箇条書きすると以下の3点。

rubygemsをインストールする

Teratermなどのターミナルエミュレータでさくらのサーバにログインした後、
ftpコマンドで http://rubyforge.org/ から最新版のrubygemsをダウンロードします。

%ftp http://rubyforge.org/frs/download.php/76729/rubygems-1.8.25.tgz

ダウンロードが完了したらtarコマンドで展開し、作成されたディレクトリ配下に移動して
setup.rbを実行します。prefix=$HOMEを付け忘れないことが大事。

%tar -zxf rubygems-1.8.25.
%cd rubygems-1.8.25
%ruby setup.rb --prefix=$HOME

環境変数などを設定する

(デフォルトがcshなので)$HOME/.cshrcを編集します。

set path = の行に$HOME/bin $HOME/lib/ruby/gem/binを追加する

わたしの場合は以下のようになっていました。
いつどれを追加したのかは覚えていないけど、とにかく上の2つを追加できてればOKかと。

set path = (/sbin /bin /usr/sbin /usr/bin usr/games usr/local/sbin /usr/local/bin usr/X11R6/bin $HOME/bin $HOME/local/bin $HOME/lib/ruby/gem/bin)

環境変数[RUBYLIB]と[GEM_HOME]と[RB_USER_INSTALL]を追加する

setenv RUBYLIB $HOME/lib
setenv GEM_HOME $HOME/lib/ruby/gem
setenv RB_USER_INSTALL true

特に3つ目を追加しておかないと、railsのインストール時に以下のエラーに遭遇します。

chown/chgrp: Operation not permitted

Error code 71

gem18のエイリアスを自分がインストールしたrubygemsに設定する

.cshrcの編集内容を保存、終了してsourceで再読み込みしたあとにwhichコマンドで
gem18が/usr/local/binを参照していたら、railsのインストール時に必ずエラーになります。
そこでわたしは、.cshrcに以下の1行を追加してこれを回避してみました。

alias gem18 $HOME/bin/gem18

もっとうまいやり方があればぜひ教えていただきたいところです・・・。

(gems経由で)railsをインストールする

%source ~/.cshrc
%gem18 install rails

しばらく待てばインストールは完了です。
最後に、railsがちゃんとインストールできているかチェック。

%rails --version
Rails 3.2.13

うまくいったみたいです。

次の目標はrailsでミニブログツールを作ること。いつやれますかね・・・。

My Tracksのすすめ

My TracksはGoogle製のAndroidアプリ。

https://play.google.com/store/apps/details?id=com.google.android.maps.mytracks&hl=ja

 

主な特徴は(たぶん)以下のとおり。

・無料

・GPSを利用した移動経路の記録

・標高と移動速度をグラフ表示

・統計情報では「距離」「合計時間」「平均速度」「最大速度」が閲覧可能

・上記情報をGoogleアカウントを通して他のGoogleサービスやTwitterなどで共有可能

 

個人的には、先日解約して使い道がなくなっていたT01CでMy Tracksが使えるのでサイクルコンピュータを新しく買う必要がなくなったことが嬉しい。

関係スキーマと関数従属性から候補キーを見つけるには

「候補キー 合併律」でググったら出てきた以下のページが大変参考になった。

http://jis.hatenablog.com/entry/20100130/1264839295

 

手順はまとめると次の通り。

1)矢印の始点となる属性を列挙する

2)(1)の中から、被従属している属性を排除する

 

例えば関係スキーマR(A, B, C, D, E)があり、関数従属A->BC, CD->Eが成り立つとする。

これに上記の手順を当てはめると次のようになる。

1)矢印の始点となる属性は{A, C, D}

2)CはA->BC( A->B, A->C)の関数従属が成り立つことから被従属属性なので排除する

よってこの関係Rの候補キーはAとDである。

memo

スーパースカラ

CPUのアーキの一種。複数のパイプラインを用意して同時実行するのが特徴。

DMA

Direct Memory Accessの略。メモリとメモリまたはメモリとI/Oデバイスで直接やり取りする手法のこと。

セマフォ

資源の競合をなくすための排他制御。P操作(wait()、ロック)とV操作(signal()、アンロック)があるらしい。

垂直分散システム

ホスト・コンピュータがすべての処理を担当し、処理結果を複数のクライアントマシンに表示する形式のシステム。

フールプルーフ

システム設計の考え方の一つ。誤操作があってもシステムに問題が起こらない安全設計にすること。

フェールソフト

システム設計の考え方の一つ。装置の一部が故障しても、システムの全面停止とならないようにすること。

フォールトトレランス

障害耐性。装置の一部が故障してもシステムが問題なく稼働し続けること。

フォールバック

縮退運転。サービスのレベルを低下させてでもシステムの稼働を維持し続けること。

 

Cygwin環境での実行コマンドの文字化け解消

Cygwin環境で端末のエンコーディングをUTF-8にしている時に、lessコマンドなどで日本語が文字化けするときは、chcp.comコマンドを使う。

 chcp.com <ページコード>

UTF-8は65001なので、[chcp.com 65001]とすればよい。

 

ちなみにCygwinのデフォルトのコードページは932(Shift-JIS)の模様。