Ubuntu 10.10 Netbook Remix その後

先日外付けのポータブル HDD にインストールしました Ubuntu 10.10 Netbook Remix ですが結構気に入ってよく使っています。 ThinkPad X61 と IdeaPad S10e で同一ディスクをつなぎ替えて稼働中。 いわゆるネットブックだけではなく 1024×768 系のノート PC にも便利に使えるようです。 🙂

Eclipse 入れたり xampp いれたり Tomcat 入れたりしてすっかりプログラムがかける環境にしてみましたが、画面がせまいノート PC でこういう用途にも Netbook Remix はうまく働いてくれるようです。

ただ、ちょっとまだ Unity はバギーかもしれません。 使っているとちょっとおかしいなというところは目につきます。 まぁ致命的なことは今のところ起きていないので、バージョンアップを楽しみに。

netbook40

OpenGL の組み合わせもなかなかうまく動作しているようです。 上は Titanion さんを動かしているの図。 パッケージに入っていますのでぜひぜひ。 操作は Z と X とその同時押しで、、って弾幕やる人なら分かりますよね(笑)

てなわけで、仮想デスクトップがてら動いているところを動画でとってみました。 エンコード失敗したのでちょっとあらくてすいませぬ。

実は Ubity さんまだキーボードショートカットがいまいちで、マウス必須になってしまうところがちょっとあれなのですが、そこは発展中ということでご愛敬。

てなわけで、動画とったら力尽きたので今日はここまででございます。。

Ubuntu 10.10 Netbook Remix のインストール

先日 10/10 に Ubuntu 10.10 のリリースがありました。 🙂 Desktop 版、Server 版、Netbook 版といくつかありますが、今日は Netbook Remix を IdeaPad に入れてみました。

10.04 の Netbook Remix を入れて結構使っていましたが、10.10 版もなかなかよさそうです 😀 目玉は最近の 16:9 や 16:10 の横長液晶の縦方向を有効活用する Unity インターフェースだと思います。

netbook30

こんな感じで、アプリの最大化を基本として上部バーにウインドウ操作系と通知を統合し、横に長いことを生かして左にタスクスイッチャーが追加されています。 アプリによっては Mac のようにメニューも上部バーに統合されるようです。

左のタスクスイッチャーは Windows 7 のそれに似ていて、起動アプリのピン留めができます。 また、バックグラウンド動作で見えていないウインドウの動作があった場合は、揺れてお知らせしてくれたりしてなかなかかわいいです。

ちなみに最初、この上方向からの順番の変更の仕方が分からなかったのですが、右に引き抜いてから動かせば良いようです。 なるほど(笑)

netbook34

ちなみにタスクスイッチバーのショートカットは Super(Win)キー深押し+数字でした。

また、10.04 の Netbook Remix では標準でなかった仮想デスクトップが使えるようになっています。 このため、GPU 支援が必須になっています。 Intel 内蔵か NVIDIA なら何もしなくて問題なく動きそうです。(うちで試した限りは AMD の内蔵 GPU では動きませんでした)

 netbook31

Unity は基本的に最大化でつかわれる設計ですが、仮想画面は CTRL + TAB のグループをつくる感じで操作すると良いのだと思います。 ALT + CTRL + 矢印キーで仮想デスクトップのスイッチができます。

それから、iPhone 以降流行のアプリケーション指向。 アプリランチャーもそんな感じに。 インストール済み、未済のアプリが統合され、入っていないものを起動しようとすると、そのままネットワークインストーラが起動します。

netbook32

一方でドキュメント指向もサポートしています。

netbook33 

これらはシングルコア Atom だとちょっと重いかな、、Core 2 Duo くらいで動かすとわりと良い感じでした。 今後、チューニングされていくかもしれません。

今回この Netbook Remix は、USB HDD にインストールして動作させています。 こうしておくと、USB HDD ぬいて(大抵の)いろんな PC で自分の環境を起動できるので大変便利です。 (ちなみに最近のインターネットカフェは BIOS でブート選択画面だせないように制限かけてるところ多くて、ちょっとちんまり。。)

インストール時のパーティション設定で「高度な設定」を選択し、外付け HDD に / の ext4 ボリュームと swap 領域をつくりフォーマット指定をします。(内蔵 HDD に間違えないように!!)

Ubuntu は 10G や 20G あれば十分なので、残りは FAT32 の領域としてとっておけば、普通の外付け HDD としても機能できます。 これはインストール時は空き領域にしておいて後で Windows でフォーマットしたほうが安全かもしれません。

でもってブートローダを入れる箇所の指定がありますので、必ずそこを USB HDD やメモリにします。 あとはインストール後 BIOS で USB HDD を優先にして電源入れてあげれば Ubuntu が起動します。 たとえば内蔵 HDD の Windows あげたいときは抜いておくだけ。 楽あるね。

IMG_0096 

さて、実は今回うちの IdeaPad / ThinkPad に接続した USB CDROM –> USB HDD というインストールを行った場合に、ブートローダ書き込み時にエラーがでてインストールを完了できませんでした。 これは 10.04 のときもでていて、このときは ThinkPad のみでしたが、今回は IdeaPad でも同様のエラーが。

もしかすると、単純に USB HDD のパーティションの状態のせいかもなのですが、とりあえずデスクトップ PC の SATA の CDROM から USB HDD にインストールさせています。 で、IdeaPad につなぎなおしています。

ネットブック系で多く使われているだろう、Broadcom の NIC も今回からコンパイルすることなく追加ドライバでいれてくれるようになっています。 ハードウェア・ドライバを選択するとサーチしてくれると思われます。 ネットワークインストールなのでこのときは、有線をつないでおきます。

あとは、、Eclipse とかパッケージ外のアプリを動かしたときピン留めできないのがちょっと残念。 .desktop ファイルをつかって gconf-editor でごにょごにょするとできそうでしたがとりあえずあきらめ。 また、メニューバーが消されてしまってしんなりしたときは、環境変数で次を設定後起動すると乗っ取られないようです。

