BDZ-AT500を買った

もともとは半年くらい前に一つ前の機種を買おうと思っていたのだけど、最安値の頃合いを逃し、それから価格をトラックし続け、5万を切ったので購入してみた。テレビはブラビアを使っているので、DLNAで別の部屋にBDZ-AT500を置いて、ブラビアで写すというのをやってみたかった。というわけで、LANケーブルとかもいろいろと引き回し、スイッチングハブを購入し、繋いでみた。BDZ-AT500の方は電源を切っておいても待機電源?状態でネットワーク越しにアクセス出来るっぽい。再生自体も普通にできた。いくつか気になる点もある。早見(1.5倍速再生)ができないっぽいのと、削除をリモートでできない気がする。まぁ、見る分には問題ないから特に致命的ではないことだけど、早見はしたいのだけどな。そんな感じだけど、しばらく使ってみよう。

今回、ハブは新規購入したのだけど、LANケーブルを作ったりとガラクタの山をあさっていたら、使っていないハブが3つほど余っていることが発覚…。うーん、今度からはもう少し探してから買おう…。

Mahoutで自分のjarを作る

Mahoutは最新コードを利用したい場合、チェックアウトして、ビルドして、bin/mahoutを実行して、何かを実行することになります。いろいろとやっていくと自分のコードも実行したくなると思いますが、まぁ、単純にexamplesのsrc/main/javaに自分のパッケージを切って、追加する方法もあるかと思います。でも、やっぱり自分のjarを別プロジェクトにして置きたいな~、というときの方法です。Mahout的に推奨のやり方がどこかにあるのか、わからないけど…。ひとまず、私はこんな感じでやっていますということで。(もっと良いやり方があれば、それに切り替えると思うけど)

まず、自分のプロジェクトを作ります。Mavenが前提で話を進めます。

mvn archetype:generate

maven-archetype-quickstartを選んで、適当なプロジェクト名をつけます。今回はhogegroupのhogeprojectにでもしておきます。プロジェクトができたら、pom.xmlを編集しておきます。

:
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.6</source>
<target>1.6</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.apache.mahout</groupId>
<artifactId>mahout-core</artifactId>
<version>0.5-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.mahout</groupId>
<artifactId>mahout-math</artifactId>
<version>0.5-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.mahout</groupId>
<artifactId>mahout-utils</artifactId>
<version>0.5-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.7</version>
<scope>test</scope>
</dependency>
</dependencies>
:

という感じで良いでしょう。あとは、適当にhogeprojectでsrc/main/java以下に自分のMapReduce的なコードを書きます。できたら、mvn installでビルドしておきます。

次に、チェックアウトしてMahoutのコードに戻ります。2つほどファイルを変更します。まず、examples/pom.xmlを追加します。

:
<dependency>
<groupId>hogegroup</groupId>
<artifactId>hogeproject</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
:

次に、examples/src/main/assembly/job.xmlを編集します。

:
<excludes>
<exclude>org.apache.hadoop:hadoop-core</exclude>
<exclude>org.apache.mahout:mahout-core</exclude>
<exclude>org.apache.mahout:mahout-utils</exclude>
<exclude>org.apache.mahout:mahout-examples</exclude>
<exclude>hogegroup:hogeproject</exclude>
</excludes>
</dependencySet>
<dependencySet>
<unpack>true</unpack>
<scope>runtime</scope>
<outputDirectory>/</outputDirectory>
<includes>
<include>org.apache.mahout:mahout-core</include>
<include>org.apache.mahout:mahout-utils</include>
<include>org.apache.mahout:mahout-examples</include>
<include>hogegroup:hogeproject</include>
</includes>
:

というようにexcludeとincludeに追加します。できたら、Mahoutをビルドします。

mvn clean
mvn install

を実行してください。これにより、examples/target/mahout-examples-*-job.jarにhogeprojectが展開されて組み込まれます。あとは、普通にMahoutの実行と同じで

bin/mahout hogegroup.HogeDriver

みたいな感じで実行できます。

Mahoutは一度ビルドしておけば良いので、2回目からはhogeprojectでmvn installして、Mahoutのexamplesディレクトリでmvn clean;mvn packageをすれば、jarが更新されます。そんな感じで遊んでみてください。

JSエディタ周りの修正

require周りの処理をいじってみました。

  • require() のファイルパス補完時にでディレクトリも補完
  • require の var 宛に飛べない
  • require(). で補完
  • 未定義の変数呼び出しで警告

最後の2つはなかなか難しい感じで細かい問題もあるかも。これ以外には

  • 複数varの飛び先の修正
  • コードテンプレートをJSDTに合わせた

あたりをいじり、細かいところを直してみた。ぼちぼち、ここいらで一度リリースした方が良いかもと思う、今日この頃。