Eclipseでhtmlとcssファイルのコンテンツ・タイプを指定する方法(Playframeworkの場合)

Eclipseで開発している場合に、"UTF-8"で開発したいのに"shift-jis"に
なったりして文字化けする問題の対応策の一つです。

この問題は、Eclipseが『内容から判別する』で
ファイルのコンテンツ・タイプを勝手に判別するのが原因です。

対策として、下記のおまじないをファイルの先頭に追加して
判別させます。

htmlの場合、metaタグを入れてEclipseには"UTF-8"と判別させ、
テンプレートエンジンのコメントタグを使用し、影響がないようにします。

*{<meta charset="UTF-8"/>}*

cssの場合は普通ですね。

@charset "utf-8";

他のフレームワークでも使用できる場合が
あるので試してみてください。


Ubuntu11.10にMySQL Workbenchをインストール

Ubuntu11.10にMySQL Workbenchをインストールしようと思ったのだが、
今現在で11.04対応しかしてないようで…

http://bugs.mysql.com/bug.php?id=62347
どうやら誰かがバッチ版を提供してくれているようで
インストール方法を記載しときます。

$ sudo add-apt-repository ppa:olivier-berten/misc 
$ sudo apt-get update 
$ sudo apt-get install mysql-workbench-gpl

今のところ問題なし。

au版xoomに米版ファームウェアを入れてICSを使ってみる(Ubuntu11.10)

米版xoomにICSがきたようなので、
au版xoomに米版ファームウェアを入れてICSを使ってます。

※ファームウェアーを書き換えると保証が受けれなくなる可能性があります。自己責任でお願いします。

  • ICSになって動作が良くなりました。デフォルトのブラウザも描画が速い
  • YouTubeの動画も快適に見ることができます。
  • 日本語ではなく英語。(日本語化の方法はまだ)
  • simejiとかATOKとか入れると日本語入力できます。
  • フォントが中華フォント
  • フォントがカッコ悪いと思う。

以外は使った感じ問題は起きていません。

環境

Android SDKはインストールされている状態です。
fastbootがSDKに入ってない場合は、入手してください。

ubuntuとxoomを接続する。

WindwosXPではUSBドライバが提供されているので接続は簡単ですが
今回は、Ubuntuで接続するためひと工夫必要です。

管理者権限で、
/etc/udev/rules.d/51-android.rules
を作ります。

51-android.rulesに
SUBSYSTEM=="usb", SYSFS{idVendor}=="22b8", MODE="0666"
もしくは、
SUBSYSTEM=="usb_device", SYSFS{idVendor}=="22b8", MODE="0666"
を追加します。

権限を変更して、udevをリブートします

$ chmod a+r /etc/udev/rules.d/51-android.rules
$ sudo restart udev

接続されているか確認するために、adbでつないでみます。

$ ./adb shell
#

xoomのファームウェア書き換え

http://forum.xda-developers.com/showthread.php?t=1084537
を参考にしてください。

書き換えるためのファームウェアは
http://developer.motorola.com/products/software/
からBuild HWI69 for US Retailをダウンロードする。
(ユーザ登録等必要です。)
解凍して適当に配置します。

xoomをUbuntuに接続して、

$ ./adb reboot bootloader

Starting Fastboot protocol support.」の文字が表示されます。

$ sudo fastboot oem unlock

xoom側でunlockについて二回確認されるので、Yesにします。
再起動されるまで待ちます。

初期化されているので適当に入力して、
設定画面でUSBデバックを有効にします。

xoomとUbuntuが接続されているのを確認して、
以下のコマンドを実行します。

$ ./adb reboot bootloader
$ sudo fastboot flash boot boot.img
$ sudo fastboot flash system system.img
$ sudo fastboot flash recovery recovery.img
$ sudo fastboot flash userdata userdata.img
$ sudo fastboot erase cache
$ sudo fastboot oem lock

xoom側でlockについて二回確認されるので、Yesにします。
再起動されるまで待ちます。

xoom再起動後に再セットアップして、
ファームウェアのアップデートが何回か来ます。(自分は5回)
ブート画面がハニカムからICSに変わったら終了です。

f:id:shiganaiman:20120205222632p:plain

scalaとJavaからMeCabを食べてみよう

MeCabを使ってみよう
http://shiganaiman.hatenablog.com/entry/2012/01/23/151102