export UBUNTU_MENUPROXY=0

ThinkPad X61 にも接続して動作させていますが、1024×768 機でもなかなか便利なように思いました。 トラックポインタの設定は相変わらず手動なので /usr/share/X11/xorg.conf.d/20-thinkpad.conf に以下のファイルを追加します。

Section "InputClass"
    Identifier "Trackpoint Wheel Emulation"
    MatchProduct "TrackPoint"
    MatchDevicePath "/dev/input/event*"
    Driver "evdev"
    Option "EmulateWheel" "true"
    Option "EmulateWheelButton" "2"
    Option "Emulate3Buttons" "false"
    Option "XAxisMapping" "6 7"
    Option "YAxisMapping" "4 5"
EndSection

10.04 から場所が変わっているので要注意です。

てなわけで、持ち運び環境としても、横長液晶用の UI としてもなかなか便利な Ubuntu 10.10 Netbook Remix でした。 気に入って使っています。 🙂

さくらの VPS で遊ぶ (Redmine + Subversion 編)

さくらインターネットさんが低価格 VPS をはじめたということで、さらに2週間のお試し期間もあるということで、どういった感じか見るために早速登録してみることにしました。

VPS のポイントは何はなくてもそのメモリ。 さくらさんのは 512M ということで、まずは確実にちょっと厳しいことが予想される、Java + Serlvet + PostreSQL アプリからやってみました。 まぁ実験と言うことで。 🙂

ターゲットは最近おなじみ Redmine と Subversion サーバです。

さくらのVPS|VPS(仮想専用サーバ)はさくらインターネット

さくらのVPSは、仮想化技術を用いて1台の物理サーバ上に複数の仮想サーバを構築し、お客様だけの仮想専用サーバとしてご利用いただけるサービスです。専用サーバの自由度と共用サーバの低価格、そして仮想サーバならではの機能を合わせ持ったホスティングサービス、さくらのVPSをぜひご利用ください。

仮想化 VPS ということで、OS (標準で CentOS 5.5 64bit版)の root のパスワードがもらえます。 root があればどんなアプリ動作環境でもライブラリでも、好きに入れることができるのが最大の嬉しいところ。 ここでは、一般のいわゆるレンタルサーバではサポートされていない、Java + サーブレットの環境をつくってアプリを配置してみました。

ちなみに、コントロールパネルより root のパスワード通知のメールが少し遅れてきて、初期パスワードをどこだどこだと最初に探したのはここだけの秘密です。。

さて、さくらさん VPS で面白いなと思ったのが、コンソールログインがブラウザ上からできること。 JavaScript で実装されている?! top コマンドとかもちゃんとでてすごいですね。

redmine31

これのおかげで、まちがって SSH のサービスおとしちゃったとか、iptables ミスってネットワークログインできなくなっちゃったとかも回復することができます。 他には、OS の起動停止やリソースの閲覧が可能です。 残念ながら仮想マシンのスナップショットバックアップはとれませんが、これは低価格ゆえ仕方がないところでしょう。

では Java + Tomcat6 + PostgreSQL + mod_dav_svn(Subversionサーバ) をインストールしてみます。 まずは気になる初期状態のメモリは以下のような感じでした。 (起動して yum update しただけの状態)

# free
             total       used       free     shared    buffers     cached
Mem:        510532     433784      76748          0      53672     340188
-/+ buffers/cache:      39924     470608
Swap:      2048276          0    2048276

起動サービスはたいぶ初期状態でしぼってあり、バッファ、キャッシュを除いて 470M ほど Free な感じです。

これに mod_dav_svn をインストール。 rpmforge から yum install mod_dav_svn しています。 で、Apache とともに起動。

# free
             total       used       free     shared    buffers     cached
Mem:        510532     442624      67908          0      53804     341040
-/+ buffers/cache:      47780     462752
Swap:      2048276          0    2048276

まぁ起動させただけなので、、460M ほど Free。

次に Redmine で使う PostgreSQL をインストール。 yum install postgresql-server の感じで。

# /etc/init.d/postgresql start
Initializing database:                                     [  OK  ]
Starting postgresql service:                               [  OK  ]
[root@www1431u opt]# free
             total       used       free     shared    buffers     cached
Mem:        510532     483876      26656          0      11332     416120
-/+ buffers/cache:      56424     454108
Swap:      2048276         80    2048196

まぁこちらも起動しただけなので、450M。

で、Tomcat6 をインストール。 jsvc を使ってデーモン起動しています。

まず、jsvc (commons-daemon-1.0.2-native-src) をコンパイルするために、JDK の64bit 版を (jdk-6u21-linux-x64-rpm.bin)をインストールしています。 でもって、起動シェルを以下の感じで。

# cat /etc/rc3.d/S80tomcat6 
#!/bin/sh
#
# chkconfig: - 80 20
# description: jsvc
 
# Source function library.
. /etc/init.d/functions
 
JAVA_HOME=/usr/java/default
CATALINA_HOME=/opt/tomcat6
TOMCAT_USER=tomcat
TMP_DIR=/tmp
CATALINA_OPTS="-Xmx256M -Xms128M"
CLASSPATH=\
$JAVA_HOME/lib/tools.jar:\
$CATALINA_HOME/bin/commons-daemon.jar:\
$CATALINA_HOME/bin/bootstrap.jar
PIDFILE=/var/run/tomcat.pid
LOCKFILE=/var/lock/subsys/tomcat
DAEMON=$CATALINA_HOME/bin/jsvc
 
