Jmeter 2.10 で proxyserver.jks error

Jmeter で Proxy 立ててサンプラーを作成しよう思ったのですが、 Proxy を開始しようとするとエラーが発生しました。 jmeter.log を見るとこんなメッセージが出てます。

WARN - jmeter.protocol.http.proxy.ProxyControl: Could not open/read key store C:\Applications\apache-jmeter-2.10\bin\proxyserver.jks (指定されたファイルが見つかりません。)

それとなくググってみたら、どんぴしゃでヒット。 Jmeter 2.10, proxyserver.jks error

そもそもインストール時に要件を確認すべきだったのですが、jmeter 2.10 って、 JDK7 が必須なんですね。作業していた端末、 java7 は入っていたのですが、 JRE でした。 JDK7 を入れてパス通してあげたら無事起動出来ました。

Sublime Text + Emmet + Hayaku をインストール

社内有識者におすすめなエディタを聞いたところ、お薦めらしいので入れてみました。

Sublime Text
http://www.sublimetext.com
記事時点でStableだった2.0.2を使用。

Package Control のインストール

Package を入れるためにはまず「Package Control」なるものをインストールします。
手順は https://sublime.wbond.net/installation の通り。
今回は"Simple"の手順でやってみました。

メニューから View > Show Console で画面下部にコンソール表示。コンソールに以下コマンドをコピペして実行します。上記サイトの通り1LinerでもOKです。Sublime Text の 2 と 3 で実行コマンドが違うようですね。

import urllib2,os;
pf='Package Control.sublime-package';
ipp = sublime.installed_packages_path();
os.makedirs( ipp ) if not os.path.exists(ipp) else None;
urllib2.install_opener( urllib2.build_opener( urllib2.ProxyHandler( )));
open( os.path.join( ipp, pf), 'wb' ).write( urllib2.urlopen( 'http://sublime.wbond.net/' +pf.replace( ' ','%20' )).read());
print( 'Please restart Sublime Text to finish installation')

これで再起動すると、Package Control が有効になります。

Package の追加とインストール

ctrl + Shift + P でコマンドパネルを呼び出し、"repo"と打ち込めば「Package Control: Add Repository」がインクリメントサーチで出てきます。選択すると画面下部に Github などの URL を入力する欄が出てくるので、以下URLを打ち込みます。

■Emmet
https://github.com/sergeche/emmet-sublime

■hayaku
https://github.com/hayaku/hayaku

もう一度コマンドパネルを呼び出し、「Package Control: Install Package」を選択、上で追加したパッケージを選択して再起動するとインストール完了です。

試しに新規ファイルで書いてみます。

div#head>#siteName^div#main

と書いて、Ctrl + e で展開、、と。
すると「Please wait a bit while PyV8 binary is being downloaded」とエラーが出ました。

https://github.com/sergeche/emmet-sublime/issues/259 をみると、実行するために必要なものが足りないようです。https://github.com/emmetio/pyv8-binaries#readme から使用OSに応じたZIPファイルを落とします。

コマンドパネルを呼び出して"Browse Package"を選択、開いたディレクトリに上で落としたZIPを展開したフォルダをコピーして再起動すれば、Ctrl + e で展開出来るようになりました。

TDD の 「型」 を学ぶために始めたアンクルおじさんのBowling Game

先日から読み始めた「Clean Coder」で紹介されていた「型」。

Clean Coder プロフェッショナルプログラマへの道

Clean Coder プロフェッショナルプログラマへの道

恥ずかしながら知らなかったのですが、有名なんですね。

ArticleS.UncleBob.TheBowlingGameKata

本文の一番最初にある「Here」にパワポがリンクされているので*1これをダウンロードして写経。

パワポには TDD やリファクタリングの流れ、その理由などが簡潔に書いてあるので、勉強になります。

この型を何度も何度も繰り返すことで、意識の流れや手の動きを自分のカラダに定着させるようです。

私はNetBeans + JUnit4 でやったのでパワポのコードは若干異なりましたが、こんな感じ。

iwa4/BowlingGame · GitHub

そういや、以前読んだWEB+DBPressの記事で JUnit のテストメソッドは日本語で書いた方がテスト結果一覧を見たときに分かりやすいよ、という記載があったのを思い出した。

日本語メソッドっていけるんですね。

*1:最初どこを見ればいいのか分からなかった^^;

Node.js + Express + MongoDB(mongoose) を始める

内容はほぼCreating a REST API using Node.js, Express, and MongoDB | Christophe Coenraetsのままです。
終盤での mondodb のアクセスの部分のみ元サイトと違い mongoose を使ったコードに置き換えてみました。
環境は Windows8 pro x64 です。




Node.js をインストールする

  • node.jsにて、インストールボタンをクリック。
  • ダウンロードしたインストーラを実行。インストール完了時点でパスが通っていました。
  • コマンドプロンプトで "node -v"と打ち、バージョンが返ってくることを確認しておきます。

これで Node.js の使用準備はOK。

  • 今回作業用のフォルダを作成しておきます。(以後、ルートフォルダと呼びます。)
  • ルートフォルダ内に server.js を作成します。公式にもあるおなじみのやつ。

node server.js

http://localhost:3000 にアクセスすると、"Hello, World"の文字列が返ってくることが確認できます。




Express をインストールする

ExpressはNode.jsの軽量Webアプリケーションフレームワークです。少し調べたところ、Express だと規模が大きくなると1つのファイルに色んな処理が入って管理が大変になるらしいです。
将来的にはSailsというやつがいいのかな?この辺りは今後の調査対象ということで。
では、本題に戻って。


  • ルートフォルダ内に package.json を作成します。
  • コマンドプロンプトで以下を実行し、Express をインストールします。
