7月 202011
 

KDE4 のアプリケーションの中で Twitter を表示できるヤツなんかないかなぁ。と探し回っていたら Choqok というのが見つかりました。ports 的には www/choqok になります。Makefile を見てみると KDE micro-blogging client と書いてありますね。

で、実際に make して起動すると、ふむ。Twitter クライアントとして利用できるようです。なので KDE4 を利用している場合には、これを使うことにしましょうかねぇ。となるのであります。

あ。今回は Choqok の設定方法とか使い方については一切書かないです。直感的に利用できるので頑張って設定してください;-)。

で、しばらく使い続けていると、どうも日本語がしっくり来ない部分があるのであります。

Choqok_orig.png

こちらが default の日本語表示。LANG が ja だと ja.po を利用するので日本語表示してくれるようになります。

ただ、MacOSX や Windows、iPhone アプリなどで数々の Twitter クライアントを利用して、それと日本語の表示を比べてみてもしっくり来ない。なのでちょっと po ファイルをいじって見ました。ソースファイル的には choqok-1.0/po/ja/choqok.po ですかねぇ。

改修した後の表示はこんな感じ。あと、キャプチャでは見えない部分の直訳ぎみのヤツもそれらしく直しました。

Choqok_new.png

タブの部分は「タイムライン」とか書くと長くなってしまうので「Timeline」にしました。これとかは他のアプリ作っている人も苦労しているんだろうなぁ。というのが実際にやってみるとわかりますね。なので半角英数字で 「Timeline」て書いた方が短いタブで済む。みたいな。

それにしても「返信」ってのはやっぱり Twitter 的にはちょっと変で「Mentions」かなぁ。みたいな。もとの英文は以下のように “Reply” ってなっているんですが、最近の Twitter では “Mentions” だよなぁ。みたいな。

#: helperlibs/twitterapihelper/twitterapimicroblog.cpp:110
msgctxt "Timeline Name"
msgid "Reply"
msgstr "Mentions"

 
今回改修した po ファイルは以下の URL に置いたので、試してみたいと言う方いましたらちょっとお願いできませんでしょうか。

http://icmpv6.org/Prog/ja.po/choqok-20110613.po

感想やパッチなどを頂ければと思います;-)。

あるタイミングで本家のほうに送ろうかと思っております。 JKUG のほうでもその方向で話が進んでいる感じですねぇ。

7月 082011
 

なんとっ!! 自宅のネットワーク環境において、無線 LAN 環境のネットワークが二つできてしまい、SSID をネットワーク毎に切り替える必要性がでてきてしまいました。

Windows なんかの場合だと比較的容易にアクセスポイントを切り替えられるのだけど、 FreeBSD の場合は CUI がメインかなぁ。なので「なんか GUI ないかなぁ?」とか思い探しまわったら ports に net-mgmt/wifimgr というのがあったので早速インストールしてみました。

まぁ、QT ベースの KDE4 を利用している僕にとって、gtk ベースのアプリっちゅーのはどうもしっくりこないんだけどもそれはそれしょーがない。 QT ベースのものを利用したい場合には net/wpa_gui ちゅーのがあります。こっちは FreeBSD でインストールされている wpa_cui の GUI 版なんだけど、wpa_supplicant のバージョンがずいぶんと古い。でもって実際に起動してみてもたともに動作しているようにみえなかったんですね。

なので、今回は net-mgmt/wifimgr を利用しました。 ports からインストールして wifimgr と叩いて起動するだけです。コンパイルも早いですしね。非常に簡単。

起動する時に /etc/rc.conf の ifconfig_ をチェックして WPA と言う文字があった場合にのみ起動します。最初、ifconfig_wlan0=”DHCP ssid test” だけしか書いてない状態で wifimgr を起動したんだけど、動作しなくて・・。で、ソースコード見たら WPA って文字をチェックしているみたいだったので ifconfig_wlan0=”DHCP ssid test WPA” とか書いたら無事に起動しました;-)。

起動後は root のパスワードを聞かれ、そのあとで管理画面が表示されます。

スクリーンキャプチャを掲載しようと思ったのですが、表示されているのが SSID とかパスフレーズだったのでちょっとやめました。実際に自分で起動して確認してみてください;-)。

起動したあとは Windows 上でよく見る Wi-Fi マネージャとほぼ一緒です。まだあまり使い込んでないのですが、使い方も直感的で解りやすいです。

新しいアクセスポイントを利用するようにした場合、その設定情報は /etc/wpa_supplicant.conf にダイレクトに書き込まれます。そのあとで「保存と再起動」ボタンを押すと wpa_supplicant が再起動されて指定したアクセスポイントに接続されるようになります。すげーぞ。

以上が動作です。さてと。ソースコードを見てみると po ファイルがあるのでこらー日本語化は簡単だな。とか思い覗いてみると、今のところは英語とフランス語にのみ対応しているようですね。