start(){
    #
    # Start Tomcat
    #
 
    echo -n "Starting tomcat6: "
    $DAEMON \
    -pidfile $PIDFILE \
    -user $TOMCAT_USER \
    -home $JAVA_HOME \
    -Dcatalina.home=$CATALINA_HOME \
    -Djava.io.tmpdir=$TMP_DIR \
    -outfile $CATALINA_HOME/logs/catalina.out \
    -errfile '&1' \
    $CATALINA_OPTS \
    -cp $CLASSPATH \
    org.apache.catalina.startup.Bootstrap
 
    #
    # To get a verbose JVM
    #-verbose \
    # To get a debug of jsvc.
    #-debug \
    RETVAL=$?
    if [ $RETVAL = 0 ]; then
        echo_success
        touch $LOCKFILE
    else
        echo_failure
    fi
    echo
}
 
stop(){
    #
    # Stop Tomcat
    #
    echo -n "Shutting down tomcat6: "
    $DAEMON \
    -stop \
    -pidfile $PIDFILE \
    org.apache.catalina.startup.Bootstrap
    RETVAL=$?
    if [ $RETVAL = 0 ]; then
        echo_success
        rm -f $PIDFILE $LOCKFILE
    else
        echo_failure
    fi
    echo
}
 
case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    restart)
        stop
        start
        ;;
    status)
        status $DAEMON
        RETVAL=$?
        ;;
    *)
        echo $"Usage: jsvc {start|stop|restart|status}"
        exit 1
        ;;
esac

CATALINA_OPTS="-Xmx256M -Xms128M" として最大 256M を JavaVM に割り当てみました。 あと、mod_proxy_ajp で Apache を経由させています。

ではいってみましょう。

きゅるるるるるる…、ぼぼん!

redmine30

動きました!

気になるメモリは、、

[root@www1431u logs]# free
             total       used       free     shared    buffers     cached
Mem:        510532     504736       5796          0       3528      33020
-/+ buffers/cache:     468188      42344
Swap:      2048276     382568    1665708

42M。(笑)

この状態でブラウザ操作レベルで、多重アクセスの負荷をかけてみましたがさすがに5多重くらいにすると OutOfMemoru Exception で落ちてしまうようです。

Subverion へ大量ファイル(WordPress のファイル)のコミットもしてみました。 こちらはうまくいきましたが、バックで Redmine を操作するとやはり厳しい模様。 また、tag と trunk など大量の差分比較も難しそうです。(broken pipe してた)

てなわけで、やる前から厳しいなとは思っていたのですが、Java のアプリは 512M だとなかなか厳しそうです。 Redmine に関しては(未検証ですが)素直に Passenger(mod_rails) を使えばうまくいくような気もしますが、ここは実験ということで。 🙂

Tomcat に関しては標準で入っている manager アプリとかおとして、768M メモリだったらいけそうなので、実におしい。。 デプロイ田中もにっこり。

それにしても VPS は手軽面白いですね。 実践的に Linux で遊べるという部分で 1台もっていると何かと嬉しいかもしれません。

てなわけで、次は WordPress を入れてみたいと思います。 お楽しみに。 😀

Redmine を Tomcat6 にデプロイ

先日インストールしましたプロジェクト管理ツールの Redmine ですが、1.0.1 として 1系の正式版がでました!

というわけで、先日は mod_rails で動作させていましたが、せっかくなので今度は JRuby を使って Tomcat6 上にデプロイしてみたいと思います。

なにか利点があるかって話ですが、1パッケージにして JavaVM で動作させておけば、OS にのっている Ruby 実行環境に依存しなくて済むのがいいところ。 gem のバージョン依存とか考えなくていいし、Servlet の実行環境さえあればどこにでも乗せられるのでなかなか便利かもしれません。

とりあえず、.war 玉をつくる作業した環境は以下の通りです。

[hiromasa@localhost ~]$ java -version
java version "1.6.0_21"
Java(TM) SE Runtime Environment (build 1.6.0_21-b06)
Java HotSpot(TM) Server VM (build 17.0-b16, mixed mode)
[hiromasa@localhost ~]$ jruby -v
jruby 1.5.2 (ruby 1.8.7 patchlevel 249) (2010-08-20 1c5e29d) (Java HotSpot(TM) Client VM 1.6.0_21) [i386-java]
[hiromasa@localhost ~]$ sudo /opt/tomcat6/bin/version.sh 
[sudo] password for hiromasa: 
Using CATALINA_BASE:   /opt/tomcat6
Using CATALINA_HOME:   /opt/tomcat6
Using CATALINA_TMPDIR: /opt/tomcat6/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /opt/tomcat6/bin/bootstrap.jar
Server version: Apache Tomcat/6.0.29
Server built:   July 19 2010 1458
Server number:  6.0.0.29
OS Name:        Linux
OS Version:     2.6.18-194.11.1.el5
Architecture:   i386
JVM Version:    1.6.0_21-b06
JVM Vendor:     Sun Microsystems Inc.

まずは、JRuby のインストールから。

$ sudo wget http://jruby.org.s3.amazonaws.com/downloads/1.5.2/jruby-bin-1.5.2.tar.gz
$ sudo tar zxvf jruby-bin-1.5.2.tar.g
$ cat /etc/profile
export JRUBY_HOME=/opt/jruby-1.5.2
export PATH=$PATH:$JRUBY_HOME/bin

でもって、必要な gems を入れていきます。 ぼくは PostgreSQL で動作させているため、jdbc はポスグレのになります。

$ sudo jruby -S gem install rail
$ sudo jruby -S gem install activerecord-jdbcpostgresql-adapter
$ sudo jruby -S gem install warbler
$ sudo jruby -S gem install rack --version '~> 1.0.1

warbler というのが、Rails のアプリを .war 玉にしてくれるありがたいものです。 あと、rack が 1.0.1 じゃないと後で Redmine を動かしたときに Exception するので入れておきます。

でもって、Redmine をダウンロードしてきて、普通に config を設定していきます。 config/database.xml については以下のように。

[hiromasa@localhost redmine-1.0.1]$ cat config/database.yml
# MySQL (default setup).
 
production:
  adapter: jdbcpostgresql
  driver: org.postgresql.Driver
  database: [dbname]
  host: localhost
  username: [username]
  password: [password]
  encoding: utf8
  scheme_search_path: public

