Eclipseフォーマッターの1行の文字数を変更する
Eclipseのフォーマッター機能を使うとデフォルト設定の80文字以上の場合は改行される。
この文字数をもっと増やしたい場合は以下の手順で変更する。
・Window -> Preferences -> Java -> Code Style -> Formatter -> Edit... -> Line Wrapping -> Maximum line width
がデフォルトで 80 になっているところを変更する。
また、コメント部分に対するフォーマットは別に設定されているのでこちらも変更する。
・Window -> Preferences -> Java -> Code Style -> Formatter -> Edit... -> Comments -> Maximum line width for comments
Profile name が「Eclipse [built-in]」のままだと変更を適用できないので別名にしてから適用ボタンを押す。
NIO2を使ったファイルの読み書きメモ
Java7のNIO2を使った簡単なファイル読み書き例。
package example; import java.io.IOException; import java.nio.charset.Charset; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.nio.file.StandardOpenOption; import java.util.List; public class Nio2Example { static final Charset utf8 = Charset.forName("UTF-8"); // NIO2でファイル読み込み public static List<String> read() throws IOException { Path path = Paths.get("C:/work/foo.txt"); List<String> lines = Files.readAllLines(path, utf8); for (String s : lines) System.out.println(s); return lines; } // NIO2でファイル書き込み public static void write(List<String> lines) throws IOException { Path path = Paths.get("C:/work/foo2.txt"); Files.write(path, lines, utf8, StandardOpenOption.CREATE, StandardOpenOption.APPEND); } public static void main(String[] args) throws IOException { write(read()); } }
MacでLibraryフォルダをFinderで見るには
Lion から /Users/ユーザ名/Library のフォルダは不可視になったらしい。
Finder から見るには
ターミナルで
$ chflags nohidden ~/Library
と打てば Finder 上に表示されるようになる。
不可視状態に戻すには
$ chflags hidden ~/Library
と打つ。
または、Finder の「移動」 メニューを表示した状態で
option キーを押すと「ライブラリ」が現れる。
CentOS に Kestrel をインストールして試す 2
環境:CentOS5.5 64bit
kestrel:2.3.2-SNAPSHOT
前回はバイナリをダウンロードしてインストールしたが今回は sbt を使ってソースからビルドする。
java 6 と sbt 0.11.2 が必須。
また、kestrel のプロセスをデーモン化する。
robey/kestrel - GitHub
https://github.com/robey/kestrel
前準備
・Java をインストールしておく。
# パスと JAVA_HOME の設定 export PATH=$PATH:/usr/local/java/bin export JAVA_HOME=/usr/local/java
・git をインストールしておく。
sbt のインストール
sbt-launch.jar とそれを実行するスクリプトを用意する。
harrah/xsbt - GitHub
https://github.com/harrah/xsbt
simple build tool
http://www.scala-sbt.org/
SBTのセットアップ.md — Gist
https://gist.github.com/1139288
1. sbt-launch.jar をダウンロードして ~/bin に置く。
(kestrel のドキュメントで指定してある 0.11.2 をダウンロードすること。
上記 のサイトからのダウンロードは現在 0.11.3-2 にリンクが貼られているがこれを使ったら build に失敗した)
$ mkdir ~/bin $ cd bin $ wget http://typesafe.artifactoryonline.com/typesafe/ivy-releases/org.scala-tools.sbt/sbt-launch/0.11.2/sbt-launch.jar
2. jar を実行するコマンドを、sbt という名前のファイルに書いて ~/bin に置く。
$ vi ~/bin/sbt java -Xmx512M -jar `dirname $0`/sbt-launch.jar "$@"
3. スクリプトを実行ファイルにする
$ chmod u+x ~/bin/sbt
4. sbt を実行してREPLを起動する
$ sbt
初回なのでいろいろ必要な jar のダウンロードが行われる。
kestrel のインストール
$ cd ~ $ git clone https://github.com/robey/kestrel.git $ cd kestrel $ sbt clean update package-dist
ビルドが終わると dist/kestrel にいろいろファイルができている。
$ ls -l dist/kestrel config kestrel_2.9.1-2.3.2-SNAPSHOT.jar kestrel_2.9.1-2.3.2-SNAPSHOT-javadoc.jar kestrel_2.9.1-2.3.2-SNAPSHOT-sources.jar kestrel_2.9.1-2.3.2-SNAPSHOT-test.jar libs scripts
起動は dist/kestrel/scripts にある kestrel.sh から行うのだが
このファイルの中身を見ていると
APP_NAME="kestrel" APP_HOME="/usr/local/$APP_NAME/current"
となっているのでこれに合わせて /usr/local/kestrel/current を作成してここにコピーする。
# mkdir -p /usr/local/kestrel/current # cp -a ~/kestrel/dist/kestrel/* /usr/local/kestrel/current
pid ファイルの出力先ディレクトリを作成しておく。
# mkdir /var/run/kestrel
daemon のインストール
daemon
http://libslack.org/daemon/
# cd /usr/local/src # wget http://libslack.org/daemon/download/daemon-0.6.4.tar.gz # tar xvf daemon-0.6.4.tar.gz # cd daemon-0.6.4 # ./configure && make && make install
/usr/local/bin/daemon が作成される。
kestrel の起動 / 停止
production モードの場合は kestrel.sh を使用。
kestrel の起動
# /usr/local/kestrel/current/scripts/kestrel.sh start Starting kestrel... done.
kestrel の停止
# /usr/local/kestrel/current/scripts/kestrel.sh stop Stopping kestrel... done.
development モードの場合は devel.sh を使用。
kestrel の起動
# /usr/local/kestrel/current/scripts/devel.sh Starting kestrel in development mode...
development モードの起動スクリプト devel.sh ではデーモン化せず、jar を実行してるだけ。
追記:
snapshotではないkestrel 2.3.2以降のkestrel.shでは
daemonコマンドを使用するのではなくdisownコマンドを使ってデーモン化するにように変更された。
CentOS に Leiningen を使って Clojure の実行環境を作る
環境:CentOS5.5 64bit
目的
CentOS で Leiningen (ライニンゲン)を使って Clojure の REPL を使えるようにする。
Leiningen は Clojure のビルドツール。Java でいう Maven、Scala でいう sbt のようなもの。
Clojure 自体のインストールは Leiningen が勝手にやってくれる。
technomancy/leiningen - GitHub
https://github.com/technomancy/leiningen
前準備
・Java のインストール
こちらはインストール済み。
・rlwrap のインストール
rlwrap とは readline のラッパーで readline に対応していないCUIプログラムを readline 化することができ、
コマンド実行履歴などが使えるようになる。
lein コマンドで rlwrap を使っているので入ってなければ先にインストールしておく。
CentOS5.5 には入っていなかったのでインストールする。
EPELリポジトリを追加しておく。
# yum -y install rlwrap --enablerepo=epel Installed: rlwrap.x86_64 0:0.37-1.el5
インストール
インストールは簡単で
https://raw.github.com/technomancy/leiningen/stable/bin/lein
ここにあるシェルスクリプトをダウンロードして、パスの通ったところに置き、実行権限をつければOK。
$ mkdir ~/bin $ cd ~/bin $ wget https://raw.github.com/technomancy/leiningen/stable/bin/lein $ chmod 755 lein
バージョン確認
$ lein version Leiningen 1.7.1 on Java 1.6.0_20 Java HotSpot(TM) 64-Bit Server VM
leinコマンド初回実行時に clojure-1.2.1.jar が自動的にダウンロードされた。
また、 .lein や .m2 といったディレクトリが作成される。
REPL起動
$ lein repl REPL started; server listening on localhost port 57071 user=> (+ 1 2 3) 6 user=>
動いた!
その他
Try Clojure
http://tryclj.com/
LISPを学ぶサイトを作った - 西尾泰和のはてなダイアリー
http://d.hatena.ne.jp/nishiohirokazu/20120707/1341654840
LISP on browser
http://nhiro.org/learn_language/LISP-on-browser.html
Linuxでディスクの使用容量を調べる
オプションとか忘れるのでメモしておく。
df コマンド
ディスク(パーティション)ごとに使用容量、空き容量、使用率を表示する。
# df -h Filesystem Size Used Avail Use% Mounted on /dev/sda3 5.4G 4.7G 382M 93% / /dev/sda1 494M 23M 446M 5% /boot tmpfs 502M 0 502M 0% /dev/shm
du コマンド
カレントディレクトリから再帰的にディレクトリの容量を表示する。
# du -h
「--max-depth」で階層の深さを指定できる。
# du -h --max-depth 1
例:
/ 以下のディレクトリ毎の容量を調べる。
# du -h --max-depth 1 / 236M /lib 79M /var 586M /home 8.0K /selinux 8.0K /srv 13M /boot 112K /dev 8.0K /mnt 0 /proc 18M /lib64 8.0M /bin 12K /media 3.8G /usr 240K /tmp 0 /sys 224K /root 16K /lost+found 30M /sbin 51M /etc 19M /opt 4.8G /
どのディレクトリの使用容量が特に多いのか知りたい場合、次のようなコマンドで調べることができる。
例:
/usr 以下のディレクトリを使用容量順にソートする。
# du -S /usr | sort -n ... ... ... 62764 ./lib64 65464 ./local/java16020/jre/lib 1431596 ./local/zookeeper-3.4.3/data/version-2 2586856 ./local/storm-0.7.4/logs
一番下に一番容量を食っているディレクトリが表示される。
-S はサブディレクトリの使用量を含めずに、個々のディレクトリの使用量を分けて表示する。
-h をつけると正しくソートされなくなるのでつけない。
CentOS に Kestrel をインストールして試す 1
環境: CentOS5.5
Kestrel は Twitter謹製のメッセージキューサーバー。
特徴は
- 速い → JVM上で動く。
- 小さい → scalaで約2,500行。nettyを使ってる。
- 耐障害性 → メッセージを失わないようファイルシステムにジャーナルを記録している。
- 信頼性 → キューから取り出したメッセージの処理漏れを防ぐことができる。
とのこと。
また kestrel との通信は3つのプロトコルが用意されている。
- memcache: the memcache protocol, with some extensions
- thrift: Apache Thrift-based RPC
- text: a simple text-based protocol
前準備
Java をインストールしておく。
インストール
ここからビルド済みバイナリをダウンロードする。
http://robey.github.com/kestrel/
現在最新の kestrel 2.3.1 を落としてきた。
$ wget http://robey.github.com/kestrel/download/kestrel-2.3.1.zip $ unzip kestrel-2.3.1.zip
設定ファイルはconfディレクトリにある。
$ ls -l kestrel-2.3.1/config development.scala production.scala
サーバ起動
$ cd kestrel-2.3.1 $ sudo java -jar kestrel_2.9.1-2.3.1.jar & [1] 9672
ログファイルを確認する。
デフォルトでは /var/log/kestrel に出力されている。
起動時のログは以下のこんな感じ。
$ less /var/log/kestrel/kestrel.log INF [20120719-16:59:56.538] stats: Starting LatchedStatsListener INF [20120719-16:59:57.025] admin: Starting TimeSeriesCollector INF [20120719-16:59:57.043] admin: Admin HTTP interface started on port 2223. INF [20120719-16:59:57.050] kestrel: Kestrel config: listenAddress=0.0.0.0 memcachePort=Some(22133) textPort=Some(2222) queuePath=/var/spool/kestrel expirationTimerFrequency=Some(1.seconds) clientTimeout=None maxOpenTransactions=100 connectionBacklog=None INF [20120719-16:59:57.263] kestrel: Starting up background expiration task. INF [20120719-16:59:57.277] kestrel: Starting background-expiration INF [20120719-16:59:57.379] kestrel: Kestrel 2.3.1 started.
4つのポートを使っている。
memcacheListenPort -> 22133
textListenPort -> 2222
thriftListenPort -> 2229
admin.httpPort -> 2223
このへんはさきほどの設定ファイルで設定している。
2223のAdmin画面は現状なにも用意されていない。今後追加するかもってメッセージが書いてあるだけ。
動作確認
http://yuroyoro.hatenablog.com/entry/20090803/1249297348
を参考に memcached プロトコルを使ってキューにメッセージを入れたり出したりしてみる。
telnetコマンドで接続。
$ telnet localhost 22133 Trying 127.0.0.1... Connected to localhost.localdomain (127.0.0.1). Escape character is '^]'.
memcached コマンドは以下フォーマット
set <キー> <フラグ> <有効期間> <サイズ>
2つメッセージをキュー入れる。
キー名は foo とする。
memcached のキー名が、kestrel のキュー名に相当。
set foo 0 0 3 aaa STORED set foo 0 0 4 bbbb STORED
今度はキューから2つのメッセージを取り出す。
get foo VALUE foo 0 3 aaa END get foo VALUE foo 0 4 bbbb END
問題なく動作した。
/var/log/kestrel ディレクトリに foo というバイナリファイルができていた。
これがジャーナルなのかな。
サーバを落として終了。
kill 9672
参考:
http://samuraism.jp/diary/2011/11/20/1321770660000.html
http://blog.asial.co.jp/875