まぁ、せっかくなので ja.po を書きました;-)。

日本語に対応した ports は以下にあるので良かったら皆さん試してみて頂けませんでしょうか。

http://icmpv6.org/Prog/FreeBSD_ports/ports-wifimgr-20110708.tgz

po ファイルの追加だけなら簡単だっんですけど、 src/Makefile にも手を加える必要があったので新しい ports にしてしまいました。

po ファイルだけは別に切りだしてあって以下の URL にあります。「日本語変だよ。」とか思われた方、改修して頂ければと思います。

http://icmpv6.org/Prog/ja.po/wifimgr-20110708.po

もし、問題がなければ作者さんにメールを送って、実際に ja.po ファイルをソースコードに取り込んでもらおうかなどと思っています。

と、言うことで、wifimgr と言う、GUI インターフェースが利用できる Wi-Fi マネージャなのでありました。ところで、ソースをちろっと眺めただけなんだけど、wlan が 0,1 と複数あったらどう言う動作するんだろうなぁ・・。

6月 292011
 

僕はメールを読んだり書いたりするときに emacs 上の mew を利用しています。で、今回たまたま「マニュアル」というのを見ていたら “対話” というのがあったんですね。

この “対話” と言うのは mew のインストール時に合わせて /usr/local/bin/cmew と言うコマンドをインストールして、こいつが sqlite3 に Massage-ID を突っ込んで、一括して mew のバーチャルモードで表示してくれる。と言う機能です。

cmew 自体は ruby で書かれているので、実行。ばーんっ!! とかやるのですが、 require ‘sqlite3’ の行がエラーになります。どうやら ruby の sqlite3 モジュールが無いみたいなんですね。

それならば ports からインストールするべか。とか思って /usr/ports/ 辺りを捜すのですが、あれあれ? ports になって無いじゃん・・。orz。 となるのでありました。

ちゅーこって、ports 作って以下の URL に置いたので使ってみたい人はご利用くださいー。って感じなのであります;-)。

ダウンロードした後、/usr/ports/databases 辺りで展開して make;make install すればおしまいです。

http://icmpv6.org/Prog/FreeBSD_ports/ports-sqlite3-ruby-20110629.tgz

インストールが完了したら cmew を実行する(mew 上で “KI” と叩く)と ~/Mail/id.db とかいうのができて “V” で一覧表示してくれるようになります。この辺りについては mew のマニュアルを見てください。

それにしても FreeBSD の ports 的には databases/ruby-sqlite は sqlite2 対応、databases/rubygem-sqlite3 っちゅーのはなんかちょっと冗長気味ででかいぞ。でもって cmew が動かないぞ。的なので、ズバっと cmew が動作する sqlite3 モジュールは存在していないんですねぇ。

中々思い白い。それにしても ruby をおいかけるなんざ dtcpc 以来だぞぉ;-)。

