IntelliJ IDEA 13のJVM設定

初期値のままだと結構IntelliJスワップするので、idea.exe.vmoptionsをこんな感じにしてある。

-server
-Xms512m
-Xmx2048m
-XX:MaxPermSize=512m
-XX:ReservedCodeCacheSize=128m
-ea
-Dsun.io.useCanonCaches=false
-Djava.net.preferIPv4Stack=true
-XX:+UseCodeCacheFlushing
-XX:+UseConcMarkSweepGC
-XX:SoftRefLRUPolicyMSPerMB=50

Windows用のPostgreSQL 9.3でUUIDを使えるようにする

シーケンスの代わりにuuidをIDとして使う | Siguniang's Blogを見ながら必要なことだけをメモ。

uuid-osspを有効にする

Windows用のPostgreSQLには最初からライブラリが同梱されているので、有効化する。

CREATE EXTENSION "uuid-ossp";

UUIDを生成する

v1, v3, v4, v5が使えるらしいけど、実質v1とv4ぐらいしか使わないよね。

select uuid_generate_v1();
select uuid_generate_v4();

UUIDをプライマリキーにしたテーブルを作る

CREATE TABLE sample (
    id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
    value text
)

Windows 8.1上にScalatra開発環境を作る

基本手順は公式ページに書いてある通りだが、Windowsだと多少面倒が発生する。

JDKのインストール

OracleのページからJDK 7u51をダウンロードしてインストール。

Conscriptのインストール

Conscriptとは、GitHubでホストされているScalaプログラムの管理(インストール/アップデート)を行うためのツールのようだ。GitHubにアクセスする関係上、Gitコマンドに依存しているらしい(未確認)ので、予めGit for Windows等をインストールしないとダメかもしれない。

Windowsでインストールする場合は、ConscriptのGitHubページからダウンロードできるJava製のインストーラを利用する。おそらくjarをダブルクリックでインストーラが起動できるはずだが、インストーラが起動しない場合は、次のようなコマンドを実行する。

$ java -jar conscript-0.4.4.jar

インストール処理が完了しても、渋いインストーラ画面は表示されっぱなしなので注意が必要である。なお、%USERPROFILE%\bin に対してPATHが通ってない場合、インストール完了時に次のような画面が表示される。

f:id:terurou:20140221184751p:plain

このような画面が出た場合は、PATHに %USERPROFILE%\bin を通しておく。

giter8のインストール

giter8はテンプレートからScalaプロジェクトのスケルトンを作成するツールのようだ。

インストールは次のコマンドを実行するだけで良い。

$ cs n8han/giter8

sbtのインストール

次のsbtのダウンロードページから、MSIをダウンロードしてきてインストール。

Setup — sbt Documentation

scalatraプロジェクトの作成

適当なディレクトリに移動して、次のコマンドを実行する。

$ g8 scalatra/scalatra-sbt

プロジェクトのひな形を作るための設定の入力を求められるので、適当に入力するとプロジェクトが作成される。設定内容についてはFirst steps | Scalatraを参照。

プロジェクトが作成されたら、ルートディレクトリ内に、次の内容で sbt.bat ファイルを作成する。

@echo off
java -Dinput.encoding=Cp1252 -Xms512M -Xmx1536M -Xss1M -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=256M -jar "%SBT_HOME%bin\sbt-launch.jar" %*

scalatraプロジェクトの起動

次のコマンドを実行すると、 http://localhost:8080/ で作成したscalatraアプリにアクセスできる。sbt初回起動時は依存ライブラリのダウンロードで非常に長い時間待たされるので注意…。

$ sbt
> container:start

また、container:start した後で、sbt上で次のコマンドを実行すると、ファイルを編集した際に自動コンパイルしてくれるようになる。

> ~ ;copy-resources;aux-compile

IDE用の設定

EclipseIntelliJEmacs用のプロジェクトファイルを出力することができる。また、EclipseIntelliJではデバッグも可能になる。詳細は次のページを参照。

IDE Support | Scalatra

Scalatra + ScalaTestでunit test

