2013/12/22

[Debian]Ricty のインストール

Ricty のインストール

# 合成元のフォントパッケージをインストール
sudo aptitude install fontforge ttf-inconsolata fonts-migmix

# 作業用ディレクトリの作成と移動
mkdir -p ~/tmp/ricty
cd ~/tmp/ricty/

# 合成スクリプト取得
wget https://raw.github.com/yascentur/Ricty/master/ricty_generator.sh

# 合成開始
sh ricty_generator.sh auto

# フォントインストール
mkdir ~/.fonts
cp -f Ricty-\*.ttf ~/.fonts/
fc-cache -vf

2013/11/30

[KVM]KVM + libvirt でいろいろやったよ

KVM + libvirt でいろいろやったよ

半年くらい前のメモを発掘したのでとりあえずブログに保管する。


# パッケージインストール
sudo aptitude install qemu-kvm libvirt-bin virtinst

# OS 再起動(/dev/kvm の権限を更新するため)

# USER が kvm を使えるようにする
# 多分再起動とか必要。ログアウトでいいのかな?
sudo adduser USER kvm

# 仮想マシン作成 & Debian インストール
# 最小構成 + vim + ssh
sudo virt-install --connect qemu:///system --name debian_org --ram 512 --disk path=/var/lib/libvirt/images/debian_org.img,size=5 --network network=default,model=virtio --nographics --location='http://ftp.jp.debian.org/debian/dists/wheezy/main/installer-amd64/' -x console=ttyS0,115200

仮想マシン設定ファイルの場所

/etc/libvirt/qemu/DOMAIN_NAME.xml

イメージファイル等の場所