MeCabは使えるようになったので、今度はscalaから使ってみる。
scalaJavaMeCabとすれば楽勝ということでやってみる。

環境

java-mecabのインストール

$ sudo apt-get install  libmecab-java libmecab-jni

javaMeCabを食べる

EclipseからMecab.jarをBuildパスに追加して、

import org.chasen.mecab.Tagger;
public class TestJavaMecab {
  public static void main(String[] argv) {
    Tagger tagger = new Tagger("-Ochasen");
    System.out.println(tagger.parse("すももももももももものうち."));
  }
}
Exception in thread "main" java.lang.UnsatisfiedLinkError: org.chasen.mecab.MeCabJNI.new_Tagger__SWIG_0(Ljava/lang/String;)J
	at org.chasen.mecab.MeCabJNI.new_Tagger__SWIG_0(Native Method)
	at org.chasen.mecab.Tagger.<init>(Tagger.java:124)
	at TestJavaMecab.main(TestJavaMecab.java:6)

java.lang.UnsatisfiedLinkErrorを調べると、

Java Virtual Machine が、native と宣言されたメソッドの適切なネイティブ言語の定義を見つけることができない場合にスローされます。

どうやら、JNIが定義を見つけられてないようだ。

http://code.google.com/p/mecab/
からスクリプトバインディングのソースをダウンロードしてtest.java
サンプルコードが入っているらしいので試してみる。

$ wget http://mecab.googlecode.com/files/mecab-java-0.98.tar.gz
$ tar xzvf mecab-java-0.98.tar.gz

test.javaをコピーして動かしてみる。

import org.chasen.mecab.MeCab;
import org.chasen.mecab.Tagger;
import org.chasen.mecab.Node;

public class test {
  static {
    try {
       System.loadLibrary("MeCab");
    } catch (UnsatisfiedLinkError e) {
       System.err.println("Cannot load the example native code.\nMake sure your LD_LIBRARY_PATH contains \'.\'\n" + e);
       System.exit(1);
    }
  }

  public static void main(String[] argv) {
     System.out.println(MeCab.VERSION);
     Tagger tagger = new Tagger();
     String str = "太郎は二郎にこの本を渡した。";
     System.out.println(tagger.parse(str));
     Node node = tagger.parseToNode(str);
     for (;node != null; node = node.getNext()) {
	System.out.println(node.getSurface() + "\t" + node.getFeature());
     }
     System.out.println ("EOS\n");
  }
}

結果
0.98
太郎	名詞,固有名詞,人名,名,*,*,太郎,タロウ,タロー
は	助詞,係助詞,*,*,*,*,は,ハ,ワ
二郎	名詞,固有名詞,人名,名,*,*,二郎,ジロウ,ジロー
に	助詞,格助詞,一般,*,*,*,に,ニ,ニ
この	連体詞,*,*,*,*,*,この,コノ,コノ
本	名詞,一般,*,*,*,*,本,ホン,ホン
を	助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
渡し	動詞,自立,*,*,五段・サ行,連用形,渡す,ワタシ,ワタシ
た	助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
。	記号,句点,*,*,*,*,。,。,。
EOS

	BOS/EOS,*,*,*,*,*,*,*,*
EOS

scalaMecabを食べる

import org.chasen.mecab.Tagger
import org.chasen.mecab.MeCab

object TestScalaMecab extends App {
  override
  def main(args: Array[String]) {
    System.loadLibrary("MeCab");
    var tagger = new Tagger()
    var str = "太郎は二郎にこの本を渡した。";
    println(tagger.parse(str));
    var node = tagger.parseToNode(str);
    
    while(node != null){
      println(node.getSurface() + "\t" + node.getFeature());
      node = node.getNext();
    }
  }
}

結果
太郎	名詞,固有名詞,人名,名,*,*,太郎,タロウ,タロー
は	助詞,係助詞,*,*,*,*,は,ハ,ワ
二郎	名詞,固有名詞,人名,名,*,*,二郎,ジロウ,ジロー
に	助詞,格助詞,一般,*,*,*,に,ニ,ニ
この	連体詞,*,*,*,*,*,この,コノ,コノ
本	名詞,一般,*,*,*,*,本,ホン,ホン
を	助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
渡し	動詞,自立,*,*,五段・サ行,連用形,渡す,ワタシ,ワタシ
た	助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
。	記号,句点,*,*,*,*,。,。,。
EOS

	BOS/EOS,*,*,*,*,*,*,*,*