あ。当然ながら “ノラ ports” です。コミットしてくださる方、絶賛募集中;-)。けど、利用者、少ないんだろうなぁ。だとするとコミットしてもあまり価値無いような気がしますねぇ・・f(^^;;。

6月 162011
 

さてさて。このブログでは過去三回ほど、MRTG の IPv6 化と言うか対応について書いたことがあります。

mrtg が IPv6 で動作しない。
net-snmpd+mrtg の IPv6 化とその他もろもろ。(2)
net-snmpd+mrtg の IPv6 化とその他もろもろ。

今回は過去に検証したものについて、再度の検証を行い、実際にはどういう動作になったのかを確認してみたいと思います。

と、言うのも最近の perl は 5.14.0 になって IPv6 回りに改良が加えられました。 Socket モジュールがちょっと変更になったんですね。そして、mrtg 自体も以前からはバージョンが上がっているので IPv6 回りに改修が入ったのではないかと思い、再度の検証とするのであります。

今回利用するのは最新の ports-current です。このエントリーの一日前に csup したものを利用します。mrtg が動作するのに必要なものは以下辺りでしょうかねぇ。

    perl-5.14.0
    p5-IO-Socket-INET6-2.67
    p5-Net-SNMP-6.0.1
    p5-SNMP_Session-1.13
    p5-Socket6-0.23
    mrtg-2.17.1
    net-snmp-5.5_4

今回の検証はこれで試してみました。ports の net-mgmt/mrtg は WITH_IPV6=true で make config します。すると関連性で net/p5-IO-Socket-INET6 と net/p5-Socket6 がインストールされ、IPv6 Ready な mrtg となります。

IPv6 の機器に対応した設定ファイルである mrtg.cfg を書いて、早速 env LANG=C mrtg mrtg.cfg とかを実行します。が・・。エラーが出て動作しませんでした。

一個目は SNMP_Session.pm が以下のメッセージを出力します。長いので改行してあります。

% env LANG=C mrtg mrtg.cfg
Subroutine SNMP_Session::pack_sockaddr_in6 redefined at \
/usr/local/lib/perl5/5.14.0/Exporter.pm line 67. at\
/usr/local/lib/perl5/site_perl/5.14.0/SNMP_Session.pm line 149
Subroutine SNMPv1_Session::pack_sockaddr_in6 redefined at \
/usr/local/lib/perl5/5.14.0/Exporter.pm line 67. at\
/usr/local/lib/perl5/site_perl/5.14.0/SNMP_Session.pm line 608

 
このメッセージはエラーだと思い込んでいたのですが、ただのワーニングメッセージなので一応は mrtg は問題なく動作するようです。

しかし、インストールした mrtg コマンド、つまり /usr/local/bin/mrtg のほうが別のエラーを出力してまともに動作してくれません。エラーメッセージは以下の通り。

% env LANG=C mrtg mrtg.cfg
Undefined subroutine &main::AF_UNSPEC called at /usr/local/bin/mrtg line 2247.
Undefined subroutine &main::AF_UNSPEC called at /usr/local/bin/mrtg line 2247.

 
AF_UNSPEC が無い。と言われるんですね。このメッセージは本当にエラーなので、 mrtg はまともに動作しないので問題を取り除く必要があります。

僕は以下のように改修しました。

--- mrtg.orig   2011-06-16 15:40:42.000000000 +0900
+++ mrtg        2011-06-16 17:22:07.000000000 +0900
@@ -2244,7 +2244,7 @@
my @res;
my ($too,$port,$otheropts) = split(':', $$target{SnmpOpt}, 3);
$port = 161 unless defined $port;
-            @res = getaddrinfo($hostname, $port, AF_UNSPEC(), SOCK_DGRAM());
+            @res = getaddrinfo($hostname, $port, &Socket::AF_UNSPEC(), &Socket::SOCK_DGRAM());
if (scalar (@res) < 5) {
warn "$NOW: WARNING: Skipping host $hostname as \
it does not resolve to an IPv4 or IPv6 address\n";
return 'DEADHOST';

 
AF_UNSPEC がどこにあるのか解らないみたいなので、明示的に Socket モジュールの中のを利用するように記述しました。あと、SOCK_DGRAM も「&main には無いよ。」と言われるのでこっちも直します。しかし、他にもっと美しい改修の方法があるんでしょうなぁ。とは思いますが・・f(^^;;。

これで実行すると無事に mrtg が動作するようになりました。良かったです。

さてさて。ここまでで一応 mrtg コマンドは動作しました。実は順番が逆になっているかもしれないのですが、続いて mrtg.cfg のほうを見ていきたいと思います。

以前の「net-snmpd+mrtg の IPv6 化とその他もろもろ。(2)」のエントリーのところで Target 節のパラメータに ifIndex しか指定できない。などと書いたのですが、この点は結構重要になってきます。

ifIndex と NIC なんてのは増設すると同期が取れなくなるので ifIndex で mrtg は取得してくないですよね。今回試したのは以下の四パターン。

Target[server_bge0]: 1:public@[2001:3e0:a71::f:10]:::::2
Target[server_bge1]: \bge1:public@ipv6.running-dog.net:::::2
Target[router_gi01]: 32:public@2001:3e0:a71::f:1]:::::2
Target[router_gi02]: \GigabitEthernet0/1:public@cisco.running-dog.net:::::2

 
ふむ。以前試した時は ifDescription では mrtg で情報が取得ができず ifIndex でのみしかダメだったのですが、今回は無事に上のどのパータンでもトラフィック情報を取得することができました。インターフェースだけでなく、フツーの MIB も IPv6 アドレスでも FQDN でもどちらでもきっちり取れるようになりました。これは非常に嬉しいことですね。

あと、MRTG の公式サイト http://oss.oetiker.ch/mrtg/doc/mrtg-ipv6.en.html を見れば色々書いてありますが、FQDN で問い合せた時、当該機器の snmp が IPv6 に対応していない場合 IPv4 に fall back せずにそのまま終わってしまう件ですが、

1. EnableIPv6: yes の設定で
2. Target: 節に FQDN を書いていて
3. その機器は IPv4 にしか対応していない場合は mrtg が取れない。
4. そんな時は IPv4Only: 節を利用すると良いですよ。

と、言うことらしいです。つまりは IPv4Only: 節がある機器の場合は最初から IPv4 で mrtg が動作するみたいです。これは良かった;-)。

Target[macosx_en0]: \en0:public@mac.running-dog.net:
IPv4Only[macosx_en0]: yes

 
こんな感じで mrtg.cfg を書けば IPv4 にしか対応していない MacOSX SL の snmpd に対しても無事に mrtg が取得できます。

過去、何回かこのブログに書いた mrtg ですが、これで多分は全部大丈夫っぽいかなぁ。

いやぁ。良かった良かった。それにしても CentOS 5.6 では IPv6 対応の mrtg がまともに動作していなんだよなぁ。今回は FreeBSD で検証したんだけど、CentOS の Final でも再度検証が必要かなぁ。

と、おもーちょります。

6月 142011
 

emacs-23.3 になったら ibus.el 経由の mozc がインラインで日本語入力できなくなってしまいました。

以前のエントリで「ibus-mozc を使う。」というのを書いているので詳細についてはそっちを参考にしてください。

それにしても emacs 上でインラインで日本語入力ができないのはちょっと悲しいなぁ。と思い、ibus.el とか眺めたり、ウェブで調べてみたりしたのですが、 Vine のほうでは無事に吸収できたようですね。 FreeBSD ではそーは行かないみたい・・。

ちなみにインラインで日本語が入力できると何か嬉しいかと言うと、Ctrl や Esc キーなどがかな漢字変換システムに食われることなく emacs のキーバインドが利用できる点ですね。これは実際にやってみると結構重要です。

なので、他に何か別の emacs で利用できる日本語入力無いかなぁ?とか思い調べてみたら、mozc 自体が emacs lisp として mozc.el というのを提供しているのねぇ。

早速試してみました。が・・。
mozc 関連の FreeBSD の ports としては japanese/mozc-server 、 japanese/mozc-tool があるのですが、このどちらでも mozc.el をインストールしてくれない。きっと ports の作者さんは emacs との関連性をつけるのを嫌ったのでしょうなぁ;-P。

mozc のソースの中に unix/emacs/mozc.el があります。が、こいつは mozc_emacs_helper という、同じディレクトリにあるソースをコンパイルしたものをインストールしてあげないと動作しないんですな・・。orz。

ちゅーこって mozc-emacs とか言う ports を作りましたよー。そもそも、mozc のコンパイルは python を利用しているので非常にややこしい。試行錯誤した結果 mozc のソースツリーで以下のコマンドをたたけば mozc_emacs_helper の make ができます。

# setenv BUILD_COMMAND gmake
# ./build_mozc.py gyp
# ./build_mozc.py build -c Release --qtdir= /usr/local/lib/qt4 \
unix/emacs/emacs.gyp:mozc_emacs_helper
# cp out_linux/Release/mozc_emacs_helper /usr/local/bin/
# cp unix/emacs/mozc.el /usr/local/share/emacs/23.3/site-lisp/

 
これで mozc.el が動き出します。あ。当然 GTK_IM_MODULE 環境変数などの設定は必要ですよ。
僕の場合、emacs 以外は ibus-mozc を利用するようにして、 emacs からは ibus 経由ではなく、直接 mozc と通信できるように、あとで下のほうに出てきますが ~/.emacs に設定しました。

で、これらをやってくれる ports は以下に置きました。

http://icmpv6.org/Prog/FreeBSD_ports/ports-mozc-el-20110614.tgz

基本的には emacs に関連した部分のみを切り出したので mozc-el と言う ports にしました。ports/textproc 辺りに展開してください。 mozc_emacs_helper を make してインストールしてくれます。あと、 mozc.el と mozc.elc をインストールします。関連性で editor/emacs が必要がです。
また、当然ですが、 make deinstall にも対応しています。

で、~/.emacas への設定ですが、以下のような感じでしょうかね。

(require 'mozc)
(set-language-environment "Japanese")
(setq default-input-method "japanese-mozc")
(global-set-key (kbd "C-o") 'toggle-input-method)

 
早速入力してみると。おぉっ!! ちゃんとインライン入力ができますね。すげー。試しに emacs -nw な状態でも試してみましたがこちらでも日本語入力ができます。ibus-mozc よりもちょっと良い感じです。

 
さてとー。僕の場合、もう何回もここに書いていますが、かな入力の人なんですよ。で、その設定はあるのかなー?とか思って色々調べてみましたが、今の段階では mozc.el にはカナ入力の設定は無いみたいで、mozc.el には 「;; TODO(yuizumi): Supports Kana input.」などと書かれていました。orz。

通常、mozc の設定は mozc_tool_config で、行うのですが、ここではちゃんとかな入力になっているのですが、やはり ibus.el もそうですが emacs lisp の側でも何かしら対応しなければならないんでしょうなぁ。

 
と、言うことで、かな入力の僕にはいまいちご利益が無いのですが、ふつーにローマ字入力をする人にはベタに mozc が利用できるのと、あと tty 上の emacs でネーテェブというかインラインで日本語入力ができるというのは非常に嬉しいことではないでしょうか。

是非とも ports になってもしくは ports からインストールできるようになって頂きたいものだと、僕は思いました;-)。

5月 092011
 

いやね。最近 ports-current から csup して来て portupgrade -arR すると graphics/netpbm だけコンパイルエラーになって make が完了しなかった。

その後「今インストールしてあるやつを先に deinstall しろ。」ってメッセージが出力されるようになったのでその通りに試したら、おぉっ!! ちゃんと make が完了してインストールできるようになった。ヨカッタヨカッタ。

しかし、サーバ上で graphics/netpbm をインストールしようとしたらなんとこいつは libX11 などと言う、サーバにはまぁるで関係のないライブラリと言うか ports をインストールするようになっていた。アイタタタタ・・。orz。

ちょっと前までは netpbm-10.26.64 と、言うバージョンをインストールしていた。csup したら netpbm-10.35.80 をインストールしようとする。こいつがなんとっ!! X11 の ports をガサゴソとインストールしてくれちゃうんですな。 graphics/netpbm/Makefile を眺めても USE_XORG= x11 なんて書いてある。でもってどう見ても WITHOUT_X11=yes ってのが有効にならない・・。

サーバで X は要らんだろう。ということで irc の皆さんと話したり色々調べたりした結果どうやら /usr/local/bin/pamx というのが X のライブラリをリンクしているのを発見。ソースコード的には netpbm-10.35.80/other/pamx。 こいつは 10.26.64 のころには存在しないソースなわけね。

では pamx は何をするコマンドなのか調べてみたら、画面にイメージを表示するコマンドみたい。X-Window の壁紙設定コマンドみたいな感じかな。そんなの既にたくさんあるのでわざわざ netpbm で車輪の再開発することもなかろうに・・。などと思ったのであります。

と、言うことで、 graphics/netpbm の make 時に make WITHOUT_X11=yes と指定できる Makefile を用意したので X11 が必要無い環境で netpbm を利用する方は参考にしてみてください。

http://icmpv6.org/Prog/FreeBSD_ports/ports-netpbm-10.35.80_WITHOUT_X11_Makefile

WITHOUT_X11=yes を指定すると pamx を make、install しないので X11 のライブラリは要らなくなるようにしています。 ただ、 pkg-plist はいじってないので make deinstall 時に実際にインストールされなかった bin/pamx が無いよ。と言われますが、まぁ、その点は許してください;-)。

ちなみに僕はサーバ上で graphics/netpbm を利用していますが、ひとつは photo_gallery を利用しているため、もうひとつは、日本道路交通情報センターの交通情報の画像を取ってきて携帯電話からアクセスして表示できるように 90 度傾けたりサイズを変更したりするために利用しているのであります。

サーバ上では X11 は要らん。しかし graphics/netpbm は利用しているのであります;-)。