公式ドキュメントの記載通りに設定すれば動く。

ScalaTest | Testing | Scalatra guides

設定

project/build.scalaのlibraryDependenciesに、次を追加。

"org.scalatra" %% "scalatra-scalatest" % "2.2.2" % "test"

テストコード

package test.app

import org.scalatra.test.scalatest._
import org.scalatest.FunSuite

class TestServletTests extends ScalatraSuite with FunSuite {
  addServlet(classOf[TestServlet], "/*")

  test("simple get") {
    get("/") {
      status should equal (200)
      body should include ("Hello")
    }
  }
}

テスト実行

$ sbt
> test

特定のテストだけ動かしたい時は、次のようにする。

$ sbt
> test-only org.acme.RedSuite org.acme.BlueSuite
> test-only *RedSuite

細かい点については、ScalaTestのページを参照。

ScalaTest

Debian wheezy(Debian 7.4)にPostgreSQL 9.3(最新版)をインストール

公式ページの手順通り。

PostgreSQL: Linux downloads (Debian)

PostgreSQLのaptリポジトリを追加

/etc/apt/sources.list.d/pgdg.list を作成して、次の通り記述する。

deb http://apt.postgresql.org/pub/repos/apt/ wheezy-pgdg main

リポジトリのキーを追加して、パッケージリストを更新。

$ wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
$ sudo apt-get update 

PostgreSQL 9.3をインストール

$ sudo apt-get install postgresql-9.3

Debian wheezy(Debian 7.4)にOracle JDKをインストール

基本的には次の手順の通りとなる。

JavaPackage - Debian Wiki

java-packageのインストール

JDKをインストールするために必要らしい。

$ sudo apt-get -y install java-package

JDKのダウンロード

GUIをインストールしてない環境でもいけるように、wgetで無理やりダウンロードしてくる。JDK 7u51 x64のtar.gz版をダウンロードする場合は次の通りとなる。

$ wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com" "http://download.oracle.com/otn-pub/java/jdk/7u51-b13/jdk-7u51-linux-x64.tar.gz"

JDKをwgetで直接ダウンロードしたいとき

JDKのインストール

$ make-jpkg jdk-7u51-linux-x64.tar.gz
$ sudo dpkg -i oracle-j2sdk1.7_1.7.0+update51_amd64.deb
$ sudo update-alternatives --config java 

Debian wheezy(Debian 7.4)のVagrant Boxを作成する

基本的な手順はCreating a Base Box - Vagrant Documentationを参照。

Debuan wheezyのインストールイメージを取得

VirtualBoxVMを作成(Debianのインストール)

仮想マシン作成時のポイントとしては、

  • VM作成時の名前はなんでもOK。最終的なBox名とは関係がない(ここではdebian_wheezy_x64とした)
  • オーディオとUSBコントローラを無効化(Vagrant推奨)
  • メモリは512MBにする(Vagrant推奨)
  • 仮想ディスクはvmdkにする(これがVagrant界隈では普通っぽい)

となる。ただ、自分の好みの問題(どうせ後から増やすので)、メモリは1024MBとした。あと、仮想ディスクは、とりあえず可変32GBにしておいた。その他のVirtualBox上の設定は初期設定のまま。

次に、Debianインストール時の設定だが、

  • 日本語環境向けに色々選択
  • rootパスワードは vagrant にする
  • ログインアカウントに vagrant(パスワードは vagrant)を作成
  • 初期インストールパッケージは「標準システムユーティリティ」と「SSHサーバ」のみを選択

ぐらいしか気にするところはなかった。

VirtualBox NATを仮設定

Debianをインストールが完了した時点でSSH接続できる。初期セットアップ時の作業が楽になるので、暫定的にSSH接続できるようにVirtualBoxのNATを変更する。とりあえず、次のように設定した。

f:id:terurou:20140220151534p:plain

これで、localhost:10022にssh接続すると、VMの方に繋がるようになる。

GRUBの設定

VMを起動するたびにブートローダが表示されても邪魔くさいので、表示しないようにする。

/etc/default/grub を次のように設定する。