/var/lib/libvirt/*

仮想マシン以外の設定も、 /etc/libvirt の中にある。 autostart 内のもの(普通は設定ファイルへのシンボリックリンク)は libvirtd 起動時に実行される。

基本操作

sudo virt-install --connect qemu:///system --name DOMAIN_NAME --ram RAM_SIZE --disk /PATH/TO/DISK,size=GB --network network=default,model=virtio --vnc --cdrom /PATH/TO/CDROM
sudo virsh list --all
sudo virsh dominfo DOMAIN_NAME
sudo virsh start DOMAIN_NAME
sudo virsh suspend DOMAIN_NAME
sudo virsh resume DOMAIN_NAME
sudo virsh reboot DOMAIN_NAME #KVMでは使えないらしい
sudo virsh shutdown DOMAIN_NAME
sudo virsh destroy DOMAIN_NAME
sudo virsh undefine DOMAIN_NAME

ストレージ

libvirt にはストレージプールなるものがあるらしい。 まだ使ってないのでいつか調べる。

sudo virsh pool-list
sudo virsh vol-list POOL_NAME
sudo virsh vol-delete VOL_NAME

qemu-img create -f qcow2 IMG_NAME IMG_SIZE

Windows7 のインストール

virtio ドライバ

WindowsGuestDrivers/Download Drivers - KVM(http://www.linux-kvm.org/page/WindowsGuestDrivers/Download_Drivers)

VM 作成

sudo virt-install --connect qemu:///system --arch=x86_64 -n voice -r 24000 --vcpus 4 --vnc --vnclisten 0.0.0.0 --noautoconsole --os-type windows --os-variant win7 --disk path=/var/lib/libvirt/images/voice.img,size=10 --disk path=/home/mikoto/iso/virtio-win-0.1-59.iso,device=cdrom,perms=ro --cdrom /dev/cdrom --boot cdrom,hd --prompt

これで、サーバの 5900 ポートに VNC クライアントでアクセスすれば画面が表示される。 (windows7 の Real VNC では、 64bit color よりも上の色だと接続できなかった...)

インストール途中で、追加のドライバ(virtio)をインストールする。

これだと NIC も HDD も virtio として追加されないようだ。 disk のオプションに "bus=virtio" を追加するとか、 ネットワークオプションとして "--network bridge=br0,model=virtio" を追加するとかが必要なようだ。 いつか再インストールの機会があれば試す。

ボリュームのリサイズ

10GB は小さすぎた...。

# ボリュームの情報確認
sudo virsh vol-info --pool default voice.img
# リサイズ
# virsh vol-resize は未サポートらしい(2013/5/25,Debian7,KVM)
sudo qemu-img resize voice.img +20G

その後、コンピュータの管理からパーティションを拡張すれば OK.

2013/10/29

[Debian][鯖]Gitit のインストール

インストール

aptitude install gitit git-core

データ格納ディレクトリ作成

mkdir -p /data/wiki

デフォルト設定ファイルの作成

gitit --print-default-config > /data/wiki/gitit.conf
vi /data/wiki/gitit.conf
# 修正点のみ抜き出し
# パスをすべて絶対パスに直す
repository-path: /data/wiki/wikidata
user-file: /data/wiki/gitit-users
static-dir: /data/wiki/static
templates-dir: /data/wiki/templates
log-file: /data/wiki/gitit.log

起動スクリプト作成

cp /etc/init.d/skeleton /etc/init.d/gitit
vi /etc/init.d/gitit
#! /bin/sh
### BEGIN INIT INFO
# Provides:          gitit
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Wiki Server Gitit
# Description:       Wiki Server Gitit
### END INIT INFO

# Author: mikoto2000 <mikoto2000>

# Do NOT "set -e"

# PATH should only include /usr/* if it runs after the mountnfs.sh script
PATH=/sbin:/usr/sbin:/bin:/usr/bin
DESC="Wiki Server Gitit"
NAME=gitit
DAEMON=/usr/bin/$NAME
DAEMON_ARGS="-f /data/wiki/gitit.conf"
PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME
PWD=/data/wiki

# Exit if the package is not installed
[ -x "$DAEMON" ] || exit 0

# Read configuration variable file if it is present
[ -r /etc/default/$NAME ] && . /etc/default/$NAME

# Load the VERBOSE setting and other rcS variables
. /lib/init/vars.sh

# Define LSB log_* functions.
# Depend on lsb-base (>= 3.2-14) to ensure that this file is present
# and status_of_proc is working.
. /lib/lsb/init-functions

#
# Function that starts the daemon/service
#
do_start()
{
    # Return
    #   0 if daemon has been started
    #   1 if daemon was already running
    #   2 if daemon could not be started
    start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
        || return 1
    start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --background -- \
        $DAEMON_ARGS \
        || return 2
    # Add code here, if necessary, that waits for the process to be ready
    # to handle requests from services started subsequently which depend
    # on this one.  As a last resort, sleep for some time.
}

#
# Function that stops the daemon/service
#
do_stop()
{
    # Return
    #   0 if daemon has been stopped
    #   1 if daemon was already stopped
    #   2 if daemon could not be stopped
    #   other if a failure occurred
    start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME
    RETVAL="$?"
    [ "$RETVAL" = 2 ] && return 2
    # Wait for children to finish too if this is a daemon that forks
    # and if the daemon is only ever run from this initscript.
    # If the above conditions are not satisfied then add some other code
    # that waits for the process to drop all resources that could be
    # needed by services started subsequently.  A last resort is to
    # sleep for some time.
    start-stop-daemon --stop --quiet --oknodo --retry=5 --signal 0 --exec $DAEMON
    [ "$?" = 2 ] && return 2
    # Many daemons don't delete their pidfiles when they exit.
    rm -f $PIDFILE
    return "$RETVAL"
}

#
# Function that sends a SIGHUP to the daemon/service
#
do_reload() {
    #
    # If the daemon can reload its configuration without
    # restarting (for example, when it is sent a SIGHUP),
    # then implement that here.
    #
    start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME
    return 0
}

case "$1" in
  start)
    [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
    do_start
    case "$?" in
        0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
        2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
    esac
    ;;
  stop)
    [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
    do_stop
    case "$?" in
        0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
        2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
    esac
    ;;
  status)
       status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $?
       ;;
  #reload|force-reload)
    #
    # If do_reload() is not implemented then leave this commented out
    # and leave 'force-reload' as an alias for 'restart'.
    #
    #log_daemon_msg "Reloading $DESC" "$NAME"
    #do_reload
    #log_end_msg $?
    #;;
  restart|force-reload)
    #
    # If the "reload" option is implemented then remove the
    # 'force-reload' alias
    #
    log_daemon_msg "Restarting $DESC" "$NAME"
    do_stop
    case "$?" in
      0|1)
        do_start
        case "$?" in
            0) log_end_msg 0 ;;
            1) log_end_msg 1 ;; # Old process is still running
            *) log_end_msg 1 ;; # Failed to start
        esac
        ;;
      *)
        # Failed to stop
        log_end_msg 1
        ;;
    esac
    ;;
  *)
    #echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
    echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2
    exit 3
    ;;
esac

:

起動スクリプトに実行権限追加

chmod a+x /etc/init.d/gitit

スタート確認

/etc/init.d/gitit start
ps aux | grep gitit

ストップ確認

/etc/init.d/gitit stop
ps aux | grep gitit

サービス登録

update-rc.d gitit defaults

2013/10/13

vim を +lua でコンパイルする

vim7.4 で neocomplete が使いたいので頑張る。

sudo aptitude install lua
cd /PATH/TO/VIM/SRC
hg pull
hg update
./configure --enable-luainterp=yes --with-luajit --prefix=/home/mikoto/app/vim/
make && make install

... -lua だ! .configure の出力を真面目に見てみよう...。

./configure --enable-luainterp=yes --with-luajit --prefix=/home/mikoto/app/vim/ | grep lua
checking --enable-luainterp argument... yes
checking --with-lua-prefix argument... no
checking --with-luajit... yes
checking for luajit... no
checking if lua.h can be found in /usr/include... no
checking if lua.h can be found in /usr/include/lua... no

ヘッダが無いとダメなのかー。

sudo aptitude install liblua5.2-dev
ls /usr/include | grep lua
lua5.2

oh...パスが違うようだ。

sudo ln -s /usr/include/lua5.2 /usr/include/lua
./configure --enable-luainterp=yes --with-luajit --prefix=/home/mikoto/app/vim/ | grep lua
checking --enable-luainterp argument... yes
checking --with-lua-prefix argument... no
checking --with-luajit... yes
checking for luajit... no
checking if lua.h can be found in /usr/include... no
checking if lua.h can be found in /usr/include/lua... yes
checking if link with -L/usr/lib/x86_64-linux-gnu -lluajit is sane... no

luajit が有効にならない...。 別途 luajit が必要? wheezy には deb パッケージなかったので今回はいいや。 luajit なしで続行。

# こっちだと lua5.2 見つけてくれるのね...
./configure --enable-luainterp=yes --prefix=/home/mikoto/app/vim/ | grep lua
checking --enable-luainterp argument... yes
checking --with-lua-prefix argument... no
checking --with-luajit... no
checking for lua... (cached) /usr/bin/lua
checking if lua.h can be found in /usr/include... no
checking if lua.h can be found in /usr/include/lua5.2... yes
checking if link with -L/usr/lib -llua5.2 is sane... yes
make && make install
vim --version | grep +lua
+dialog_con_gui  +lua             -rightleft       +windows

よしできた。

2013/08/07

[Haskell]Haskell のカリー化について考えた

Haskell のカリー化について

「すごいHaskellたのしく学ぼう!」に、カリー化と部分適用は完全に理解しておいてくださいと書かれていたのでしっかり学ぶ努力をしてみる。

下記のような関数があったとして、

myAdd :: Integer -> Integer -> Integer
myAdd x y = x + y

(myAdd 4) の返り値は、

myAdd' :: Integer -> Integer
myAdd' y = x + y
    where x = 4

と同等の関数であるという事なのだろうか?

いや、参考文献を見る限り違うようだ。

これは、「カリー化して部分適用」したという事らしい。

Integer -> Integer -> Integer を、 Integer -> (Integer -> Integer) と (Integer -> Integer) の 2 つの関数に分解するのが カリー化という事か。

Haskell なら、すべての関数を処理系が自動で変換してくれる。

Java で、オレオレ Add 関数のカリー化をする場合こんな感じになるのかな?

StudyCurry.java(https://github.com/mikoto2000/MiscellaneousStudy/blob/master/java/StudyCurry/src/jp/dip/oyasirazu/study/curry/StudyCurry.java)

とりあえず、「関数の分解がカリー化」、「具体的に数値を入れると部分適用」という印象。

参考文献

カリー化と部分適用の違いと誤用 - Togetter(http://togetter.com/li/183700)

カリー化 != 部分適用 - ((プログラミング | 形式) 言語) について書く日記(http://d.hatena.ne.jp/kmizushima/20091216/1260969166)

カリー化 - Wikipedia(http://ja.wikipedia.org/wiki/%E3%82%AB%E3%83%AA%E3%83%BC%E5%8C%96)

StudyCurry.java(https://github.com/mikoto2000/MiscellaneousStudy/blob/master/java/StudyCurry/src/jp/dip/oyasirazu/study/curry/StudyCurry.java)

2013/05/28

[Debian] Debian 最小構成インストールからデスクトップ環境を作る

全部作業が終わってからメモしてないのに気づいて .bash_history から作業内容をサルベージした。あとから見て思い出す分には多分大丈夫という程度の残念メモ。

1. aptitude のプロキシ設定

2. aptline の修正

3. パッケージのインストール

aptitude install awesome awesome-extra
aptitude install x-window-system
aptitude install mozc
aptitude install iceweasel
aptitude install iceweasel-vimperator
aptitude install vim
aptitude install git
aptitude install ibus-mozc
aptitude install ttf-japanese-gothic ttf-japanese-mincho
aptitude install fonts-japanese-gothic fonts-japanese-mincho
aptitude install fonts-ipafont-gothic fonts-ipafont-mincho
aptitude install ttf-kochi-gothic-naga10 ttf-kochi-mincho-naga10
aptitude install ttf-vlgothic
aptitude install ttf-takao

4. キーボードレイアウト変更(capsをctrlへ)

/etc/default/keyboard を編集する。 XKBOPTIONS に "ctrl:nocaps" を設定する。
XKBOPTIONS="ctrl:nocaps"

5. グラフィックドライバインストール(?)

aptitude install nvidia-glx

6. (ここまでやって x-window-system が立ち上がらなくなる)

7. xorg.conf の作成

Xorg -configure
mv xorg.conf.new /etc/X11/xorg.conf

8. パッケージインストール第 2 弾

aptitude install cifs-utils
aptitude install vim-athena
aptitude install sudo
aptitude install xdm

9. vim 環境

vim プラグインのインストールと、 vimproc のビルド。
aptitude install gcc make
cd ~/.vim/bundle/vimproc/
make -f make_unix.mak

10. 新しい iceweasel のインストール

aptitude install debian-keyring
aptitude install pkg-mozilla-archive-keyring
# "deb http://mozilla.debian.net/ wheezy-backports iceweasel-release" を追加
vi /etc/apt/sources.list
aptitude update
aptitude purge iceweasel
deb http://debian.multimedia.org wheezy main contrib non-free
aptitude install -t wheezy-backports iceweasel

11. google-chrome のインストール

mkdir /var/cache/localdeb
cd /var/cache/localdeb/
apt-ftparchive packages . | gzip -c9 > Packages.gz
apt-ftparchive sources . | gzip -c9 > Sources.gz
# "deb file:/va/cache/localdeb ./" を追加
vi /etc/apt/sources.list
aptitude update
aptitude install google-chrome-stable

12. 音関係

aptitude install alsa
# 認識されているサウンドデバイスの一覧表示らしい。
# 結果の card, device を確認
aplay -l
# どの card,device で音がなるかを確認していく
aplay -D plughw:1,3 /usr/share/sounds/alsa/Front_Center.wav 
aplay -D plughw:1,7 /usr/share/sounds/alsa/Front_Center.wav 
...
# デフォルトで使用するサウンドデバイスを設定する
vi /etc/asound.conf
# /etc/asound.conf の中身.
# pcm.!default {
#  type hw
#  card 1
#  device 7
#}

13. 今思い出したパッケージ

aptitude install pandoc

14. ファイル関連付け

vi ~/.local/share/applications/mimeapps.list
# ~/.local/share/applications/mimeapps.list の内容
# [Default Applications]
# text/plain=gvim.desktop
# text/x-markdown=gvim.desktop
# text/html=iceweasel.desktop
# application/pdf=xpdf.desktop

まとめ

素直にインストール時点で Desktop 環境を選択しましょう。

2013/01/05

[作業記録][Maven]Maven に入門してみる

Maven2 に入門してみる

  1. 環境導入
  2. プロジェクトの雛形作成
  3. コンパイル
  4. テスト実行
  5. Javadoc 作成
  6. サイト作成
  7. ローカルリポジトリへのインストール(してない)

こんな感じで進めていきます。

1. 環境導入

aptitude install maven2

2. プロジェクトの雛形作成

mvn archetype:create -DgroupId=jp.dip.oyasirazu.morphologicalanalysis -DartifactId=MorphologicalAnalysis
...(snip)
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 11 seconds
[INFO] Finished at: Sat Jan 05 03:59:56 JST 2013
[INFO] Final Memory: 16M/151M
[INFO] ------------------------------------------------------------------------

...なんかゴリゴリ出力されていますね。 jar のダウンロードもされているようだ...(初回だけらしい)。 こんな風な構成になっていれば成功らしい。

mikoto@mndebian:~/projects/maven$ tree
.
└── MorphologicalAnalysis
    ├── pom.xml
    └── src
        ├── main
        │   └── java
        │       └── jp
        │           └── dip
        │               └── oyasirazu
        │                   └── morphologicalanalysis
        │                       └── App.java
        └── test
            └── java
                └── jp
                    └── dip
                        └── oyasirazu
                            └── morphologicalanalysis
                                └── AppTest.java

14 directories, 3 files

OK. とりあえず雛形の状態で Git に登録する。

git init
git add --all
git commit -m 'Initial commit'

3. 雛形プロジェクトのコンパイル

mvn compile
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Building MorphologicalAnalysis
[INFO]    task-segment: [compile]
[INFO] ------------------------------------------------------------------------
...(snip)
[INFO] [resources:resources {execution: default-resources}]
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory /home/mikoto/projects/maven/MorphologicalAnalysis/src/main/resources
...(snip)
[INFO] [compiler:compile {execution: default-compile}]
[INFO] Compiling 1 source file to /home/mikoto/projects/maven/MorphologicalAnalysis/target/classes
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 15 seconds
[INFO] Finished at: Sat Jan 05 04:17:34 JST 2013
[INFO] Final Memory: 11M/88M
[INFO] ------------------------------------------------------------------------

oh...。また大量にダウンロードが。 とはいえ成功。 target が作成されていますね。

tree
.
├── pom.xml
├── src
│   ├── main
│   │   └── java
│   │       └── jp
│   │           └── dip
│   │               └── oyasirazu
│   │                   └── morphologicalanalysis
│   │                       └── App.java
│   └── test
│       └── java
│           └── jp
│               └── dip
│                   └── oyasirazu
│                       └── morphologicalanalysis
│                           └── AppTest.java
└── target
    └── classes
        └── jp
            └── dip
                └── oyasirazu
                    └── morphologicalanalysis
                        └── App.class

19 directories, 4 files

4. 雛形プロジェクトのテスト実行

テストもするよ。

mvn test
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Building MorphologicalAnalysis
[INFO]    task-segment: [test]
[INFO] ------------------------------------------------------------------------
...(snip)
[INFO] [resources:resources {execution: default-resources}]
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory /home/mikoto/projects/maven/MorphologicalAnalysis/src/main/resources
[INFO] [compiler:compile {execution: default-compile}]
[INFO] Nothing to compile - all classes are up to date
[INFO] [resources:testResources {execution: default-testResources}]
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory /home/mikoto/projects/maven/MorphologicalAnalysis/src/test/resources
...(snip)
[INFO] [compiler:testCompile {execution: default-testCompile}]
[INFO] Compiling 1 source file to /home/mikoto/projects/maven/MorphologicalAnalysis/target/test-classes
...(snip)
[INFO] [surefire:test {execution: default-test}]
[INFO] Surefire report directory: /home/mikoto/projects/maven/MorphologicalAnalysis/target/surefire-reports
...(snip)

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running jp.dip.oyasirazu.morphologicalanalysis.AppTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.093 sec

Results :

Tests run: 1, Failures: 0, Errors: 0, Skipped: 0

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 23 seconds
[INFO] Finished at: Sat Jan 05 04:26:49 JST 2013
[INFO] Final Memory: 17M/154M
[INFO] ------------------------------------------------------------------------

mmm。 成功ですね。 テスト用のクラスとテスト結果が出力されています。

tree
.
├── pom.xml
├── src
│   ├── main
│   │   └── java
│   │       └── jp
│   │           └── dip
│   │               └── oyasirazu
│   │                   └── morphologicalanalysis
│   │                       └── App.java
│   └── test
│       └── java
│           └── jp
│               └── dip
│                   └── oyasirazu
│                       └── morphologicalanalysis
│                           └── AppTest.java
└── target
    ├── classes
    │   └── jp
    │       └── dip
    │           └── oyasirazu
    │               └── morphologicalanalysis
    │                   └── App.class
    ├── surefire
    ├── surefire-reports
    │   ├── jp.dip.oyasirazu.morphologicalanalysis.AppTest.txt
    │   └── TEST-jp.dip.oyasirazu.morphologicalanalysis.AppTest.xml
    └── test-classes
        └── jp
            └── dip
                └── oyasirazu
                    └── morphologicalanalysis
                        └── AppTest.class

26 directories, 7 files
  1. Javadoc 作成

Javadoc 作るよ。

mvn javadoc:javadoc
[INFO] Scanning for projects...
[INFO] Searching repository for plugin with prefix: 'javadoc'.
[INFO] ------------------------------------------------------------------------
[INFO] Building MorphologicalAnalysis
[INFO]    task-segment: [javadoc:javadoc]
[INFO] ------------------------------------------------------------------------
[INFO] Preparing javadoc:javadoc
[INFO] No goals needed for project - skipping
[INFO] [javadoc:javadoc {execution: default-cli}]
[INFO] 
...(snip)
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 29 seconds
[INFO] Finished at: Sat Jan 05 04:38:25 JST 2013
[INFO] Final Memory: 20M/194M
[INFO] ------------------------------------------------------------------------

はいできた。

tree
.
├── pom.xml
├── src
│   ├── main
│   │   └── java
│   │       └── jp
│   │           └── dip
│   │               └── oyasirazu
│   │                   └── morphologicalanalysis
│   │                       └── App.java
│   └── test
│       └── java
│           └── jp
│               └── dip
│                   └── oyasirazu
│                       └── morphologicalanalysis
│                           └── AppTest.java
└── target
    ├── classes
    │   └── jp
    │       └── dip
    │           └── oyasirazu
    │               └── morphologicalanalysis
    │                   └── App.class
    ├── site
    │   └── apidocs
    │       ├── allclasses-frame.html
    │       ├── allclasses-noframe.html
    │       ├── constant-values.html
    │       ├── deprecated-list.html
    │       ├── help-doc.html
    │       ├── index-all.html
    │       ├── index.html
    │       ├── jp
    │       │   └── dip
    │       │       └── oyasirazu
    │       │           └── morphologicalanalysis
    │       │               ├── App.html
    │       │               ├── class-use
    │       │               │   └── App.html
    │       │               ├── package-frame.html
    │       │               ├── package-summary.html
    │       │               ├── package-tree.html
    │       │               └── package-use.html
    │       ├── overview-tree.html
    │       ├── package-list
    │       ├── resources
    │       │   ├── background.gif
    │       │   ├── tab.gif
    │       │   ├── titlebar_end.gif
    │       │   └── titlebar.gif
    │       └── stylesheet.css
    ├── surefire
    ├── surefire-reports
    │   ├── jp.dip.oyasirazu.morphologicalanalysis.AppTest.txt
    │   └── TEST-jp.dip.oyasirazu.morphologicalanalysis.AppTest.xml
    └── test-classes
        └── jp
            └── dip
                └── oyasirazu
                    └── morphologicalanalysis
                        └── AppTest.class

34 directories, 27 files

target/site/apidocs に作成されるようだ。

  1. サイト作成

サイトもできるらしい。

mvn site
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Building MorphologicalAnalysis
[INFO]    task-segment: [site]
[INFO] ------------------------------------------------------------------------
...(snip)
[INFO] Unable to find resource 'org.mortbay.jetty:jetty-util:pom:6.1.5' in repository codehaus.org (http://snapshots.repository.codehaus.org)
...(snip)
[INFO] Unable to find resource 'org.mortbay.jetty:jetty-util:pom:6.1.5' in repository apache.m2.incubator (http://people.apache.org/repo/m2-snapshot-repository/)
...(snip)
[INFO] Unable to find resource 'org.mortbay.jetty:servlet-api-2.5:pom:6.1.5' in repository codehaus.org (http://snapshots.repository.codehaus.org)
...(snip)
[INFO] Unable to find resource 'org.mortbay.jetty:servlet-api-2.5:pom:6.1.5' in repository apache.m2.incubator (http://people.apache.org/repo/m2-snapshot-repository/)
...(snip)
[INFO] Unable to find resource 'org.mortbay.jetty:jetty-util:jar:6.1.5' in repository codehaus.org (http://snapshots.repository.codehaus.org)
...(snip)
[INFO] Unable to find resource 'org.mortbay.jetty:jetty-util:jar:6.1.5' in repository apache.m2.incubator (http://people.apache.org/repo/m2-snapshot-repository/)
...(snip)
[INFO] Unable to find resource 'org.mortbay.jetty:servlet-api-2.5:jar:6.1.5' in repository codehaus.org (http://snapshots.repository.codehaus.org)
...(snip)
[INFO] Unable to find resource 'org.mortbay.jetty:servlet-api-2.5:jar:6.1.5' in repository apache.m2.incubator (http://people.apache.org/repo/m2-snapshot-repository/)
...(snip)
[INFO] [site:site {execution: default-site}]
[INFO] artifact org.apache.maven.skins:maven-default-skin: checking for updates from central
...(snip)
[INFO] Generating "Plugin Management" report.
...(snip)
[INFO] Generating "Mailing Lists" report.
[INFO] Generating "Continuous Integration" report.
[INFO] Generating "Project License" report.
[INFO] Generating "Project Team" report.
[INFO] Generating "Source Repository" report.
[INFO] Generating "About" report.
[INFO] Generating "Issue Tracking" report.
[INFO] Generating "Project Summary" report.
[INFO] Generating "Dependencies" report.
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1 minute 50 seconds
[INFO] Finished at: Sat Jan 05 04:44:54 JST 2013
[INFO] Final Memory: 29M/193M
[INFO] ------------------------------------------------------------------------

いろんな項目ができたみたい。

tree
.
├── pom.xml
├── src
│   ├── main
│   │   └── java
│   │       └── jp
│   │           └── dip
│   │               └── oyasirazu
│   │                   └── morphologicalanalysis
│   │                       └── App.java
│   └── test
│       └── java
│           └── jp
│               └── dip
│                   └── oyasirazu
│                       └── morphologicalanalysis
│                           └── AppTest.java
└── target
    ├── classes
    │   └── jp
    │       └── dip
    │           └── oyasirazu
    │               └── morphologicalanalysis
    │                   └── App.class
    ├── site
    │   ├── apidocs
    │   │   ├── allclasses-frame.html
    │   │   ├── allclasses-noframe.html
    │   │   ├── constant-values.html
    │   │   ├── deprecated-list.html
    │   │   ├── help-doc.html
    │   │   ├── index-all.html
    │   │   ├── index.html
    │   │   ├── jp
    │   │   │   └── dip
    │   │   │       └── oyasirazu
    │   │   │           └── morphologicalanalysis
    │   │   │               ├── App.html
    │   │   │               ├── class-use
    │   │   │               │   └── App.html
    │   │   │               ├── package-frame.html
    │   │   │               ├── package-summary.html
    │   │   │               ├── package-tree.html
    │   │   │               └── package-use.html
    │   │   ├── overview-tree.html
    │   │   ├── package-list
    │   │   ├── resources
    │   │   │   ├── background.gif
    │   │   │   ├── tab.gif
    │   │   │   ├── titlebar_end.gif
    │   │   │   └── titlebar.gif
    │   │   └── stylesheet.css
    │   ├── css
    │   │   ├── maven-base.css
    │   │   ├── maven-theme.css
    │   │   ├── print.css
    │   │   └── site.css
    │   ├── dependencies.html
    │   ├── images
    │   │   ├── close.gif
    │   │   ├── collapsed.gif
    │   │   ├── expanded.gif
    │   │   ├── external.png
    │   │   ├── icon_error_sml.gif
    │   │   ├── icon_info_sml.gif
    │   │   ├── icon_success_sml.gif
    │   │   ├── icon_warning_sml.gif
    │   │   ├── logos
    │   │   │   ├── build-by-maven-black.png
    │   │   │   ├── build-by-maven-white.png
    │   │   │   └── maven-feather.png
    │   │   └── newwindow.png
    │   ├── index.html
    │   ├── integration.html
    │   ├── issue-tracking.html
    │   ├── license.html
    │   ├── mail-lists.html
    │   ├── plugin-management.html
    │   ├── project-info.html
    │   ├── project-summary.html
    │   ├── source-repository.html
    │   └── team-list.html
    ├── surefire
    ├── surefire-reports
    │   ├── jp.dip.oyasirazu.morphologicalanalysis.AppTest.txt
    │   └── TEST-jp.dip.oyasirazu.morphologicalanalysis.AppTest.xml
    └── test-classes
        └── jp
            └── dip
                └── oyasirazu
                    └── morphologicalanalysis
                        └── AppTest.class

37 directories, 54 files

target/site 下にいろいろできたみたい。 いろいろと書くべきものがあるのねぇといった具合で眺めるだけにしておこう。

  1. ローカルリポジトリへのインストール

アンインストール方法をまだ知らないので保留。 clean して今日はここまで。

[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Building MorphologicalAnalysis
[INFO]    task-segment: [clean]
[INFO] ------------------------------------------------------------------------
...(snip)
[INFO] [clean:clean {execution: default-clean}]
[INFO] Deleting file set: /home/mikoto/projects/maven/MorphologicalAnalysis/target (included: [\*\*], excluded: [])
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 8 seconds
[INFO] Finished at: Sat Jan 05 06:48:58 JST 2013
[INFO] Final Memory: 6M/55M
[INFO] ------------------------------------------------------------------------

うん、きれいになってますね。

tree
.
├── pom.xml
└── src
    ├── main
    │   └── java
    │       └── jp
    │           └── dip
    │               └── oyasirazu
    │                   └── morphologicalanalysis
    │                       └── App.java
    └── test
        └── java
            └── jp
                └── dip
                    └── oyasirazu
                        └── morphologicalanalysis
                            └── AppTest.java

13 directories, 3 files

参考文献

Maven | TECHSCORE(テックスコア)

2012/09/01

[Debian][鯖][作業記録] Debian 最小構成インストールから Apache2 + Redmine の index.html を拝むまで

やったこと

  1. redmine のインストール
  2. apache との連携設定

redmine の導入

# パッケージのインストール
aptitude install redmine

# コンテンツ(?)ファイル郡のコピー
#(デフォルトの場所が気に入らなかったので場所変更)
mkdir /var/redmine
cd /var/redmine
cp -a /usr/share/redmine/* ./

# 起動テスト
ruby script/server webrick -e production
=> Booting WEBrick
=> Rails 2.3.5 application starting on http://127.0.0.1:3000
./script/../config/../vendor/rails/railties/lib/rails/gem_dependency.rb:119:Warning: Gem::Dependency#version_requirements is deprecated and will be removed on or after August 2010.  Use #requirement
/var/redmine/vendor/rails/railties/lib/rails/rack/log_tailer.rb:10:in `size': No such file or directory - /var/redmine/log/production.log (Errno::ENOENT)
        from /var/redmine/vendor/rails/railties/lib/rails/rack/log_tailer.rb:10:in `initialize'
        from /usr/lib/ruby/1.8/rack/builder.rb:54:in `new'
        from /usr/lib/ruby/1.8/rack/builder.rb:54:in `use'
        from /usr/lib/ruby/1.8/rack/builder.rb:73:in `call'
        from /usr/lib/ruby/1.8/rack/builder.rb:73:in `to_app'
        from /usr/lib/ruby/1.8/rack/builder.rb:71:in `inject'
        from /usr/lib/ruby/1.8/rack/builder.rb:73:in `each'
        from /usr/lib/ruby/1.8/rack/builder.rb:73:in `inject'
        from /usr/lib/ruby/1.8/rack/builder.rb:73:in `to_app'
        from /var/redmine/vendor/rails/railties/lib/commands/server.rb:95
        from /usr/lib/ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
        from /usr/lib/ruby/1.8/rubygems/custom_require.rb:31:in `require'
        from script/server:3

# production.log がないと怒られたので作成する
mkdir log
touch log/production.log
ruby script/server webrick -e production

# 動作確認
w3m http://127.0.0.1:3000/

apache2 との連携設定

# 必要パッケージインストール
aptitude install apache2 libapache2-mod-passenger

# ここで指定したパスにアクセスすると、 rails が動く?
echo 'RailsBaseURI /redmine" >> /etc/apache2/httpd.conf

# apache の公開ディレクトリに、
# redmine のファイルへのシンボリックリンクを作成。
ln -s /var/redmine/public redmine

# apache スタート
/etc/init.d/apache2 restart

設定は、深く考えずに書きサイトよりコピペ的に拝借しました。

複数 Rails を行う設定なんかもあるようですね。 いつかは調べることになりそう。

参考文献

Apache + Passenger で作る Redmine 環境

複数アプリを動かす時のDocumentRootとRailsBaseURIの関係 | 世界 - daipresents!!

2012/08/23

[作業記録][Debian][KVM] Debian 最小構成から KVM 仮想マシンを作成するまで

Debian で KVM

事前準備

  1. 最初の HDD に ESXi が残ったままだったので、 grub がインストールできなかった...。
  2. grub インストールをスキップし、とりあえずインストールを完了させる。
  3. netinst CD を使って、レスキューモードで起動。
  4. なんか使い方解らんかった...。
  5. ということで再インストール。
  6. ssh をインストール。

結局のところ、 Debian 最小構成 + SSH からのスタートということで。 さて、ここから KVM.

事前準備

aptitude install kvm
adduser mikoto kvm
shutdown -r now

※ mikoto を kvm グループに入れてますが、ブリッジ接続の為に、 sudo(or root ユーザ) で起動することになりました。

VM 作成

mkdir -p ~/vms/vdebian
kvm-img create -f qcow2 ~/vms/vdebian/vdebian.img 10GB

VM 実行してみる

iso はたまたま HDD にあった Debian の LiveCD イメージを流用。 インストール不要ですぐ動作確認・環境確認ができて意外と便利でした。

ホスト OS に X サーバを入れていないので、 VNC 接続でインストールする。

kvm -hda vdebian.img -cdrom ~/debian-live-6.0.4md64-standard.iso -boot d -m 2048 -vnc :0,password -monitor stdio 
cQEMU 0.12.5 monitor - type 'help' for more information
(qemu) change vnc password
Password: **********
(qemu) 

これで、 VNC クライアントで VM に接続できるようになった。

今は、 qemu への入力をファイルに書いてリダイレクトで流し込むようにしている。 本当は設定ファイルとかありそうですがね。

kvm -hda vdebian.img -cdrom ~/debian-live-6.0.4md64-standard.iso -boot d -m 2048 -vnc :0,password -monitor stdio < vdebian.conf
cQEMU 0.12.5 monitor - type 'help' for more information
(qemu) change vnc password
Password: **********
(qemu) 

これだけだと、 NAT 接続の設定のようなので、ブリッジの設定を行う必要がある。

ブリッジの設定

/etc/network/interfaces の編集

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo br0
iface lo inet loopback

iface eth0 inet manual

# The primary network interface
allow-hotplug eth0
iface br0 inet static
    address 192.168.1.111
    netmask 255.255.255.0
    gateway 192.168.1.1
    bridge_ports eth0
    bridge_stp off

ネットワークの再起動

service networking restart

VM 起動

最終的に起動はこんな感じで。

  • ブートでバイスを sda に設定
  • qemu コンソールに接続したい場合は telnet を使用
  • ホストに X が無いので、 -vnc は設定しておく。(無いとエラーで怒られるので)
  • (基本的にコンソールでしか使わないので、 ssh の設定さえしてしまえばこっちのもの)
  • デーモンとして起動
kvm -hda vdebian.img -boot c -m 2048 -monitor telnet:127.0.0.1:10023,server,nowait -net nic,macaddr=12:34:56:78:90:12,model=e1000 -net tap,ifname=tap0 -vnc none -daemonize

参考文献

openSUSE 12.2: 第13章 QEMU モニタを利用した仮想マシンの管理

vnc設定に挑戦してみる - ymkoの日記

KVMを使う(ネットワーク設定編) « さくらインターネット研究所

DebianにインストールしたKVMの仮想OSで、ブリッジ接続が使えるようにする - Symfoware

2012/04/05

[Memo]タイトルとURLを表示するブックマークレット

コピペ支援に貼り付け。
表示中のページのタイトルとURLを、
「"TITLE":URL」の形式でダイアログ表示するブックマークレット。

javascript:(%20%20function(){%20%20%20var%20url=location.href;%20%20%20var%20title=document.title;%20%20%20var%20date%20=%20new%20Date();%20%20%20var%20year%20=%20date.getYear();%20%20%20var%20mon%20=%20date.getMonth()%20+%201;%20%20%20var%20day%20=%20date.getDate();%20%20%20year%20=%20(year%20<%202000)%20?%20year+1900%20:%20year;%20%20%20if%20(mon%20<%2010)%20{%20%20%20%20mon%20=%20"0"%20+%20mon;%20%20%20}%20%20%20if%20(day%20<%2010)%20{%20%20%20%20day%20=%20"0"%20+%20day;%20%20%20}%20%20%20var%20dateStr%20=%20year%20+%20"/"%20+%20mon%20+%20"/"%20+%20day;%20%20%20var%20linkTag%20=%20'%22'%20+%20title%20+%20'%22:'%20+%20url;%20%20%20var%20x%20=%20prompt('"title":url',linkTag);%20%20}%20)()

2011/12/01

[Android][Tool]Eclipse のビルド前に指定した処理を行ってほしい

■ 要求

Eclipse のビルド前に指定した処理を行ってほしい。
(ビルドするたび、ソースファイルを assets にコピーしたい)

■ 実現方法

build.xml を作り、Eclipse の Run 実行前(ビルド前)に実行してもらう。

■ 前提条件
  1. eclipse 導入済み
  2. android sdk 導入済み
  3. eclipse adt plugin 導入済み
  4. ant インストール済み
  5. ant へのパスが通っている

■ 手順概要
  1. build.xml を作成する
  2. ビルド前に build.xml の ant を実行するように設定する

■ 1. build.xml を作成する

今回は assets へのコピーのみなのでこんな感じ。

== build.xml ==
<project basedir="." default="copy" name="ProjectName">
   <target name="copy">
      <copy
         file="src/xxx.java"
         tofile="assets/xxx.java"
      />
   </target>
</project>
===============

こんなかんじで、コピー元(file)とコピー先(tofile)を指定し、プロジェクトのルートディレクトリ直下に保存。

■ 2. ビルド前に build.xml の ant を実行するように設定する
プロジェクトを右クリック-> "Properties" -> "Builders" -> "Import" -> "ProjectName build.xml" -> "OK"
Builders の一覧に、 "ProjectName build.xml" が追加されるので、 "UP" ボタンで一覧の先頭に移動する。

これで、ビルド時に、Android 用の色々な処理が走る前に、上で指定した build.xml が走る。

2011/09/09

[Android][OASIZ]「OASIZ 作業記録」 Version 1.0 を公開しました。

Android Market にて、「OASIZ 作業記録」 Version 1.0 を公開しました。
https://market.android.com/details?id=jp.dip.oyasirazu.timelogger

github からも、野良 apk のダウンロードが可能です。
https://github.com/mikoto2000/OASIZ_TimeLogger/archives/master

Version 1.0 追加機能
- 文字色指定機能追加
- 作業履歴タップで、作業名を入力する機能の追加
- 一秒未満の作業を無視するように修正
- ライセンス情報の表示機能追加

色の選択に、 SuperdryColorPickerLib を使用させて頂きました。
(https://github.com/superdry/SuperdryColorPickerLib)

2011/08/23

[Android][OASIZ]「OASIZ 作業記録」 Version 0.525 を公開しました。

Android Market にて、「OASIZ 作業記録」 Version 0.525 を公開しました。
https://market.android.com/details?id=jp.dip.oyasirazu.timelogger

github からも、野良 apk のダウンロードが可能です。
https://github.com/mikoto2000/OASIZ_TimeLogger/archives/master

ふー。
確認不足でまともに動かないものをアップロードした上に、今日まで気づかないとは。
穴があったら入りたい...。
あと、 github のダウンロード機能を勘違いしていました。
前回の記事からはダウンロードできないみたいですね。
改めて最新版 apk ファイルをアップロードしました。
Android マーケット・github どちらからもまともな apk がダウンロードできるようになりました。

2011/08/22

「OASIZ 作業記録」を公開しました。

Android Market にて、「OASIZ 作業記録」を公開しました。
https://market.android.com/details?id=jp.dip.oyasirazu.timelogger

github からも、野良 apk のダウンロードが可能です。
https://github.com/mikoto2000/OASIZ_TimeLogger/tree/master/bin/0.5

以下、 README より引用。

■ これは何?
時間記録支援アプリケーションです。


■ 何ができるの?

- 作業名を指定して、作業時間を記録すること
- 作業名を後から変更すること
- 作業記録をエクスポートすること
- 壁紙を選択すること

* 詳細画面のリストをタップすることで、選択した作業名を修正できます。
* 詳細画面のメニューから、 ACTION_SEND に対応したアクティビティに作業記録を送ることができます。
* 詳細画面のメニューに、壁紙選択メニューがあります

このアプリケーションは、無保証です、
不具合があるかもしれません。
個人の責任で使用してください。

github にてソースコードを公開しています。
https://github.com/mikoto2000/OASIZ_TimeLogger


■変更履歴
2011/08/21 Version 0.5 を公開しました。


■ TODO
・テストを真面目にする
・縦画面と横画面で別々の背景画像が指定できるとよいね。
・説明書的なものが必要か?
  (画面オーバレイで出てくるヘルプとか理想)
・テーマ指定(最低でも文字色くらいは...)
・入力補助機能が欲しい
・メモ書きくらいできるようにしたほうが良い?

2011/06/18

[Memo]Vimperator で Evernote プラグインを便利に使う

Evernote Web Clipper プラグインを入れる
Evernote Web Clipper :: Add-ons for Firefox


~/.vimperatorrc に追加
command clip javascript Evernote.Overlay.init(null)
これで、「:clip」と打つと、Evernote のクリップウインドウが表示されるようになる。
一度起動すると、2回め以降はbookmarkletよりもきびきび動く気がするので幸せ。

2011/05/16

[Android]Galaxy Tab のバックアップとリストア

前提条件

Galaxy Tab の root を取得していること。

カーネルイメージを転送するツール(Heimdall)の入手

Heimdall – Glass Echidna
上記ページから deb パッケージをダウンロードする。
フロントエンドは、 libqtcore4 が必要らしいのでそれもインストール
sudo aptitude install libqtcore4
sudo dpkg -i heimdall_1.1.1-1_amd64.deb heimdall-frontend_1.1.1-1_amd64.deb
squeez では libqtcore4.6 までしか提供されていない。
heimdall が依存しているのは 4.7。
一時的に aptline を sid にして対応する。
...と思ったが、qtcore4 依存のものが多くて不安になったのでフロントエンドは保留。

イメージのバックアップ

dd if=/dev/block/bml1 of=/sdcard/boot.bin bs=4096
dd if=/dev/block/bml2 of=/sdcard/pit.pit bs=4096
dd if=/dev/block/stl3 of=/sdcard/efs.rfs bs=4096
dd if=/dev/block/bml4 of=/sdcard/Sbl.bin bs=4096
dd if=/dev/block/stl6 of=/sdcard/param.lfs bs=4096
dd if=/dev/block/bml7 of=/sdcard/zImage bs=4096
dd if=/dev/block/stl9 of=/sdcard/factoryfs.rfs bs=4096
dd if=/dev/block/stl10 of=/sdcard/dbdata.rfs bs=4096
dd if=/dev/block/stl11 of=/sdcard/cache.rfs bs=4096
dd if=/dev/block/bml12 of=/sdcard/modem.bin bs=4096 
/data/bin/busybox tar -czvf /sdcard/data.tar.gz /data

adb pull /sdcard/param.lfs .
adb pull /sdcard/zImage .
adb pull /sdcard/factoryfs.rfs .
adb pull /sdcard/dbdata.rfs .
adb pull /sdcard/cache.rfs .
adb pull /sdcard/modem.bin .
adb pull /sdcard/efs.rfs .
adb pull /sdcard/boot.bin .
adb pull /sdcard/Sbl.bin .
adb pull /sdcard/pit.pit .
adb pull /sdcard/data.tar.gz .

バックアップのリストア

データ領域のリストア
adb push data.tar.gz /sdcard/data.tar.gz
adb shell su -c "tar -zxvf /sdcard/data.tar.gz"
その他領域のリストア
adb reboot download
heimdall flash --kernel zImage --factoryfs factoryfs.rfs --modem modem.bin --cache cache.rfs --dbdata dbdata.rfs --param param.lfs

参考文献

後で見る

カスタム ROM 作成のための足がかりになるか?
HOWTO: Unpack, Edit, and Re-Pack Boot Images - Android Wiki

2011/05/05

[Android]Galaxy Tab root 化

galaxy tab を root 化したい

ディスク(?)イメージごとバックアップをとりたい。
カスタム ROM を入れたり、最終的には Android Framework 以下の部分に手を入れてみたかったり。
結論から言うと、下記ページをみながら作業するといいよ。で終了。
dynabookAZをSuperOneClick抜きでルート化する - D!
以下、作業記録。
作業記録
以下のツールで root 化できるらしい。
[APP]SuperOneClick v1.9.1 (Root, Unroot, Enable Non-Market App) - xda-developers
mono のインストールが必要なのでインストール。
sudo aptitude install mono-2.0-devel
(libmono の一部で良い気もするが面倒なので全部インストール。)
** (SuperOneClick.exe:24913): WARNING **: The following assembly referenced from /home/mikoto/Download/SuperOneClick1.9.1/SuperOneClick.exe could not be loaded:
     Assembly:   System.Windows.Forms    (assemblyref_index=2)
     Version:    2.0.0.0
     Public Key: b77a5c561934e089
The assembly was not found in the Global Assembly Cache, a path listed in the MONO_PATH environment variable, or in the location of the executing assembly (/home/mikoto/Download/SuperOneClick1.9.1/).


** (SuperOneClick.exe:24913): WARNING **: Could not load file or assembly 'System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' or one of its dependencies.

** (SuperOneClick.exe:24913): WARNING **: Missing method EnableVisualStyles in assembly /home/mikoto/Download/SuperOneClick1.9.1/SuperOneClick.exe, type System.Windows.Forms.Application

Unhandled Exception: System.IO.FileNotFoundException: Could not load file or assembly 'System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' or one of its dependencies.
File name: 'System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'
...うーむ。Forms が無い?それっぽいパッケージを追加。
sudo aptitude install libmono-winforms2.0-cil
よし、動いた。
とおもいきやルート化中にフリーズ。 chmod で失敗している?エラーログも吐かないし原因不明。
下記ページを見て手動セットアップ。
dynabookAZをSuperOneClick抜きでルート化する - D!
取り合えすこれでルート化はできたので、イメージバックアップをとってみよう。

2010/12/19

[Debian]debian squeeze amd64 に AcrobatReader9 をインストール

atpline に追加

deb http://www.debian-multimedia.org etch main non-free

acroread と、その日本語環境インストール

sudo aptitude search acroread acroread-fonts-jpn acroread-l10n-ja acroread-dictionary-ja
以上。

2010/12/17

[Java]リフレクションしてみた

極簡単なリフレクションの例。
コピペ支援的な感じで。
import java.lang.reflect.Constructor;

public class ReflectionTest {
   public static void main(String[] args) {
      try {
         // create String instance
         String string_classStr = "java.lang.String";
         Class<String> string_class = (Class<String>) Class.forName(string_classStr);
         Class string_argTypes[] = { String.class };
         Constructor<String> string_constructor = string_class.getConstructor(string_argTypes);
         Object string_constructorArgs[] = { "TESTING@TESTONG" };
         String string = (String) string_constructor.newInstance(string_constructorArgs);
         System.out.println(string);
         
         // call toString() method
         Method string_toString = string_class.getMethod("toString", null);
         String dst_string = (String) string_toString.invoke(string, null);
         System.out.println(dst_string);
         
         // call split("@") method
         Class string_split_argTypes[] = { String.class };
         Object string_split_args[] = {"@"};
         Method string_split = string_class.getMethod("split", string_split_argTypes);
         String[] string_splitArray = (String[]) string_split.invoke(string, string_split_args);
         for (String str : string_splitArray) {
            System.out.println(str);
         }
         
         // call String.format("num1 : %d, num2 : %d", 13, 14) methods (static method, and "13, 14" is var args)
         Class string_format_argTypes[] = { String.class, Object[].class };
         Object string_format_args[] = { "num1 : %d, num2 : %d", new Object[]{13, 14} };
         Method string_format = string_class.getMethod("format", string_format_argTypes);
         dst_string = (String) string_format.invoke(null, string_format_args);
         System.out.println(dst_string);
         
      } catch (NoSuchMethodException e) {
         e.printStackTrace();
      } catch (IllegalArgumentException e) {
         e.printStackTrace();
      } catch (InstantiationException e) {
         e.printStackTrace();
      } catch (IllegalAccessException e) {
         e.printStackTrace();
      } catch (InvocationTargetException e) {
         e.printStackTrace();
      } catch (ClassNotFoundException e) {
         e.printStackTrace();
      }
   }
}
追記 reflection の綴りをがっつり間違えていたので修正しました。