4月 102011
 

こないだ ports-current に kde-4.6.1 が登場したばっかりなのに約一週間で 4.6.2 にバージョンアップされてしまったのでまたまた make し直し。けども今回は Qt のバージョンアップは無かったのでほぼ一晩で完了。って感じでしょうか;-)。

さてさて。ここ最近は KDE4 のこと、しかも kdepim4 のことを色々書いているのですが、今回ももう一回 kdepim4 関連のネタになります。すみません。

今回登場するのは KAddressBook と言うアプリケーションです。簡単に言うと「アドレス管理用アプリケーション」になります。

僕はデスクトップ環境としては MacOSX も利用していて、iPhone4 も持っているのでアドレス管理は MacOSX の アドレスブックアプリ (Address Book.app) で行っています。 iPhone4 から電話するときやメールを送信する時に利用しているので、”アドレスブック” で管理している情報はメールアドレスの他に電話番号なども含まれます。

登録している情報はメールアドレスだけの人とか電話番号のみの人があるわけですけども、一個のアプリで全てを管理できるのでそれはそれで嬉しいのであります。また、アドレスブックに登録しているユーザに写真などを設定していると登録してある人からメールが届くと Mail.app では写真が表示されたり、iPhone4 に電話がかかってくるとその写真が表示されたりしてくれて中々楽しいのであります;-)。