GRUB_DEFAULT=0
GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=10
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""

設定ができたら、

$ update-grub

grub2 - How do I hide the GRUB menu showing up in the beginning of boot? - Ask Ubuntu

パッケージのアップデート

念のためアップデートする。netinst CDを利用しているので、たぶん更新はないはず。

$ apt-get update
$ apt-get upgrade

VirtualBox Guest Additionsのインストール

まずはVirtualBox側でGuest Additonsのインストールメディアをマウントする。

f:id:terurou:20140220163701p:plain

操作ができたら、次のコマンドを実行してインストール。

$ mount /media/cdrom
$ sh /media/cdrom/VBoxLinuxAdditions.run

IPv6無効化

Vagrant環境では使うことはないのでOFFにする。

/etc/sysctl.conf の末尾に次を追加。

net.ipv6.conf.all.disable_ipv6 = 1

設定を反映する。

$ sysctl -p

sudoの設定

Vagrantの設定要件として、パスワード無しのsudoを設定する必要がある。

まずはsudoのインストール。

$ apt-get install sudo

sudoをインストールしたら、vagrantユーザ用に設定を追加する。

$ visudo

で、エディタが開くので、末尾に以下を追加。

vagrant ALL=(ALL) NOPASSWD: ALL

SSHの設定

とりあえず、Vagrantのマニュアルでは、sshdの設定で「UseDNS no」にしておくべし(どうせローカルからしか繋がないので)と書いてあるので、それに従う。

/etc/ssh/sshd_configを開いて、次を末尾に追加する。

UseDNS no

普通にsshdを設定すると、ここで「PermitRootLogin no」を書きたくなるけど、他のイメージを確認したら、yesのままにしてあった。

続いてvagrantユーザ用にSSH公開鍵を設定する。

手順を簡略化するために、vagrantユーザで次のコマンドを実行する。

$ cd ~
$ mkdir .ssh
$ cd .ssh
$ wget http://github.com/mitchellh/vagrant/raw/master/keys/vagrant.pub
$ mv vagrant.pub authorized_keys
$ chmod 600 authorized_keys
$ chmod 700 .

あとはVagrant用の秘密鍵を使って接続できるか確認する。

MTAの停止(任意)

デフォルトでMTA(exim4)がインストールされて、自動でサービスが起動するようになってるっぽいので、気になる場合は止める。

$ update-rc.d -f exim4 remove

Puppet/Chefのインストール(任意)

必須ではないが、入れておいて損はない。

Puputをインストール。

$ apt-get -y install puppet puppetmaster

Chefをインストール。

$ apt-get -y install chef

インストール時にChef Clientの接続先の設定を聞かれるので、空欄のまま無視で良い。Chefのインストールが終わったら、Chef Clientのサービスを停止しておく。

$ /etc/init.d/chef-client stop
$ update-rc.d -f chef-client remove

追加で色々インストール(任意)

お好きな物入れてください。とりあえずVimとGitあたりは入れといた方が無難っぽいので入れた。あと、curlもよく使うので入れる。

$ apt-get -y install vim git curl

あと、私はWindowsで使う前提で、SharedFolderを使う時に問題がある(VirtualBoxのShared Folderが遅すぎるのでどうにかする(Windows向け) - terurouメモ)ので、sambaもインストールした。

コマンド履歴の削除(任意)

なんとなくコマンド履歴が残っているのが嫌なのでクリアする。

$ export HISTSIZE=0
$ rm .bash_history

Vagrant用のBoxを作成

ホスト側で次のコマンドを実行する。前述の手順で一時的に設定NATテーブルは、vagrantが自動的に消してくれるので、気にしなくてもよい。

まずはパッケージを作成する。vagrant packageコマンドのVM名は ~/VirtualBox VMs に存在するディレクトリ名を指す。

$ vagrant package --base debian_wheezy_x64

これでカレントディレクトリに package.box が作成される。ここから先は普通にVagrantを操作するのと変わらない。

$ vagrant box add my-box package.box
$ vagrant init my-box
$ vagrant up