以下、Redmine のファイルを置いた直下のディレクトリにて。

これで DB のマイグレーションができるハズです。(ここでは .war をつくるのと同じ環境に入れてます)

$ sudo jruby -S rake db:migrate RAILS_ENV="production"

でもって、いよいよ warbler で .war をつくります。 まずは config をつくってもらいます。

$ sudo jruby -S warble config

ほいでもって、できた config を編集。

config/warble.rb

config.dirs = %w(app config lib log vendor tmp lang)
config.gems << "activerecord-jdbcpostgresql-adapter"
config.gem_dependencies = true
config.webxml.rails.env = 'production'
config.gems["rack"] = "1.0.1"

最後の rack のバージョン指定をしないと依存関係でおちるようです。(新しい方が使われてしまう)

できたら、いよいよ。

   1: $ sudo jruby -S warble

 

[root@localhost redmine-1.0.1]# ls -laF redmine-1.0.1.war 
-rw-rw-rw- 1 root root 17230199  8月 28 16:01 redmine-1.0.1.war

 

キター!

こころを込めて配置します。 ここでは、war つくった環境と同じなのでそのまま…

$ sudo /etc/init.d/tomcat6 stop
$ sudo cp redmine-1.0.1.war /opt/tomcat6/webapps/redmine.war
$ sudo /etc/init.d/tomcat6 start

無事デプロイ成功。 起動しました。 🙂

redmine20

でもって、添付ファイルについてが気になって調べてみたのですが、どうやら WEB-INF/files に置かれる模様。 こんなところに置いてたらちょっとしたことで消えちゃういますのでシンボリックリンクで対応。

$ sudo ln -s /home/apache/redmine/files/ files

デプロイするたびにですが、しょうがないですね。 設定とか実はあるのかもしれませんがとりあえず。 あとは必要なら mod_ajp でつなぐなど。

というわけで、できあがった redmine.jar と Tomcat さえあればどこでも動くようになりました。 とりあえず事務所に持って行きます。。(笑)

DB マイグレーションは、 .war 作成でつかった JRuby 自体もただコピーするだけで他に持って行けると思うので、それでマイグレーション動かするのが良さそうですね。

エクスポートインポートでいければ Stax Networks とかにもデプロイできるかもしれません。(ただしファイルがかけないため、添付ファイルはだめだと思われる)

さて気になる .war ファイルですがほどいてみると以下のようになっていました。

redmine21

画像が小さくて見にくいですが、WEB-INF/gems/gems に依存する gems が格納されるようです。 あとは、ひとつの filter から jruby を起動して .rb を動的コンパイルしつつ動作という感じでしょうか。

動きはきびきびして、いい感じです。 先ほど入れて一通り動作見たばかりなので、もうちょっと動作させてみたいと思います。

以上、デプロイ田中でした。 ざっ。

Subversion サーバ を CentOS 5.5 で。

Subversion サーバは昔も家にたてていたのですが、ローカルサーバを Atom 機にしてからまだインストールしていなかったので CentOS 5.5 上に改めて構築してみました。

すぐたつと思ったら、いろいろ罠があってはまったのでメモ代わりの投稿です。 結論から言うと思った通りにたてることができませんでした。。orz

とりあえず、CentOS 5.5 に subvesion と Apache + mod_dav_svn をインストール。 mod_dav_svn は新しいものを使いたかったので、rpmforge から 1.6 系をもってきています。

[root@localhost conf.d]# rpm -q httpd
httpd-2.2.3-43.el5.centos
[root@localhost conf.d]# rpm -q mod_dav_svn
mod_dav_svn-1.6.12-0.1.el5.rf

でもって、/etc/http/conf.d/subvesion.conf を以下のようにしました。 全権限を BASIC 認証にしたのと、DocumentRoot が Apache とかぶると問題がでるようなので、新しいポートで mod_dav をたてています。

<VirtualHost *:8082>
   <Location />
      DAV svn
      SVNParentPath /home/apache/svn
      SVNListParentPath on
      DavDepthInfinity on
      Order deny,allow
      Deny from all
      Allow from 127.0.0.1
      Allow from 192.168.0.0/24
      AuthType Basic
      AuthName "Authorization Realm"
      AuthUserFile /home/apache/passwd/.htpasswd 
      Require valid-user
   </Location>
</VirtualHost>

DocumentRoot かぶりの問題は、mod_dav_svn の FAQ に記載がありました。

Webブラウザからリポジトリを見られるようにしているんだけど、’svn checkout’ が、「301 Moved Permanently」というエラーになる。何が悪いの?

解決策としては、リポジトリの<Location>を、通常の Web 共有として既に公開されている領域とオーバーラップしないようにするか、もしくはその中へ収めるべきだ。

ここがまず一発目にはまったポイントでした。。

さてディレクティブに SVNParentPath というのがありますが、これが親ディレクトリから subversion を使う設定です。 要はプロジェクトの作成の権限をユーザがもてることになります。

てなわけで、Eclipse の Subclipse (SVNKit) からプロジェクトの共有を発行すると…。

svn: can not read HTTP status line
 PROPFIND request failed on '/'

エラー。。 なじぇ。。

http status line が読めないということで、まず SVNKit のソースを疑ったのが間違いの始まり。。 org.tmatesoft.svn.core.internal.io.dav.http の自前パーサでやっているようだったので、バグっているのかと。。

で、いろいろいじっていると、なんと本気で PROPFIND メソッドで status line が返ってきていないことが発覚。。

hiromasa@hiromasa-cube:~$ telnet 192.168.0.100 8082
Trying 192.168.0.100...
Connected to 192.168.0.100.
Escape character is '^]'.
PROPFIND / HTTP/1.1
Host: aaa
Authorization: Basic fjwi094j403fj49fj949
 
Connection closed by foreign host.