さて、この MacOSX のアドレスブックアプリ、中に入っているデータは vCard 形式で出力することが可能です。登録されている写真の情報なども vCard 形式の PHOTO;BASE64 タグで保持してくれるので写真ファイルをたくさん持つ必要も無いんですね。

さてさて。ここので MacOSX の アドレスブックアプリ について長々と書きましたが、こいつから出力した vCard 形式を KDE の kdepim に含まれている KAddressBook でインポートできるんですな。

kaddressbook_1.jpg

KAddressBook のキャプチャはこんな感じなんですが、[ファイル] から 「インポート」を選択して vCard 形式のファイルを指定するとおぉっ!! MacOSX 上で管理している情報そのままが KDE 上で再現されるのであります。上でも書いたように vCard 形式なので PHOTO;BASE64 タグがあるため写真もばっちり表示してくれるようになります。

その他に KAddressBook は LDAP とも同期してくれます。まぁ「LDAP と同期」と言ってはアレなんですが Microsoft の Active Directory と同期してくれる。と言えば良いかな。オフィスなどでユーザ情報の管理を Active Directory で行っている場合、 KAddressBook の LDAP の設定時に Active Directory の情報を指定してあげるだけでオッケー。みたいな感じです。後は「LDAP を検索」して、検索結果をインポートすればそれでグー。みたいな。

