2016年3月31日木曜日
Kindle Paperwhite (第3世代) 購入
ちょっと前からAmazonのプライム会員になっていたんですが、
プライム会員になるとKindle Paperwhiteが4000円引きという誘惑に負けて
購入しました(笑)
購入したのは
「WiFiモデルの広告なし」で 16,280円から 4,000円割引きで12,280円でした。
早速開封してみます。
左から充電用のケーブル、本体、説明書が入っていました。
本体を起動させてみます。電源ボタンが本体の下にあるので電源投入してみます。
↓画像が分かりにくいですが赤丸の所に電源ボタンがあります。
起動すると言語選択やら色々設定を行います。
設定が終わるとチュートリアルが始まります。
チュートリアルが終了したので、早速何か本を開いてみます。
本は以前オススメして頂いた「アルゴリズムが世界を支配する」を見てみます。
月並みな感想になってしまいますが、やっぱり本当の本を読んでいるような
見やすさで、目が疲れない感じがします。
ディスプレイの解像度も300ppiで文字が綺麗に表示されています。
全体的に本を読む事に特化した端末だけあって、見やすく大きさや重さも
丁度いいと思いました。ただ画面をタップした時の反応がもたつく時が
あったりもしますが、本を読む分には問題ない感じです。
あとは調子に乗って電子書籍を買いすぎないように気を付けていこうかと思いますw
特に漫画は続きが気になってバンバン買ってしますので ^^;
2016年3月27日日曜日
SwiftでRSpecみたいに書けるQuickを使ってみる 2
前回の続きになりますが、
色々な使い方を見てみたいと思います。
色々な使い方を見てみたいと思います。
Nimble
のassertion
にどんなものがあるか確認してみます。等価
同じ値を持っているか?
をテストする// 等しければテスト成功
expect(実際の値).to(equal(期待値))
expect(実際の値) == 期待値
// 等しくなければテスト成功
expect(実際の値).toNot(equal(期待値))
expect(実際の値) != 期待値
// 浮動小数点の等価テスト
expect(実際の値).to(beCloseTo(期待値, within: マージン値))
比較するオブジェクトは
Equatable
、Comparable
プロトコルを実装または、NSObject
のサブクラスでないと正しく比較されない
また、浮動小数点の等価テストの場合マージン値を設定します。
例)
例)
expect(10.01).to(beCloseTo(10, within: 0.1)) // -> テスト成功
同一性
同じアドレスを指しているオブジェクトか?
をテストする// 同じアドレスを指していればテスト成功
expect(実際の値).to(beIdenticalTo(期待値))
expect(実際の値) === 期待値
// 同じアドレスを指していなければテスト成功
expect(実際の値).toNot(beIdenticalTo(期待値))
expect(実際の値) !== 期待値
比較
expect(実際の値).to(beLessThan(期待値))
expect(実際の値) < 期待値
expect(実際の値).to(beLessThanOrEqualTo(期待値))
expect(実際の値) <= 期待値
expect(実際の値).to(beGreaterThan(期待値))
expect(実際の値) > 期待値
expect(実際の値).to(beGreaterThanOrEqualTo(期待値))
expect(実際の値) >= 期待値
こちらも
Comparable
プロトコルを実装しているオブジェクトである必要がありますクラス型
インスタンスのクラスが期待値のクラス又はサブクラスかテストします
// インスタンスがクラスのインスタスである場合テスト成功
expect(インスタンス).to(beAnInstanceOf(クラス))
// インスタンスがクラス又は寒クラスのインスタスである場合テスト成功
expect(インスタンス).to(beAKindOf(クラス))
Error Handling
Swift2.0の
Error Handling
のテストです。Error Handlingとは?
Swift2.0から導入されたJava等で言う例外処理のこと
例)
// ErrorTypeプロトコルを実装したenumを作成
enum MyError: ErrorType {
case InvalidNumber
case OutOfRange
}
// エラーを投げる可能性があるメソッド
func something(number: Int?) throws {
if (number == nil) { // 不正な値
throw MyError.InvalidNumber
}
if (number > 50) { // 範囲外
throw MyError.OutOfRange
}
}
// エラーハンドリング
do {
try something(60)
} catch {
print("catch error") // エラーをキャッチ
}
上のような
MyError
をthrowするメソッドのテストをQuick
で行う場合throwError
を使用してテストを行う。// エラーがthrowされればテスト成功
// (引数に70を指定しているのでMyError.OutOfRangeがthrowされる)
expect{ try something(70) }.to(throwError())
// エラーの型が`MyError`であればテスト成功
// 引数がnilの為`MyError.InvalidNumber`をthrowする
expect{ try something(nil) }.to(throwError(errorType: MyError.self))
2016年3月24日木曜日
道の駅を巡ってみる 11 - もう一度食べたいだご汁定食 たちばな 鹿北 -
今回は福岡の八女に位置する道の駅「たちばな」と
熊本県の北に位置する道の駅「鹿北(かほく)」です。
1. 道の駅「たちばな」
上の写真の様に木造の建物が特徴的な道の駅です。
物産館の中は休日という事もあって沢山の人でした。
道の駅内にある定食屋さんで昼食を頂いたんですが、
だこ汁定食が最高です^^
だご汁にささみチーズカツにポテサラ、このポテサラ!!本当美味しかったです。
ホームページ
2. 道の駅「鹿北」
ここはまあ〜広いです^^;
色々な施設がある複合型の道の駅で、プールや木工体験、石窯ピザ作り体験などなど・・
施設の裏山?には面白い木製トンネルの散歩道なんかもありました。
散歩していると水辺には何故かヤギが^^;
裏山を登った所で施設全体を写してみました。
全体を収めたかったんですが、、広くてちょっと無理でした > <
最後にイチゴ狩りもやっているのでイチゴ美味しそうだなと思い、
イチゴのソフトクリームをいただきました(単純)^^;
ホームページ
2016年3月19日土曜日
SwiftでRSpecみたいに書けるQuickを使ってみる 1
Quickとは?
また、Quickを使うには
Nimble
が必要らしい。Nimbleって?
XCTAssertEqual(1 + 1, 2, "1足す1は2!!")
とこうなるが、
Nimble
ではexpect(1 + 1).to(equal(2))
こう書くことができる。直感的です^^
インストール
早速インストール・・の前に今回テスト用のプロジェクトを作成します。
テンプレートとして
テンプレートとして
Single View Application
を選択。
プロジェクト名を
QuickSample
としました。
※ Testにチェックを忘れずに入れる
作成したプロジェクト直下に
Podfile
を以下の内容で作成。use_frameworks!
def quick_pods
pod 'Quick', '~> 0.9.0'
pod 'Nimble', '3.0.0'
end
target 'QuickSampleTests' do
quick_pods
end
インストールを実行
$ pod install
インストールが成功すると
こちらを開きます。
QuickSample.xcworkspace
が作成されているので、こちらを開きます。
$ open QuickSample.xcworkspace
これでインストールは完了です。
テストを書いてみる
実際にテストを書いてみたいと思います。
プロジェクト内に
まず名前を
次に
プロジェクト内に
QuickSampleTests
が作成されていると思うので、まず名前を
QuickSampleSpec
に変更します。次に
QuickSampleSpec
を以下に編集します。import Quick
import Nimble
class QuickSampleSpec: QuickSpec {
override func spec() {
describe("sample test") {
it("1 + 1 = 2!!") {
expect(1 + 1).to(equal(2))
}
}
}
}
いたってシンプルですが、
当然テスト結果は成功になります。
RSpec
のような構文になっているかと思います。当然テスト結果は成功になります。
また、配列に含まれているかのテストも↓のように書けます。
it("array contain") {
expect(["luffy", "chopper", "zoro"]).to(contain("zoro"))
}
他にも便利なものがたくさんありますが、今回はここまで。
2016年3月17日木曜日
VagrantでVMの紐付きがおかしくなった場合
現象としては、
Vagrant
ファイルがあるディレクトリでvagrant up
すると違ったVMが立ち上がってしまうというもの・・・
元に戻すのが面倒だったので備忘録を兼ねての投稿です。
確認
おかしいと思ってVirtualBoxを起動すると同じものが2つある!?
そこで現在のVM一覧を見るコマンド
そこで現在のVM一覧を見るコマンド
VBoxManage list vms
を叩いて確認してみると$ VBoxManage list vms
・・・
"hogehoge_default_1457750943558_68266" {XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}
"hogehoge_default_1457837316012_51675" {YYYYYYYY-YYYY-YYYY-YYYY-YYYYYYYYYYYY}
やっぱし同じものが2つある(↑hogehogeが2つ)
※XXXXやYYYY~には実際は英数字が入ります
※XXXXやYYYY~には実際は英数字が入ります
対策
紐付きがおかしくなっている事は間違いないので、
場所の直下にある
Vagrant
ファイルがある場所の直下にある
.vagrant
ディレクトリを調べて見る- 階層
.vagrant
└── machines
└── default
└── virtualbox
├── action_provision
├── action_set_name
├── id ★
├── index_uuid
├── private_key
└── synced_folders
★が付いている
id
が怪しいので中を見てみると・・$ cat .vagrant/machines/default/virtualbox/id
YYYYYYYY-YYYY-YYYY-YYYY-YYYYYYYYYYYY
ん〜恐らく、ここが
修正して
望んていたものが起動しました!!
XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
じゃないかと・・修正して
vagrant up
してみると、望んていたものが起動しました!!
これで一件落着かと思っていると、
起動や停止する度にパスワードを聞かれる羽目に!?
原因
vagrant up
やvagrant halt
するとVMとssh接続を行っており、 認証がうまくいってないのが原因でした。
↑の
別のVM(YYYYYYYY-YYYY-YYYY-YYYY-YYYYYYYYYYYY)の秘密鍵が残っちゃっていた模様。
.vagrant
の階層でprivate_key
というのが秘密鍵で、別のVM(YYYYYYYY-YYYY-YYYY-YYYY-YYYYYYYYYYYY)の秘密鍵が残っちゃっていた模様。
対策
解決策としては、
- 全く新規に公開鍵、秘密鍵を作成
- 残ってる秘密鍵を元に公開鍵を作成
の2つがあります。
今回は残ってる秘密鍵を元に公開鍵を作成したいと思います。
今回は残ってる秘密鍵を元に公開鍵を作成したいと思います。
秘密鍵から公開鍵を作成
$ ssh-keygen -y -f .vagrant/machines/default/virtualbox/private_key > authorized_keys
VMを起動し、
/home/vagrant/.ssh
のauthorized_keys
を上書きます$ mv /vagrant/authorized_keys /home/vagrant/.ssh/.
これで認証が失敗せず、パスワード聞かれることもなくなります。
その他
↑の問題とは関係ないですが、色々試している中で見つけて便利だと思ったのでメモ
Vagrantを起動する際は
どの場所からでも起動できます。
Vagrant
ファイルがあるディレクトリに移動してvagrant up
をしていましたが、vagrant up {id}
とする事でどの場所からでも起動できます。
{id}
を確認するには$ vagrant global-status
{id} default virtualbox poweroff hoge
{id} default virtualbox poweroff fuga
で確認できます。
また、
vagrant up
に限らずその他のコマンドでも使用できます。vagrant halt {id}
、vagrant destroy {id}
・・・
shellなんかを書く時に使えそうです^^
2016年3月12日土曜日
Elasticsearchを学ぶ 5 - Kibana -
今回はElastic社のKibanaを使ってみたいと思います。
Kibanaとは?
ログデータなどの可視化ツール。フィルタや集計などを高速に便利に行う。
- 環境
引き続き前回の環境を前提に進めていきたいと思います。
また今回使うデータは以前こちらで使用したデータを使います。
インストール
インストールの方法としては、公式ページからダウンロードしてインストールします。
$ cd
$ wget https://download.elastic.co/kibana/kibana/kibana-4.4.1-linux-x64.tar.gz -O kibana.tar.gz
$ tar -zxf kibana.tar.gz
$ sudo mv kibana-4.4.1-linux-x64 /usr/local/share/kibana
$ sudo chmod -R 755 /usr/local/share/kibana
$ sudo chown -R vagrant:vagrant /usr/local/share/kibana
- 設定の変更
kibanaの設定ファイルを修正
$ cd /usr/local/share/kibana
$ vi config/kibana.yml
kibana用のポート
5601
をVagrantファイルに設定し再起動します# 以下設定をVagrantファイルに追加
config.vm.network "forwarded_port", guest: 5601, host: 5601
- 再起動
$ vagrant reload
- ElasticsearchとKibanaを起動
$ /usr/local/share/elasticsearch/bin/elasticsearch -d -p pid
$ /usr/local/share/kibana/bin/kibana
ブラウザからhttp://192.168.33.180:5601/ にアクセス
↑のような画面が出ればOK
デフォルトの
とりあえず以下に設定し
Index
マッチパターンを作成しないと次に進めないので、とりあえず以下に設定し
Create
以下の画面のようにIndexパターンが作成される
可視化
今回はとりあえず何かグラフを表示させてみます
Visualize
タブを開き、Line Chart
を選択From a new search
を選択
左側の設定(グラフの表示に関する設定)を以下のように変更
▶︎
ボタンを押すとグラフが表示される
・・と、まあグラフは表示できましたが、
これだけだとよく分からないので^-^;、
次回は大量にデータを登録して使ってみたいと思います。
登録:
投稿 (Atom)