いきなりぶったぎられています。。 おかしいなぁということで、SVNParentPath の下に svnadmin create test とかして svn リポジトリをつくってそこを対象に同じ事をしてみると…

hiromasa@hiromasa-cube:~$ telnet 192.168.0.100 8082
Trying 192.168.0.100...
Connected to 192.168.0.100.
Escape character is '^]'.
PROPFIND /test HTTP/1.1
Host: aaa
Authorization: Basic fjwi094j403fj49fj949
 
HTTP/1.1 207 Multi-Status
Date: Sat, 21 Aug 2010 01:51:23 GMT
Server: Apache/2.2.3 (CentOS)
Content-Length: 2306
Connection: close
Content-Type: text/xml; charset="utf-8"
 
<?xml version="1.0" encoding="utf-8"?>
(以下略)

ちゃんと返ってくる~。 なじぇ~。 権限?ということで OPTIONS を発行してみると、、

hiromasa@hiromasa-cube:~$ telnet 192.168.0.100 8082
Trying 192.168.0.100...
Connected to 192.168.0.100.
Escape character is '^]'.
OPTIONS / HTTP/1.1
Host: aaa
Authorization: Basic fjwi094j403fj49fj949
 
HTTP/1.1 200 OK
Date: Sat, 21 Aug 2010 01:43:25 GMT
Server: Apache/2.2.3 (CentOS)
DAV: 1,2
DAV: version-control,checkout,working-resource
DAV: merge,baseline,activity,version-controlled-collection
DAV: http://subversion.tigris.org/xmlns/dav/svn/depth
DAV: http://subversion.tigris.org/xmlns/dav/svn/log-revprops
DAV: http://subversion.tigris.org/xmlns/dav/svn/partial-replay
DAV: http://subversion.tigris.org/xmlns/dav/svn/mergeinfo
DAV: <http://apache.org/dav/propset/fs/1>
MS-Author-Via: DAV
Allow: OPTIONS,GET,HEAD,POST,DELETE,TRACE,PROPFIND,PROPPATCH,COPY,MOVE,LOCK,UNLOCK
Content-Length: 0
Connection: close
Content-Type: httpd/unix-directory
 
Connection closed by foreign host.

ちゃんと Allow されているっぽい。。 なぞぞーん。。

で、ふと Apache の error_log を PROPFIND したタイミングでみてみると、、

[Sat Aug 21 11:53:30 2010] [notice] child pid 3497 exit signal Segmentation fault (11)

 

きゅるきゅるるるるる…、ぼぼん!

セグってるし。。 どうりですぐ切断されるはずです。。

てなわけで Apache が悪いのか mod_dav_svn が悪いのか、組み合わせが悪いのかちょっと分かりませんが、これ以上はぼくの手におえなそうです。 まぁアプリ的な設定が悪いわけではなさそうなのが収穫。

とりあえず SVNParent に直アクセスするのはあきらめて、プロジェクトできるたびに svnadmin create する運用にしたいとおもいます。 Eclipse にリポジトリいっぱい登録しなきゃいけないのがいたいですが、しょうがない。。

無事 Eclipse や TortoiseSVN からもみることができるようになりました。

snv01

ほいでもって、Redmine からも接続。 🙂

svn02

Eclipse の mylyn から Redmine につなげば、チケットとくくりつくようなことも可能なはずです。 もうちょっとやってみるデス。

Fastladder を mod_rails にインストール

昨日 Redmine を入れるために Ruby / Ruby on Rails の環境を、Cent OS 5.5 のローカルサーバにつくりました。

というわけで、今日はさらにそこに Fastladder Open Source を入れてみます。 なかなか手ごわかったですが、なんとか動いたようです。 🙂

Fastladder はサーバインストール型の RSS リーダです。

Fastladder Open Source / Free Download

オープンソース版「Fastladder」は、サーバインストール型のRSSリーダーです。法人で管理しているサーバや、個人でお持ちのPCなどにインストールして使用できますので、イントラのRSSも読むことができます。

以前から Gregarius をインストールして使っていたのですが、ちょっと遅い、、ということで Fastladder。 こちらも前からやってみたかったのですが、 Rails の環境が用意できなかったので断念していました。

とりあえず動いた! の図。 :)

fastladder01

まぁ ASP 版とほとんどいっしょなので ASP つかえって話ですが、やっぱりデータがこちらのおなかにあるのは、いろいろ使い勝手がいいのでローカルサーバで動かすことにしています。

さて、CentOS 5.5 へのインストールですが、Ruby とかライブラリとかの関係でなかなか動かすのが大変でした。。 覚えている限りでひっかかったところを、書いていきます。

とりあえず、作業した環境

[root@localhost ~]# cat /etc/httpd/conf.d/passenger.conf 
LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-2.2.15/ext/apache2/mod_passenger.so
PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-2.2.15
PassengerRuby /usr/bin/ruby
 
[root@localhost ~]# ruby -v
ruby 1.8.5 (2006-08-25) [i386-linux]
[root@localhost ~]# gem -v
1.3.1

まず必要となる Freeimage ライブラリは、コンパイルしていれました。 make; make install して ldconfig すれば入ると思います。

rfeedfinder については、hpricot が依存するのですが、0.8 系だとエラーになるようなので、0.7 系を入れています。

gem install hpricot --version 0.7

これで、Fastladder の INSTALL.txt はクリアできると思います。

で次に、Rails アプリケーションの設定。 せっかく、昨日 Postgres 入れたのでこちらを使うようにしました。

[hiromasa@localhost config]$ cat /opt/fastladder/config/database.yml
production:
  adapter: postgresql
  database: fastladderdb
  username: fastladder
  password: パスワード
  host: localhost
  encoding: utf8

でもって、ポスグレに DB とユーザ追加。

   1: sudo -u postgres createuser -U postgres -dEeP
   2: sudo -u postgres createdb -e -U postgres -O fastladder fastladderdb "For Fastladder"