まぁ、それはある意味 Microsoft の Active Directory がちゃんと LDAP に準拠した作りになっているのがすばらしいのでありますが;-)。

vCard ファイルがインポートできて、LDAP とも連携できてインポートできる。すげーじゃないですか;-)。

もう一個だけ機能を書きましょうかね。今度登場するのは Thunderbird です。こいつも単体でアドレス帳を持っています。でもって Active Directory (LDAP) とも連携が取れます。が、vCard には対応していないんですね。 MacOSX のアドレスブックからのデータを Thunderbird にインポートできないんですよ・・。これは悲しい・・。

kaddressbook_2.jpg

これが Thunderbird のインポートの時のキャプチャ画面です。 vCard 形式には対応していないみたいですね。

そこで KAddressBook の登場です。KAddressBook は vCard 形式でインポートした情報を Thunderbird で利用できる形式である LDIF 形式にエクスポートできるのであります。おー。パチパチパチ。

と、言うことで、LDIF 形式でエクスポートしたファイルを今度は Thunderbird のアドレス帳に読み込んであげることで全てのアドレス帳のデータは同期できるようになるのであります。

ただ、一個だけ欠点があって、vCard 形式では写真まで情報を持っていってくれるのですが LDIF 形式 への変更時に写真データがバッサリと落とされてしまいます。それがちょっと悲しいところかな。などとちょっと思いますが。

以上、アドレスデータの変換機能として KAddressBook を利用するのであります。これはこれで非常に良い感じです。

ちょっと前までは携帯の情報は携帯上で、メールの情報はメーラで管理。って感じでしたが、iPhone が手元に来てから、また MacOSX を使うようになってからはすっかりとその二つのデータは統合される方向に進んで行ってしまいました。なので、アドレス帳の管理って実は簡単にやりたいなぁ。などと、最近は思うのであります。

そしてそんなときには KAddressBook が役に立つのであります;-)。

4月 012011
 

以前のエントリーで「kdepim4 を日本語化する。」と言うのを書きました。このとき書いた内容としては

・KDE-4.6.1 が出ました。
・しかし、kdepim は 4.4.10 です。
・なので、ja-kde-l10n-4.6.1 の ports/packages では kdepim4 は日本語が表示できません。
・それならは古い packages から「ポ・ファイル」 を持ってきてインストールしてしまいましょう。

って感じだったのであります。

現在 JKUG のサーバは計画停電と、言うか、電気をなるべく使わないようにしましょう。キャンペーン展開中で電源断しているので ML も動作していません。なのでメンバとは、少数の人々と Twitter で話しただけでまだ真剣には議論されていません。

と、言うことで、僕が先行して ja-kde-l10n-4.6.1 の ports を作ってみました。この ports は ja-kde-l10n-4.4.5 の kdepim の日本語テキストを抜き出して 4.6.1 にパッチとして組み込んだものになります。

現在の kidepim は 4.4.10 なのでちょっと古いとは思うのですが、 JKUG の ML が止まっているので、kdepim4 の最新の日本語テキストが手に入らないためです。

後、ja-kde-l10n-4.4.5 は kdepim の日本語「ポ・ファイル」が含まれている、KDE からリリースされた最後のものになるのでそこから引っこ抜いています。あ。kdepim の「ポ・ファイル」だけで、全部で 55 個あります。akonadi 関係のファイルもたくさんあります;-)。

以下の URL に ports を置きました。

http://icmpv6.org/Prog/FreeBSD_ports/ports-ja-kde4-l10n-20110331.tgz

これを /usr/ports/japanense/ 辺りで展開して make install してください。 kdepim4 を含めて KDE-4.6.1 が日本語で表示できるようになります。

今回のこの ports を作成するに辺り、kdepim4 の日本語化には二段回あると思ってます。

1. KDE 側でリリースしている kde-l10n-ja-4.6.1.tar.bz2 で kdepim4 を日本語化する。
2. FreeBSD の ports 側で kdepim4 を日本語化する。

1. に付いては上でも書きましたが ML が止まっている状態なので、現在議論することができていません。なので、2. として僕が先に ports としてリリースした状態になっています。

JKUG で話をして KDE 本家に取り込んでもらうか、Linux 方面の人とかどうしているの?とか話す必要があると当然思っています。 1. で無理そうだったら、今回僕が作成した ports のパッチを kde@freebsd.org に投げる予定でいます。

kdepim4 は楽しいのよー。日本語化されると嬉しいのよー。と、言うことで、ちょっと頑張ってみます。
今すぐに日本語化したい方は上記 URL から ports をダウンロードしてインストールしてください。

