Pages

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")