httpd.conf に Rails アプリを追加。

<VirtualHost *:80>
   ServerName localhost.localdomain
   DocumentRoot /var/www/html
   RailsBaseURI /redmine
   <Directory /var/www/html>
      AllowOverride all
      Options -MultiViews
   </Directory>
</VirtualHost>
 
<VirtualHost *:8081>
   ServerName localhost.localdomain
   DocumentRoot /opt/fastladder/public 
   <Directory /opt/fastladder/public>
      AllowOverride all
      Options -MultiViews
   </Directory>
</VirtualHost>

上が Redmine 用で下の 8081 が Fastladder です。 *:80 のほうに RailsBaseURI に /fastladder を追加でいけるはずだったのですが、Fastladder にアクセスするとコンテキストパス(?) が無視されて / にすっとばされてしまうので、しょうがなくポートを分けました。

config.action_controller.relative_url_root の設定を config/environment.rb にしてみたりもしたのですが、だめそう。。 Fastladder がパスを固定でもっちゃってるのかもしれません。(フレームワーク使っているのにあるかなぁという疑問はありつつ)

で、これでアクセスで動くと思いきやまだまだ苦難が。(笑)

log/production.log を tail して動かしていくといいかもです。

まず、Rails のバージョンが新しいせいなのか、フレームワークのファイル名の命名規則が変わっていてコントローラでおちちゃいます。

app/controllers/application.rb をapp/controllers/application_controller.rb にリネームする方向で。

次に、rfeedfinder.rb が引数がおかしいだかで落ちますので、/usr/lib/ruby/gems/1.8/gems/rfeedfinder-0.9.13/lib/rfeedfinder.rb の、

#data = Rfeedfinder.open_doc(fulluri, options)
data = Rfeedfinder.open_doc(fulluri)

2引数になっている、open_doc を 1引数にパッチ。

それから、lib/string_utils.rb で strip_tags() が no such method とかいわれて落ちるので、

class String
  # for strip_tags
  #include ActionView::Helpers::TextHelper
  include ActionView::Helpers::SanitizeHelper
  extend ActionView::Helpers::SanitizeHelper::ClassMethods

extend の行を追加します。

たしか以上で動いたはずです。 いろいろやっていたらログとばしてしまいました。。

あ、あと RSS の URL のバリデータがきつかったのでとばしました。 なんか Google のバリデータだったような気がします。 どこだったか失念(笑) 必要ならログにでますので、コメントアウトすればいいと思います。

RoR はおろか Ruby もよくわかっていないでやっていますので、変なことしていたらすいません。

あとは、クローラを init.d で自動起動するようにすればいいと思います。 動いてしまえば順調。 いい感じですぞ。

最近、WordPress 関係でお会いする方が増えて、RSS の整理が追い付いてなかったのですが、これでうまくできそうです。 懸案ひとつ解決で、すっきりです。 🙂

プロジェクト管理アプリケーション Redmine

気になっていました、プロジェクト管理アプリケーション Redmine を入れてみました。

実は shiroica さんが以前から使われているようだったので、それを見てすぐに試してみたかったのですが Ruby & RoR が使える環境がぱっと用意できなくて断念していました。 先日、うちのローカルサーバを Atom 機に変えた際に、CentOS 5.5 になりましたので晴れて こちらで試してみました。 🙂

Redmine – Wikipedia

RedmineRuby on Railsで開発されている、Webベースのプロジェクト管理ソフトウェアである。 また、RedmineはオープンソースGPLで配布されており、その設計はTracに影響を受けている。

Redmineはプログラミング言語Ruby本体の開発を始めとして、さまざまな企業やプロジェクトでの導入が報告されている。[1]

WordPress をやられているかたは、WordPress Trac を想像してもらえれば、どんなもんか分かりやすいですね。 あちらは、Trac というのを使っています。

てなわけで、とりあえず CentOS 5.5 への Redmine インストールから。 ほぼこちらのサイトを参考にしてやらせていただきました。 ありがとうございます!。

サクっとly.com – サクッとCentOS 5.4にRedmine + Passenger環境をインストール

約1年前にサクッとCentOS 5.3にRedmine + Passenger環境をインストールを書きましたが、ちょうどインストールし直す機会があったので若干の変更をしながら書き直してみました。

解説では Ruby と RubyGems をソースから入れていますが、ぼくは rpm を使って入れてみました。 使った Redmine は 1.0.0 の RC です。

rpm -ivh http://ftp.iij.ad.jp/pub/linux/fedora/epel/5/i386/epel-release-5-3.noarch.rpm
yum install -y ruby ruby-irb ruby-libs ruby-rdoc ruby-ri
yum install -y rubygems --enablerepo=epel

あと、DB を作成する部分で rack のバージョンが異なるというエラー (1.1.0 と 1.0.1 で 1.0.1 を要求された)がでたような気がするので、1.0.1 を入れています。

sudo gem install rack --version '~> 1.0.1'

ぐらいです。 gem で時間が結構かかりましたが、あとは詳しい解説のおかげで滞りなくインストールすることができました。 🙂

さて、Redmine は Web ベースのアプリケーションですが、Redmine-Mylyn Connector というのをいれると Eclipse から GUI 接続できるようになります。 こちらにも挑戦。

SourceForge.net: Installation – redmin-mylyncon

Use the update-site (currently Eclipse 3.4 and higher only) http://redmin-mylyncon.sourceforge.net/update-site/nightly/

クライアント(Eclipse)側と、サーバ(Redmine)側の両方にプラグインを入れます。 でもって、Redmine をリスタートすれば準備完了です。

まずは Web インターフェース。 すっきりしていてなかなかいい感じです。

redmine01

チケットをカレンダーにだしてくれるのが、良いですね。

でもって、Eclipse の Mylyn 経由からの接続の図。

redmine02 

redmine04

こんな感じで Eclipse GUI から表示できます。 ただっ、

なぜか更新できない~