3月 292011
 

kde-4.6.1 がリリースされましたなぁ。FreeBSD の ports-current を追いかけていると最新のモノが利用できるようになります。皆さん是非試してみてください。

kde-4.5.5 との違いは・・。まぁ、一言で言うとより安定版。と言う感じでしょうかf(^^;;。

後、気がついた点としては qt が 4.7.2 になりました。IRC クライアントの konversation が新しくなりました。Twitter クライアントの choqok がちょっとおしゃれになりました。日本語訳はちょっと怪しいですけどねぇ;-)。

さてさて。今回のネタは kdepim4 なのであります。 KDE4 における kdepim4 の立場は kde-4.5.0 になったら開発のペースがガタ落ちになったと聞いています。なので kde-4.5.1 がリリースされた段階で kdepim は 4.4.6 とか 4.4.7 とかそんな状態なのであります。

でもって kde-4.6.1 が FreeBSD でリリースされたときの kdepim のバージョンは 4.4.10 になっております。ふむー。もう KDE 本体とのバージョン追随はあきらめた雰囲気が感じられ、koffice みたいに独自バージョンを歩むのか?みたいにさえ思えてきます。

そして、困ったことに kdepim4 の日本語テキストがちぃともリリースされないと言う事態に陥っているのであります。 kaddressbook とか kmail とか kontact、korganizer などは日本語化されてないと全く使えない、使えたとしても利用したくない状態なのであります。困ったなぁ・・。

こちらが日本語を表示してくれない kontact のキャプチャです。

kontact_1.png

これじゃ、使う気にもならない・・。orz。

と、言うことで、今回は kdepim4 を日本語化させることにしましょう。

そもそも、最新の ports である japanese/kde4-l10n に kdepim4 周りの日本語テキスト(僕はこれを “ポ・ファイル”と言っていますが)が入ってないのがいけない。以前はちゃんと日本語を表示していたので、以前の ports/packages を持ってきてインストールすればええやん。となるのであります。

で、ウェブ上を探し回ったら以下の URL にありました。

http://ftp.riken.go.jp/pub/FreeBSD/ports/i386/packages-9-current/kde/ja-kde-l10n-4.4.5.tbz

このファイルをお取り寄せします。あ、早く取ってこないと無くなってしまうかもしれません。いつ無くなるかについては僕にはわかりません。
基本的には “ポ・ファイル” なのでアーキテクチャは特に問題ありません。僕は FreeBSD/amd64 8.2-STABLE を利用しているのですが、上記の packages を持ってきました。

以下はインストール方法です。

# cd /usr/local/src
# mkdir kde4
# cd kde4
# ftp -a http://ftp.riken.go.jp/pub/FreeBSD/ports/i386/packages-9-current/kde/ja-kde-l10n-4.4.5.tbz
# tar xvzfp ja-kde-l10n-4.4.5.tbz
# cd share/locale/ja/LC_MESSAGES
# cp kontact.mo /usr/local/kde4/share/locale/ja/LC_MESSAGES/kontact.mo
#

 
とりあえず kontact.mo フアイルだけをコピーしてみました。

その後、kontact を起動してみました。

kontact_2.png

おー。日本語が無事に表示できるようになりました。こんな感じで、自分が必要と思われるファイルをどんどんコピーしてあげれば良いだけですねぇー。

注意点としては既に /usr/local/kde4/share/locale/ja/LC_MESSAGES/ にあるものを上書きしてしまっては悲しいので cp -i とかでコピーしたほうが良いでしょうかね。kaddressbook.mo korganizer.mo kmail.mo (kmail* はいっぱいあるので確認しながらコピーしたほうが良いですね) などなど、自分が本当は利用する必要のある kdepim4 のアプリの日本語ファイルをコピーしてあげると無事に、順番に日本語を表示してくれるようになります。

ちなみに、”ポ・ファイル” が “モ・ファイル” になるので、 FreeBSD の pakcages を Linux に持って行ってインストールしても多分無事に表示できると思います。なので kubuntu や Vine を利用している人も多分そのままコピーしても大丈夫だと思います。

とわいえですよ。これってやっぱり JKUG でなんとかしないとダメだと思う。KDE の各リリースごとに kde-l10n-ja-4.6.1.tar.bz2 と言うのを作成しているんだけど、ここに kdepim の古いバージョンでも messages の中に kdepim のファイルを入れる必要が絶対にあると思う。

