2009年5月31日日曜日

JavaOne 2009 Script Bowl

JavaOne 2009では、去年のJavaOne 2008に引き続きScript Bowlのセッションがあるようです。
Script Bowlでは、JavaVM上のスクリプト言語同士でプログラミング対決をしたり、
言語の特長を紹介したりするようです。
去年は、Scala,Groovy,JRuby, Jythonだったのですが、
今年はこれにClojureが加わって5つの言語で対決するようです。
JavaVM上のスクリプト言語は、他にも山ほどあるわけで、
JavaOneで5つめに選ばれたってことは、けっこう注目度がたかいということでしょうか。
これをきっかけにさらに盛り上がるといいなぁ。

2009年5月19日火曜日

Clojure勉強の進捗

1.Clojureでマクロ
マクロの練習に、パターンマッチングのマクロを書いた。
マクロの基本的な書き方や、mapやvector、sequenceの基本もわかってきた。

gitの使い方を覚えて、antの使い方の基礎を覚えたら、
githubにのせてみたい。

2.Clojureでモナド
Clojure.contrib.monadsの使い方を下記の解説をみて覚える。
Monads in Clojure
A monad tutorial for Clojure programmers (part 1)
part 2
part 3
part 4

http://stefan-klinger.de/
のところにある
The Haskell Programmer's Guide to the IO Monad — Don't Panic.
をもう一度読む。
Arrow syntax
8.10. アロー記法
も読んでArrowも理解したい。

3.その他
軽くJavaの復習。antやJDEEなども。
あとConcurrent-Programming-Java-TM-Principles
を注文したのできたら読む。

LWGL - Lightweight Java Game Library
というのを見つけた。よさそう。

2009年5月10日日曜日

Tokyo CabinetをUbuntuにインストール

Tokyo Cabinet
Tokyo CabinetはHirabayashi Mikio 氏により新しく実装された高速なDBMです。

DBMというのは、Database Managerの略で、非常にシンプルなキー:バリュー型の
データベースです。プログラミングでいうところのハッシュマップや連想配列、辞書と同じような機能を、ファイル上に永続化して使用できるというようなものです。
Berkeley DBなどが有名です。

Tokyo Cabinetは、とても新しく実装されたDBMで、
高速な処理や非常に大きいデータベースファイルを扱えるなどのすぐれた
特徴を持ち、Java,Perl,Ruby,Lua用のAPIが公式に用意されています。

ClojureでオレオレDBMSを実装するためのバックエンドとして使いたいと思っているので、
今回はまず、UbuntuにTokyo CabinetとJava APIをインストールします。

sudo apt-get update
wget http://tokyocabinet.sourceforge.net/tokyocabinet-1.4.20.tar.gz
sudo apt-get install build-essential
sudo apt-get install zlib1g-dev
sudo apt-get install libbz2-dev

wget http://tokyocabinet.sourceforge.net/tokyocabinet-1.4.20.tar.gz
tar xzvf tokyocabinet-1.4.20.tar.gz
cd tokyocabinet-1.4.20
export CPPFLAGS="-I/usr/lib/jvm/java-6-openjdk/include/"
export JAVA_HOME=/usr/lib/jvm/java-6-openjdk
export PATH=$JAVA_HOME/bin:$PATH

./configure
make

ここで前回インストールしたPacoを使用して
sudo make install

のかわりに、
sudo paco -D make install

としてインストールしてみた。
つぎにJava用APIをインストール。

wget http://tokyocabinet.sourceforge.net/javapkg/tokyocabinet-java-1.18.tar.gz
tar xzvf tokyocabinet-java-1.18.tar.gz
cd tokyocabinet-java-1.18
./configure
make
make check
sudo paco -D make install


http://tokyocabinet.sourceforge.net/javadoc/
にあるサンプルを実行。

import tokyocabinet.*;
% cat TCHDBEX.java
import tokyocabinet.*;

public class TCHDBEX {
public static void main(String[] args){
HDB hdb = new HDB();
if(!hdb.open("casket.tch", HDB.OWRITER | HDB.OCREAT)){
int ecode = hdb.ecode();
System.err.println("open error: " + hdb.errmsg(ecode));
}
if(!hdb.put("foo", "hop") ||
!hdb.put("bar", "step") ||
!hdb.put("baz", "jump")){
int ecode = hdb.ecode();
System.err.println("put error: " + hdb.errmsg(ecode));
}
String value = hdb.get("foo");
if(value != null){
System.out.println(value);
} else {
int ecode = hdb.ecode();
System.err.println("get error: " + hdb.errmsg(ecode));
}
hdb.iterinit();
String key;
while((key = hdb.iternext2()) != null){
value = hdb.get(key);
if(value != null){
System.out.println(key + ":" + value);
}
}
if(!hdb.close()){
int ecode = hdb.ecode();
System.err.println("close error: " + hdb.errmsg(ecode));
}

}
}

% javac TCHDBEX.java
% ls
TCHDBEX.class TCHDBEX.java% java TCHDBEX
hop
foo:hop
bar:step
baz:jump

% ls
TCHDBEX.class TCHDBEX.java casket.tch


インストールは成功した模様。

PacoをUbuntuにインストール

"make install"したソフトウェアを管理できる超便利ツール「Paco」
を参考にPacoをUbuntuにインストール。

sudo apt-get update
sudo apt-get install build-essential
sudo apt-get install libgtkmm-2.4-dev
wget http://downloads.sourceforge.net/paco/paco-2.0.6.tar.gz
tar zxvf paco-2.0.6.tar.gz
cd paco-2.0.6/
./configure
make
sudo make install
sudo make logme

2009年5月8日金曜日

Clojure 1.0

Clojure 1.0 - Clojure Clojure | Google Groups
Clojure: Clojure 1.0News about Clojure by Rich Hickey

ついにClojureの1.0がでました。
Congratulation!

2009年5月4日月曜日

zsh上でsvnの補完がエラーになる

zsh上でsvnコマンドの補完が
_arguments:comparguments:303: invalid argument: ARG
というメッセージとともにエラーになる症状になった。
どうも、subversion1.5とzsh4.3.4の組み合わせで、
zsh4.3.4の
/usr/share/zsh/4.3.4/functions/_subversion
が、subversion1.5での変更に対応していないことが原因のよう。
http://d.hatena.ne.jp/sotarok/20080813/1218649287
こちらを参考に、

% curl -O http://gvn.googlecode.com/svn/trunk/contrib/zsh/_subversion
% sudo mv _subversion /usr/share/zsh/site-functions

で解決しました。
ありがとうございます。

2009年5月1日金曜日

ScalaをUbuntuにインストール

UbuntuにScalaをインストール。
http://lovehateubuntu.blogspot.com/2008/05/adventures-in-scala-part-i.html
http://d.hatena.ne.jp/riue/20080105/1199552108
を参考にしました。

Javaは前回のClojureのインストール時に
sudo apt-get install openjdk-6-jdk
でインストール済み。
wget http://www.scala-lang.org/downloads/distrib/files/scala-2.7.4.final.tgz
tar xzvf scala-2.7.4.final.tgz
sudo mv scala-2.7.4.final /usr/share/scala
sudo ln -s /usr/share/scala/bin/scala /usr/local/bin/scala
sudo ln -s /usr/share/scala/bin/scalac /usr/local/bin/scalac

ビルドをしていないので、
ダウンロードしてパスを通しただけです。
.emacsに
(add-to-list 'load-path "/usr/share/scala/misc/scala-tool-support/emacs")
(require 'scala-mode-auto)
(setq scala-interpreter "/usr/local/bin/scala")