ということで、どーもサーバに対してチケットの新規登録・更新がききません。。 新規登録では unknow error と画面にでています。 細かいログがどこかにでているといいのですが。 ちょっと継続調査です。

ただ、読み込みについてはうまく動きますのでちゃんと Eclipse に変更通知が来ます。 🙂

redmine03

かわゆすですね。

Eclipse の GUI からも上のボタンをぽちっとおすと、インターナルブラウザで Web の画面見れますので更新はこちらからできます。 まぁコンテキスト付与とかできないので、SVN 連携とかちょっと手作業になってしまいますが、まぁまぁとりあえずタスクの通知と閲覧ができるだけでも十分です。

お仕事でもこの手のたまに使いますが、メーカ製なので製品名はあげないでおきますが、あれとかあれとかはなかなか使いづらい。。 エクセルのほうが良かったくらいにして(笑)

というわけで、次回自分たちメインでやるプロジェクトで使ってみようか、というのもあって Redmine をお試し。 ファイル管理とか Wiki も使え、使いようによってライトにもヘビーにも転べそうですので、良いと感じました。

ぼくらは、開発中は1日中 Eclipse 起動しっぱなしなので、通知が行ったり画面一覧したりできるのも便利です。 この手のは手軽に活用し始めてなんぼだと思うのです。

とりあえず、検証に家で少し動かしてみたいと思います。 🙂

Ubuntu 10.04 と デスクトップガジェット Screenlets

モニタを 16:9 の フルHD にしてみると、普通のアプリケーション利用中は横が結構余ることに気がつきます。 特にブラウザとかですね 🙂

というわけで、俄然実用性を増す(!?)デスクトップガジェット。 昔から Linux では screenlets というのを使っていますが、小ネタに再度ちょこっと紹介です。

Information – Screenlets.org

Screenlets are small owner-drawn applications (written in Python) that can be described as "the virtual representation of things lying/standing around on your desk". Sticknotes, clocks, rulers, … the possibilities are endless.

Ubuntu 10.04 ではパッケージに入っていますので、パッケージマネージャから screenlets でインストールできると思います。 実は本体は最近バージョンアップしてなくてちょっとしんなりなのですが、 スクリーンレット自体はいまも新作がいろいろな方から発表されています。

Eyecandy for your GNOME-Desktop – GNOME-Look.org

Python でかけまして、個別スクリーンレットの起動自体も Python スクリプトの実行だけでいけますので、ランアンドデバッグもしやすく自分で作成するのも比較的簡単です。 🙂

てなわけで、ぼくが今使っているやつを。

screenlets01

右上から、時計、リソースメータ、スライドショー、お天気、Impluse、フォルダビューみたいなの。 です。 スライドショーは、しょこたんブログ RSS から画像を抽出するように改造されています。。(笑)

なかでもグライコスクリーンレットの Impluse さんがおしゃれなので動画にて。。 動画だとコマ落ちしちゃってますが、本来はもっとスムーズです。

実は Ubuntu 9.10 くらいから動きがおかしくなっていまして、タイミングが遅いというか、サンプリング数が少ないという状態でがっくりしていたのですが、どうやら pulseAudio の設定でなんとかなるようです。

/etc/pulse/deamon.conf の、プライオリティや nice 値、デフォルトサンプリングレートを 48000 にしたり、default-fragments を適当にいじっていたら直るようです。(サウンドカードにもよりそう)

Impluse の C 側のソースも追っていたのですが、サンプル数の部分を合わせないとだめ、、、とかそういうことの気がしますがはっきりとは分かりませんでした。

この設定は、他のアプリでの音声発生が遅れるパターンでも有効なようなので、該当の人はいじってみるといいかもしれません。

さて、Impluse さん、夜、暗い部屋でグライコがちらちらしているのは結構おしゃれです。

是非是非。 🙂

EPSON 複合機のスキャナをネットワーク越しで使う

ある日、我らが MMRT Daily Life を拝見しておりますと、Ubuntu 10.04 にプリンタの設定をされているではないですか。 そうだ、忘れていた! ということで、ぼくも Ubuntu にプリンタ設定をやろうとして、はたと思い出す。

そうだ、複合機のスキャナをネットワーク越しに使おう!(←いんすぱいあざねくすと)。。

Ubuntu10.04とMP600 – MMRT daily life

ウチのMP600はNASにぶら下がったネットワークプリンタなのですが、さすがにスキャナーは使えません。ってか、XPでも無理! 買替えるならLinuxにも強い最近評判のブラザーがいいのかなぁ?とか妄想中です。 :)

うちの EPSON PM-A890 はプリンタ + スキャナの複合機、これが USB で CentOS に接続されています。 NAS につなぐのと一緒ですね。 🙂

普段は Windows からネットワークプリンタとして使われていますが、Masayan さんと同じようにこの接続形態にするとスキャナが PC から使えない、というわけででてくる、sane-backend のお話です。

sane01

sane に関しては昔ずいぶん苦戦して設定したもんですが(そしてなんか安定しなくて使っていなかった)、CentOS も新しくしたし意外とすんなりいくのではという淡い期待の元作業開始。

Linux でスキャナを使うのが sane という一連のパッケージで、アプリケーションがスキャナフロントエンドとバックエンドにプログラムが分かれています。 フロントエンドとバックエンドはネットワーク越しに通信できるので、これを利用してネットワークスキャナにしてあげる感じです。

てなわけで、まずはバックエンド、スキャナが USB でつながっている CentOS 側の設定。

sane-backend のインストール、EPSON の Linux ドライバのインストール。

Linuxドライバー|アヴァシス株式会社

ホーム > 製品/サービス > Linuxドライバー

ドライバの .rpm をダウンロードした上でこんな感じでした。 依存関係でひとつおこられたので、libtool-ltdl パッケージを入れています。

# yum install sane-backends
# yum install libtool-ltdl
# rpm -ivf iscan-2.24.0-4.i386.rpm 