僕も JKUG の一員なので、この点についてはしっかりと対応して行きたいと思います。それまでの手段として、まぁ、今回の手がありますよ。と、言うことでf(^^;;。

2月 222011
 

さてさて。前々回のエントリで 「DAViCal サーバを FreeBSD で。」って言うのを書いたのですが、色々やっていたら、FreeBSD では動作しない。と言うことが判明しました。

どういう状況の時に動作しないのか。と言えば、ports から www/apache22 をインストールして、 httpd-2.2.17 をインストールしたときです。この時、WebDAV を利用するので WITH_DAV=true と WITH_DAV_FS=true を指定するわけです。

後は、httpd-vhosts.conf や httpd-dav.conf に設定を施してさてどうだっ!! ってやるんですが、これがまた動作しない。アカウント作成などは無事にできるので php5 と postgresql の連携はうまく行っているみたい。クライアントからのアクセスが全くダメな状態なのでありました・・。orz。

今回はまったのは全部で二つ。順番に見ていくことにしましょう。あ。ここまでの到達では、postgresql-server-8.4.7 が無事に動作し、 php5 が無事に動作し、 davical でアカウントが作成されていることが必須です。

つまりは Lightning で接続したけど、全くつながらない。って状態の時のトラブルシューティングです。

最初のはまり道。405 が返る。
telnet localhost 80 とかして HTTP で davical の caldav.php を手で指定して実行するんだけど、エラー 405 のエラーが返ってくる状態。httpd が出力するアクセスログには以下のように残っている場合ではね。

"PROPFIND /caldav.php/takachan/home/ HTTP/1.1" 405 400
"PUT /caldav.php/takachan/home/c848-7bf5-4627-8b9d-d35b.ics HTTP/1.1" 405 43

 
この場合、davical をインストールしたディレクトリの DAV On が有効になっていません。その場合は httpd-dav.conf など WebDAV の設定を見直してみましょう。

ちなみに telnet コマンドでも WebDAV がオンになっているか確認できます。

$ telnet localhost 80
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
OPTIONS /index.html HTTP/1.1
Host: localhost
HTTP/1.1 200 OK Date: Tue, 22 Feb 2011 12:44:39 GMT Server: Apache/1.3.42 (Unix) PHP/5.3.5 with Suhosin-Patch DAV/1.0.3 Content-Length: 0 Allow: GET, HEAD, OPTIONS, TRACE
Connection closed by foreign host.

 
“Allow: GET, HEAD, OPTIONS, TRACE” で WebDAV が利用できるメソッドが表示されます。これが表示されない場合は DAV On が効いていません。 httpd.conf の設定を見直しましょう。

ちなみに上記の環境では FreeBSD の ports から www/apache13 、 www/mod_dav 、 lang/php5 をインストールしています。

この環境において DAViCal がサクっと動作した状態です。ここまで来るのが大変だった。

更に続くはまり道。400 が返る。
HTTP のエラーコード 400 は Bad Request。全くもってどうしようも無い状態。最初は www/apache22 でやっていたんだけど、エラーログに以下のように出力される。

Could not fetch resource information.  [400, #0]
(2)No such file or directory: The URL contains extraneous path components.
The resource could not be identified.  [400, #0]

 
二行目は長いので折り返しています。DAViCal の設定で $c->dbg[‘ALL’] = true; ってのがあるのですが、こいつを有効にすると debug メッセージを apache のログに出力してくれるのですが、上記のメッセージが出力する場合、デバッグログさえ出力してくれない。なので明らかに mod_dav のほうで出力しているメッセージ・・。

後、telnet localhost 80 で確認したところ、

PROPFIND /caldav.php HTTP/1.1

 
こっちは動作する(つまり 200 が返る)んだけど、

PROPFIND /caldav.php/takachan/home/ HTTP/1.1

 
こっちは動作しない(つまり 400 が返る)。なんか、明らかに mod_dav の問題ぽいのであります。

ついつい www/apache22 のソースを見たら、 modules/dav/main/mod_dav.c の 729 行目辺りでこのメッセージが出ているのだけど、なんか、httpd.conf の設定ファイルの読み込みがおかしいんでないかい?って感じになったのでありました。

もう、apache22 に添付されている mod_dav のコードがおかしいと思えてきたのでここで、apache22 は捨てて apache13+mod_dav にしてみたのでありました。

そしたらあーたっ!! サクっと動作してしまったではあーりませんかっ!! あいや・・。もっと早くから apache13 でトライするんだったよ・・。

 
と、言うことで http アクセスのエラーコード 405->400 をなんとか乗り越えて無事に DAViCal は動作したのでありました。

原因はどこにあるんかなぁ。davical-0.9.9.4 かなぁ? とわ言いつつ、apache から DAViCal の php にまで渡ってないんだよねぇ・・。

するとただ単に httpd-dav.conf の設定が悪いだけか? けど、 DAV On にするだけだし、そもそも PROPFIND /caldav.php の時は無事に動作して PROPFIND /caldav.php/ だと 400 になるんだから、やっぱり apache22 付属の mod_dav を疑ったほうが良いのかなぁ・・。

ま。そんな感じの二つのはまり道だったのでありました。

今はなんとか無事に動作しているのであります;-)。 Thunderbird+Lightning と iPhone4 から動作確認は取れています;-)。