ごちそうさまでした。

scalaは初めて書いたので、scalaぽくないかもしれません。

Ubuntu11.10でjavaを切り替える

Ubuntuで複数バージョンのJavaを切り替える方法です。

Ubuntuはlaternativeシステムというのがあって
同じ機能をもつ複数のプログラムを一つのシステムに
インストールして切り替えることができるらしい。

Ubuntu の alternative システム
http://masaoo.blogspot.com/2009/07/ubuntu-alternative.html

$ sudo update-alternatives --config java
$ java -version
java version "1.6.0_23"
OpenJDK Runtime Environment (IcedTea6 1.11pre) (6b23~pre11-0ubuntu1.11.10.1)
OpenJDK 64-Bit Server VM (build 20.0-b11, mixed mode)
$ which java
/usr/bin/java
$ ll /usr/bin/java
lrwxrwxrwx 1 root root 22 2012-01-30 12:52 /usr/bin/java -> /etc/alternatives/java*
$ update-java-alternatives -l
java-1.6.0-openjdk 1061 /usr/lib/jvm/java-1.6.0-openjdk
java-1.7.0-openjdk-amd64 1051 /usr/lib/jvm/java-1.7.0-openjdk-amd64
$ sudo update-alternatives --config java
alternative java (/usr/bin/java を提供) には 2 個の選択肢があります。

  選択肢    パス                                          優先度  状態
------------------------------------------------------------
* 0            /usr/lib/jvm/java-6-openjdk/jre/bin/java         1061      自動モード
  1            /usr/lib/jvm/java-6-openjdk/jre/bin/java         1061      手動モード
  2            /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java   1051      手動モード

現在の選択 [*] を保持するには Enter、さもなければ選択肢の番号のキーを押してください: 
2
$ sudo update-alternatives --config java
alternative java (/usr/bin/java を提供) には 2 個の選択肢があります。

  選択肢    パス                                          優先度  状態
------------------------------------------------------------
  0            /usr/lib/jvm/java-6-openjdk/jre/bin/java         1061      自動モード
  1            /usr/lib/jvm/java-6-openjdk/jre/bin/java         1061      手動モード
* 2            /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java   1051      手動モード

現在の選択 [*] を保持するには Enter、さもなければ選択肢の番号のキーを押してください:

これで、どこのJavaを使用しているかわかるし、切り替えることができる。

切り替えはもっと簡単に、できるらしい。

$ sudo update-java-alternatives -s java-1.6.0-openjdk

けど、自分の環境でうごかない。

$ update-java-alternatives -l
java-1.6.0-openjdk 1061 /usr/lib/jvm/java-1.6.0-openjdk
java-1.7.0-openjdk-amd64 1051 /usr/lib/jvm/java-1.7.0-openjdk-amd64
$ sudo update-java-alternatives -s java-1.6.0-openjdk
update-alternatives: エラー: -javaplugin.so の alternatives がありません。
update-alternatives: エラー: -javaplugin.so の alternatives がありません。

これについては、また今度に解決しよう。

PythonからMeCabを食べてみよう

MeCabスクリプト言語バインディングを使って、PythonからMeCab
使ってみます。

環境

mecab-0.98
python-mecab 0.98-3
Ubuntu11.10
Python 2.7.2

インストール

MeCabはインストール済みとする。

Ubuntu11.10にMeCabをインストールする
http://shiganaiman.hatenablog.com/entry/2012/01/26/195551

MeCabのバージョンを気にしない場合は、

sudo apt-get install python-mecab

食べる

>>> import sys
>>> import MeCab
>>> m = MeCab.Tagger("-Ochasen")
>>> print m.parse("すもももももももものうち")
すもも  名詞,一般,*,*,*,*,すもも,スモモ,スモモ
も      助詞,係助詞,*,*,*,*,も,モ,モ
もも    名詞,一般,*,*,*,*,もも,モモ,モモ
も      助詞,係助詞,*,*,*,*,も,モ,モ
もも    名詞,一般,*,*,*,*,もも,モモ,モモ
の      助詞,連体化,*,*,*,*,の,ノ,ノ
うち    名詞,非自立,副詞可能,*,*,*,うち,ウチ,ウチ
EOS

>>>

ご馳走様