/etc/sane.d/dll.conf に epkowa が入っていることを確認。(なければ追加です)

#umax_pp
umax1220u
v4l
#
# The following backends are not included in the sane-backends distribution
# If you want to use them, download them from their webpages and read their
# documentation 
#
# HP OfficeJet backend homepage: http://hpoj.sf.net/
# Uncomment the following line if hpoj is installed:
#hpoj
epkowa

ドライバが読まれているか sane の scanimage コマンドで確認。

$ scanimage -L
device `epkowa:usb:001:003' is a Epson (unknown model) flatbed scanner

epkowa デバイスでてきたら、ばんざい。 🙂

でもって、ネットワーク経由で sane-backend を起動するために、xinetd のインストールと、conf の設定。 saned ファイルをつくって xinted を restart です。

# yum install xinetd
# cat /etc/xinetd.d/saned 
service sane-port
{
    disable     = no
    port        = 6566
    socket_type = stream
    wait        = no
    user        = root
    server      = /usr/sbin/saned
}
# service xinetd restart

6566 ポートを iptabels でふさいでいたら開けてあげます。これでバックエンド側の準備は完了です。

次はフロントエンド。 まずは Ubuntu 10.04 からやってみます。

10.04 のデフォルトインストールに Simple Scan というアプリが入っています。 これも sane を使っていますので、sane の以下のファイルを編集してネットワークを見に行かせます。 192.168.0.100 はバックエンドをいれた CentOS の IP アドレスです。

$ cat /etc/sane.d/net.conf 
# This is the net config file.  Each line names a host to attach to.
# If you list "localhost" then your backends can be accessed either
# directly or through the net backend.  Going through the net backend
# may be necessary to access devices that need special privileges.
# localhost
192.168.0.100

これで Simple Scan を起動してスキャンボタンをおせばネットワーク越しにスキャナが動いてスキャンされるハズです。 Simple Scan はその名の通りシンプルなので、別アプリ xsane をいれると以下のように詳しい感じでスキャンできます。

sane02

次は Windows。

Windows でスキャナを使うときは Twain というのを使うことが多いと思いましたが、Twain と sane をブリッジしてくれる SaneTwain というアプリがあります。 とりあえず、これに Sane のフロントエンドが含まれていますのでこちらで。(実は Windows 7 で Twain の動かし方が分からなかった。。

SaneTwain

When I bought a new scanner some time ago, I chose one which was supported by SANE, as it seemed logical to me to connect it to my Linux server, so I could use it from my regular Windows desktop, or from my laptop.

ScanImage.exe を動かして、バックエンドの IP アドレスを指定します。

sane03

設定も細かくできますね。

sane04

よい。 🙂

さてさて、スキャナも使えるようになったしようやく次は Ubuntu からプリンタを。。

ずがーん! 64bit 版のバイナリがないっ!

64bit 問題勃発。。(笑)

実は EPSON さん Linux ドライバはソースも公開されているので、コンパイルすれば 64bit 版のドライバつくれるのですが、相次ぐ依存関係の欠如のため今日はダウン。。 また次回に。。(←弱い。。

Ubuntu Netbook Remix に XBMC をインストール

先日インストールしました Ubuntu 10.04 Netbook Remix の調子がいいので、IdeaPad 動作用にマルチメディアプレイア XBMC を動かしてみました。

Netbook Remix もフル画面インターフェースを準備していますが、XBMC も基本フル画面なので相性がいいかなという趣旨でしたが、やはりこれがなかなかよい。 16:9 液晶をもつネットブックをポータブルプレイアするのにちょうどいいのではないでしょうか。 🙂

About  XBMC

XBMC is an award-winning free and open source (GPL) software media player and entertainment hub for digital media.

XBMC は初代 XBOX をはじめいろいろなプラットフォームで動作しますが、ここでは Ubuntu Netbook Remix で動かしています。 PPA にリポジトリがありますので、インストールは簡単。

HOW-TO install XBMC for Linux on Ubuntu, a Step-by-Step Guide – XBMC

If you are using Ubuntu 9.10 or higher, you have the option of a more streamlined install. Load the terminal window and issue the following:

数行、こぴって終了です。

一応言語ファイルも日本語が用意されていますが、ファイル名とかに日本語だすには自前でフォント描いている関係で日本語のフォントの登録が必要です。

hiromasa.another o)» Blog Archive » XBMC for Linux 日本語化

てなわけで、Linux 版の日本語化の方法です。 XBMC は FreeType ライブラリで自前でフォントをレンダリングするので、フォントを内蔵しています。 Ubuntu の .deb からいれると、フォントのありかは以下です。

てなわけで、16:9 液晶で動かすとこんなかんじ。 デフォルトテーマがバージョン 9 から変更になっています。 前のも好きでしたが。 😀

xbmc01

ネットワーク越しでの動画ファイルや音楽ファイルの再生も可能です。 いろんなプロトコル対応していますが、とりあえず Windows のファイル共有(samba)ごしに。

xbmc03

動画の場合はこんな感じにサムネイルが。 音楽の時も、画像が埋め込まれていたらでてくれます。 ありこちぬるぬる動くのが気持ちいいです。  🙂

オープンソースで育っているだけあって、再生に関するいろいろ配慮が行き届いているのが特徴で、たとえば動画のサイズやその際に使われる拡大系のフィルター、またインターレース解除などの設定がリアルタイムに設定できます。

screenshot004

これがやっぱり便利ですね! またキーボードのマルチメディア系のボタン(音量とか)にも独自に対応していますので、フルスクリーンインターフェースの中できれいに操作することができます。

てなかんじで、ネットブックがあっというまにポータブル DVD プレイアになりますので、なかなか便利かもしれません。 ローデフの動画なら ATOM でもコマオチなどはせずにスムーズに動きます。

ATOM + ION + HDMI の小型 PC にいれてテレビに映したりもしてみたいのですが、それはまだ叶わぬ夢。。 😀