# プロキシ環境の場合は事前にプロキシを指定しておく
npm config set proxy http://url:port
npm install

Expressモジュールがnode_modulesのサブフォルダにインストールされます。


server.js を修正してサーバーを再起動し、Express が動作していることを確認します。

以下のアドレスにアクセスすると、それぞれの JSON が返ってくることが確認できます。

データベース内のすべてのワインを取得: http://localhost:3000/wines
特定のIDでワインを取得: http://localhost:3000/wines/1

ドメインオブジェクトの分離

ドメインオブジェクト(今回は wine)をモジュール化して server.js から分離します。

  • ルートフォルダ配下に routes フォルダを作成します。
  • routes フォルダに wines.js を作成し、server.js から wine.js を呼び出すように変更します。

  • サーバーを再起動し、前回と同様に JSON が返ってくることをブラウザで確認します。

MongoDB をインストールする

  • Downloads - MongoDBから、ダウンロードして解凍します。
  • Install MongoDB on Windowsに従ってセットアップします。
    • 解凍後にやったのは、data フォルダと data\db フォルダを用意したぐらい。
    • この状態で mongod.exe を実行しても上記フォルダが not found となったので、以下のように --dbpath オプションで場所を指定して実行しています。何故。。
E:\Users\bin\mongodb\bin\mongod.exe --dbpath "E:\Users\bin\mongodb\data"

↑を実行して、↓と出ればOK。

・・・
Wed Jul 10 15:12:29.751 [websvr] admin web console waiting for connections on port 28017
Wed Jul 10 15:12:29.751 [initandlisten] waiting for connections on port 27017

Mongoose をインストールする

  • package.json に mongoose の依存を追記し、npm でインストールします。

npm install

mongooseについては、以下のサイトを参考にしました。
Mongoose API v3.6.14
node.js + mongoose + mongodbで遊ぶ - Last Verse
node.js から MongoDB にアクセス (Mongoose の紹介) - KrdLab's blog

公式サイトの api については、model.jsでメソッド名を見てればなんとなく用途はわかります。show code をクリックすれば具体的な実装も見れます。




REST APIの実装

URIの設計は以下になります。

Method URL アクション
GET /wines すべてのワインを取り出す
GET /wines/:id 指定された_idのワインを取り出す
POST /wines 新しいワインを追加
PUT /wines/:id 指定_idのワインを更新
DELETE /wines/:id 指定された_idのワインを削除

server.js と wine.js を以下のように書き換えます。

追加削除は問題なく出来たのですが、更新の部分で少し嵌りました。findByIdAndUpdate の第2引数に更新したい Object を入れるのですが、この Object は _id の要素を持っていてはダメです。
そのため、前の行で _id 要素を delete しているわけです。参考にしていたサイトは特定の要素を指定して更新していたので、最初気付きませんでした。よく考えれば至極当然のことなのですが。

サーバーを再起動して、上記URLを踏んで確認します。
といっても、今の状態で GET 以外のメソッドを実行することは難しいですので、元サイトではcurl and libcurlを利用してコマンドで確認しています。


最後の確認まで出来ていないけど、ここまで。
元サイトや参考にしていた下記の書籍は、mondoDBのドライバを直接叩いていましたが、個人的には mongoose はAPIが分かりやすく、好みでした。

プロになるためのJavaScript入門 ~node.js、Backbone.js、HTML5、jQuery-Mobile (Software Design plus)

プロになるためのJavaScript入門 ~node.js、Backbone.js、HTML5、jQuery-Mobile (Software Design plus)

Chrome のスニペット機能を使う

Google Chrome/Firefoxで使える開発スニペット集「DevTools Snippets」|オープンソース・ソフトウェア、ITニュースを毎日紹介するエンジニア、デザイナー向けブログで知りました。便利そうなので早速設定してみます。


  1. chrome://flags/ を開く。
  2. デベロッパー ツールのテストを有効にする」を有効にする。
  3. Chrome 再起動。
  4. F12 とかで、デベロッパー ツールを開く。
  5. 右下の歯車「Settings」を開く。
  6. 「Experiments」の中の「Snippets support」を ON にする。
  7. デベロッパー ツールを再度開くと、「Sources」タブに「Snippets」の項目が出来るので、右クリックで適宜ファイル追加。


こんな感じ。
f:id:hiwa4:20130710110720p:plain


紹介されていたスニペットをいくつか登録しておきました。
DevTools Snippets

Github で リポジトリを削除する方法

人様のプロジェクトを眺めていたら、誤って fork してしまい、自身のアカウントにもプロジェクトがコピーされてしまいました。。

で、プロジェクトを削除する方法。


  1. 削除したいプロジェクト(forkした自分のアカウント配下のやつね!)を選択。
  2. 画面右の「Settings」を押下。(画面上部のグローバルメニューじゃないよ!)
  3. 画面最下部の「Delete this repository」を押下。
  4. 削除したいアカウント名/プロジェクト名を入力して「I understand ...」を押下。#アカウント名/プロジェクト名は画面上にボールド体で表示されていますね。


元には戻せないから、わざわざプロジェクト名を入力させるようになったのかな。

gistのコードをはてなブログで表示する

gist の最後の id (https://gist.github.com/iwa4/5907911 だったら 5907911 の部分)を

[gist:id]

の書式で貼り付けます、以上。

# CSS弄って見た目調整している記事をいくつか見かけたけど、Gist記法ってのが公式である模様。