4月 022014
 

以前のエントリで FreeBSD で利用する ibus-1.5.5。 というのを書きました。
要は ibus が 1.4.2 から 1.5.5 になったら随分と使い勝手が悪くなったねぇ。と、いうことで、どうしたらちゃんと利用できるようになるか? ってネタなんですけどもね。

そのエントリには僕自身がコメントしたのですが、この際 fcitx-mozc でも試してみるかねぇ。って書いていて、早速試してみました。が、実際には以下の通りの動作で、実質的にしゅーりょー。な状態だったのであります。

 
fcitx をインストールして japanese/fcitx-mozc のコンパイルを通しても正常に動作しないのですが、考えられる原因としては mozc-1.11.1502.102 に対応する japansese/fcitx-mozc のパッチは多分 fcitx-4.2.8 用で、 FreeBSD の ports は fcitx-4.2.6 となっており chinese/fcitx 本体と japanese/fcitx-mozc のバージョンに差異が発生しているため、上手に通信が行なえように思われます。

 
試してみるとまさしくその通りで、そのエントリのコメントを読んでくださった Hiroto Kagotani さん が chinese/fcitx を最新のハージョンである fcitx-4.2.8.3 にしてくださいました。

それならば fcitx-mozc は動くべー。とか思い、試してみました。

結論から書くと fcitx-mozc は fcitx を最新版にすることにより、サクっと動作しました;-)。以下その顛末を書いてみたいと思います。

 
1. fcitx-4.2.8.3 のインストール
ports の chinese/fcitx は古いバージョンなので Hiroto Kagotani さん が作成してくださった最新版の ports を以下から拾ってきます。

https://github.com/HirotoKagotani/freebsd-fcitx/tree/master/chinese/fcitx

git clone で取ってくるのが良いでしょうかねぇ。 git についてはここには書きませんが、僕は mew のソースツリーを持ってきているので git はそこそこ使っています;-)。それとほぼ同じやり方で一式を持ってきました。

あとは ports の chinese/fcitx を置き換えて make install しておしまいです。

ちなみに Hiroto Kagotani さん は、作成した ports はメンテナの方に連絡するそうなのでもうしばらくすると fcitx-4.2.8.3 が ports-current に降ってくるのではないでしょうか。

 
2. japanese/fcitx-mozc/Makefile の改修
これは簡単。 IGNORE= の行をコメントアウトします。

 
3. japanese/mozc-server を更新
japanese/fcitx-mozc を make すると japanese/mozc-server の Makefile の中が走るのでその部分を一部改修します。
既に改修した ports を以下の URL に置いたのでご利用ください;-)。

http://icmpv6.org/Prog/FreeBSD_ports/ports-mozc-server_add_fcitx-4.2.8.3_fcitx-mozc-20140402.tgz

既存の ports からの変更点は fcitx_mozc で BUILD するときに持ってくるパッチ先とパッチを変更しています。
ダウンロードするパッチは fcitx-4.2.8.3 に対応するパッチです。パッチ本体は以下の URL からダウンロード可能です。

http://icmpv6.org/Prog/FreeBSD_ports/fcitx-mozc-1.11.1502.102.1_fcitx-4.2.8.3.patch

fcitx-mozc は mozc のバージョンが 1.11.1502.102 でも fcitx のほうは最新版である 4.2.8.3 を利用する必要があります。 mozc-1.11.1502.102 に対応する 4.2.6 用のパッチがない (mozc-1.11.1502.102 に対応する 4.2.8.3 のパッチはある) ので japanese/fcitx-mozc は IGNORE= 状態になるんですね。

なので今回の場合は japanese/fcitx-mozc が悪いワケではなく、中々バージョンが上がらなかった chinese/fcitx のおかげで IGNORE= になった。と、考えるべきでしょう。

さてさて。ダウンロードした ports で japanese/fcitx-mozc を make するとサクっとインストールしてくれると思います;-)。

あとは、表示される pkg-message の内容に設定して、一旦ログアウトしてからログインし直します;-)。

 
4. KDE4 利用時の GUI について
インストールが無事に完了して、ログインしたら動作確認です。僕の場合は KDE4 を利用しているのですが、fcitx を起動するとパネルに何やら表示されます。 mozc をオンにするにはデフォルトでは 全角/半角 キーを押します。すると日本語入力が可能になります。
GNOME は利用してないのでわかりません。ごめんなさい。

右クリックでメニューが表示されますが [設定] をクリックするとエディタが立ち上がります。あたたた。
KDE4 で GUI な設定ウィンドを表示するには kcm-fcitx というのが必要なようです。 FreeBSD の ports にはなってないようなので、僕が ports を作り、以下の URL に置きました。必要な方はダウンロードしてください。

http://icmpv6.org/Prog/FreeBSD_ports/ports-kcm-fcitx-20140402.tgz

どこに展開して良いかわかりませんが、 textproc/ 辺りに展開して make && make install してください。 LIB_DEPENDS= などかぁなりいい加減であやすぃーです。本当は KDE とか Qt 辺りも書かなければダメなのだろうと思うのですが、僕の環境では既にインストールされているので・・f(^^;;。

正しく書きなおして、コミットしてくれる方、絶賛募集中です;-)。

で、インストールした kcm-fcitx は起動するとこんな感じで GUI で fcitx を設定できるようになります。

kcm-fcitx

色々設定変更してみてください。

あ。ちなみにエディタで設定ファイルを編集する場合には $HOME/.config/fcitx/config というファイルになります。

 
5. 利用してみた感想
では、実際に fcitx-mozc を利用してみた感想ですが、まず一番驚くのがカーソルに日本語を随時表示してくれない。と、いう点でしょうか。以前ちょっとだけ Windows 上で利用したことがある「Baidu IME」みたいな雰囲気で、日本語入力専用窓が出てそこでベコベコ打って、確定したらカーソルに反映される。と、いう感じです。
これが好きか嫌いかについては意見の別れるところではありますね。

あと、mozc のサジェストの「意味の機能」(だっけか?)が利用できないです。”語” 対する説明文が表示されません。

スクリーンセーバにパスワードロックがかかっている場合に日本語入力状態になってしまいます。

状態パネルを表示すると怪しいところに出たりとか;-)。

文字入力時の UI 部分に違和感が多少あるのみで、文字の入力自体は特に問題なく一応は行える。と、いう感じでしょうかね。

 
と、いうことで(僕が初めて利用する)新しい日本語入力である fcitx と、そこからエンジンとして利用する fcitx-mozc について、今回は書いてみました。

ports の chinese/fcitx が最新版にアップデートされると、多分追随して japanese/fcitx-mozc と japanese/mozc-server も対応していくと思われます。そー考えるとこの記事の内容というのは先が短い記事である。と、いうことですねぇ・・f(^^;;。

まぁ、それはちょっと置いといたとして、人よりもちょっと早く新しいかな漢字入力の動作確認ができるぜい。って感じですね;-)。

このエントリを読んで今すぐに試してみたい。と、いう人はいるんかなぁ? f(^^;;。

4月 012014
 

いやね。もう随分と前から KDE4 で VirtualBox を起動して、仮想マシンを作成するときに、インストール用の ISO イメージがマウントできない。と、いう状態が続いているんですね。以下のようなダイアログが表示されるんです。

klauncher_dbus_err

原因としては VirtualBox を起動した(もしくは VirtualBox から起動された(原因は特定していない状態f(^^;;)) KLauncher が D-Bus と接続できないぜぃ。って話らしいんですね。

色々調べたのですが ubuntu 方面では dbus のバージョンを 1.4.8 辺りに落とせば良い。ってのがあったのですが、今の FreeBSD では dbus-1.6.18 になっているのでそれはちょっと考えられなしいし、その話題が出ていたのは dbus が 1.5 系のころで、さすがに 1.6 系になっても dbus がおかしい。なんてのはちょっと考えられない。

と、いうことでその案はしゅーりょー。まぁ、実際にバージョンを落として試してみたことはあるのですがダメだったですね。

 
そもそも上記のエラーが出るのは仮想マシンに ISO イメージをマウントするときだけです。ただ、 ISO イメージがマウントできないと OS のインスールができないわけでして・・。
OS のインストールが完了した仮想マシンがある場合には一般ユーザ権限でも VirtualBox はガシガシ動作してくれるのであります。

と、いうことで今回は “Could not start process Cannot talk to klauncher: Not connected to D-Bus server.” と、いうメッセージが出た時の回避策を書いてみたいと思います。そのためにはまず前提条件からですね。

 
1. 前提条件
o. KDE4 を利用していて VirtualBox を起動しようとする
o. 今回のバージョンは kde-4.12.3 と virtualbox-ose- 4.3.10 にしましょう
o. 普段は一般権限のユーザで VirtualBox を起動する

この状態で VirtualBox から ISO イメージをマウントすると一番上のエラーが出るんですね。あたたた。

 
2. root で起動
一般ユーザ権限で上記のエラーが出るので root 権限で起動するとどうなるのー?と、いうことで root で起動する準備を整えます。

まず、一般ユーザ権限のディレクトリを root のホームディレクトリに symlink します。

$ sudo -s
# cd /root/
# ln -s /home/takachan/.VirtualBox
#

 

次に root で ssh ログインできるように /etc/ssh/sshd_config を変更します。

#PermitRootLogin no
PermitRootLogin yes

 

パスフレーズでログインする場合にはこの設定は必要ありません。また、セキュリティがことごとく低下するので自己責任でお願いします。
あとは /etc/rc.d/sshd restart して準備は完了です。

続いて、ローカルホストの root に対して一般ユーザから ssh して VirtualBox を起動します。

$ ssh -CY -2 root@localhost
Password for fqdn:
# setenv LC_TIME C
# setenv LANG ja_JP.UTF-8
# setenv LC_CTYPE ja_JP.UTF-8
# VirtualBox
        :

 
VirtualBox を起動したときに言語が英語になっている場合には LANG で自分で利用している文字コードを setenv してあげます。
VirtualBox を起動したら仮想マシンの設定を開いてすかさず ISO イメージをマウントします。あぁら不思議。と、いうかさすがは root 権限ですね。特に問題もなくスルっと ISO イメージがマウントできました。

ISO イメージがマウントできたら root 権限での VirtualBox はサクっと終了して ssh も抜けてしまって大丈夫。 /etc/ssh/sshd_config の設定をもとに戻して完了。ってところでしょうか。

 
3. 一般ユーザの環境をもとに戻す
/root/ に symlink した $HOME/.VirtualBox/ は root が情報を書き込んでいるので一般ユーザでただちに VirtualBox を起動すると無事に動作してくれません。環境を整える必要があります。

$ sudo -s
# cd /home/takachan
# chown -R takachan:user .VirtualBox/
# chown -R takachan:user /data/VMs/
#

 

$HOME/.VirtualBox/ の他にも仮想マシンのディスクイメージが入っているディレクトリのオーナ・グループも変更する必要があります。僕の場合は /data/VMs/ に仮想マシンのディスクがありますのでそのオーナ・グループも変更します。

これで準備は完了。あとは一般ユーザで VirtualBox を起動して ISO イメージからブートして OS をインストールすれば良いでしょう。

 
それにしてもどーして root でしか dbus にアクセスできないのでしょうか? dbus-daemon は通常 messagebus ユーザ messagebus グループで動作しているようです。と、いうことは /etc/group の messagebus に一般ユーザ名もしくは VirtualBox のユーザである vboxusers を書いたら良いんじゃね? とか思えるのですが、それを試してもダメだったのでありました。あたた。

と、いうことで現状、僕の知る限りでは ISO のマウントのみ root 権限で実行するしか手はないのかなぁ・・。などと思った次第であります。

ちゃんとした解決法をご存知の方いましたら教えて頂ければと思います。

3月 232014
 

docomo の SP-mode を解約しました。 Xi 契約が残っていても SP-mode を解約するとインターネット接続ができないのねぇ。 Xi はあくまで通信のための契約で、それとは別に ISP の契約、例えば SP-mode だとか mopera U の契約がないと Xi が全くもって役に立たない。と、いうことだねぇ。

さてさて。 docomo の SP-mode も mopera U もなくなったので新たに MVNO を契約したのですが、今回僕が契約したのは ASAHI ネット の「ASAHIネット LTE」の 1 ギガプラン

もともと自宅のインターネットは ASAHI ネットだったんだけど、そこの MVNO である LTE 接続が今回安くなったのと、既に ASAHI ネットの会員だと 900yen が 850yen になるということなので申し込んでみました。

申し込んでから SIM が届くまで大体 10 日前後でしょうかねぇ。こんな感じの SIM カードが届きました。

Asahi-Net_LTE_1

この MVNO の SIM は一ヶ月で 1GByte のデータ転送が行える。とか言ってますが、正確には三日で 100MByte 利用できるらしいので実質的には 930MByte ってことだよなぁ。とか、まぁ、そんなことはどーでも良いか;-)。

早速、 MEDIAS LTE N-04D に入れてみましたがサクっと動作しました。 まぁ、 MEDIAS LTE N-04D には SIM を入れることは想定してないし;-)。

と、いうことで、僕は他にも SIM フリーな端末を持っているのでそちらでも確認してみました。 Nokia の Lumia 620 です。確認するのは羽田もしくは成田の出国ゲートを出た辺りでするのが良いでしょうなぁ;-)。

最初 SIM を入れて APN とか設定したのですが、全く利用できなかった。あれぇ? ASAHI ネットの MVNO は Windows Phone8 に対応してないんかい? とか思い、他の設定も色々見直してみました。

そしたら、あーた。

Asahi-Net_LTE_2

「設定」アプリの「携帯ネットワーク」メニューの [データ接続] の項目が “オフ” になっていました。これをオンにしたら無事に接続できました。ふぅ。皆さんも接続できないときにはあちこちの設定を色々確認してみましょう。それにしても、僕はどーしてこのメニューを “オフ” に、いつしたんでしょf(^^;;。

でもって、APN のほうは以前に mopera U の設定をしたことがあるので、それと一緒ですが「設定」アプリの「アクセスポイント」に新規に項目を作って編集画面から指定された値を入れてあげれば OK です。

Asahi-Net_LTE_3

データ通信専用の SIM なのでアンテナのところはバッテンが出ていますが一応は通信ができます。 Lumia 620 は LTE には対応してなくて 3G のみの対応なので「一ヶ月で 1GByte の転送量」とは言ってもそんなには利用しないのかなぁ。と、思っています。そして、自宅では Wi-Fi をメインで利用する感じですかね。

docomo の MVNO なので電波の質的なモノは今までと変わらないですね。自宅では LTE がほんと入らない。まぁ、MEDIAS LTE N-04D の場合は 2.1GHz 帯の LTE しか利用できないので電波の質的問題というよりは端末側の問題のような気がします (あぁ。 docomo の全ての周波数が利用できる Sony の Xperia Z1 を一回使ってみたいものだ)。

Nokia Lumia 620 は 2.1GHz 帯の 3G のみなのでこれまた docomo の電波が拾えにくいんだけど、それはそれでしょーがないかな。

ちうちょっと色々と遊んでみたいと思います;-)。

加筆ですが、 SIM カードには電話番号が設定されていました。試しにその電話番号に電話したら「こちらは NTT docomo です。データ通信専用のカードです。」とアナウンスがありました。

3月 222014
 

自宅で気軽に音楽が聴ける環境が欲しかった、ステレオを利用してじっくりと聴くというのではなく、生活の中に音楽が流れている環境とでも言ったら良いでしょうかね。

なので Bluetooth スピーカーを買ってみました。インターネットのお店でも色々安く売っているようですが、音をじっくりと聴いてから判断したかったのでひとまず秋葉原を散策したのであります。

今回買ったのはこんな感じ。

BT_SPEAKER_1

スペックとしては以下のような感じ。 1,980yenでした。

内蔵電源リチウムバッテリー(USB 充電)
Bluetooth バージョン 2.1+EDR
最大出力 3W
入力端子 3.5mm ステレオピンジャック x1 miniUSB x1
マイク内蔵 (ボリュームコントロール)

重量は 250g あるのでけっこうどっしりとしています。高さ 5cm、幅 6cm の小型ですね。スピーカー自体にボリューム調整の機能がないのでスマートフォン側で調整する必要があります。

スマートフォンと同期するとスピーカーに向かってお話ができるようです。まぁ、僕は使う気はありませんけど;-)。

実は「スマホでUSEN」というアプリが iOS と Android 用にあるのですが、こいつを家の中でダラダラと流すときに利用しようと思ったので、ステレオの二個のスピーカーでなくとも、一個でも良いかなぁ。と、いう感じです。

 
さてさて。実際に iPhpne4 と iPhone5 で Bluetooth 経由で接続してみましたが、ふむ。無事に動作しました。音が流れて出しました。

続いて MEDIAS LTE N-04D で試してみましたが・・。あたたたた。orz。 Android では利用できない。Android というか MEDIAS LTE N-04D の性能なのか、モビルスーツの性能なのか・・。orz。 こんな感じでエラーが出ます。

BT_SPEAKER_2

MEDIAS LTE N-04D にはもう SIM カード入ってないので、こーいうのにしか利用できないのに、それにしても本当に役に立たない機体だよ。君は・・。

 
最後に音のお話を少々。
そこはかとなく重いので低音の音も出てくれます。小さいスピーカーにありがちなキンキン感がないので普段聴いている分には問題はありません。

机の上にストンと置いた時の音と、下に座布団とかスピーカーが入っていた箱の上に置いた時の音が変わりますね。スピーカーの下に何か敷いた方がより重厚な音になるような気がします。

とまぁ、値段の割には満足なスピーカーだったですね。たた、 MEDIAS LTE N-04D で接続できないのはゆゆしき事態ではありますがX-(。

3月 182014
 

ports current を追いかけている人なら解ると思いますが、ibus という日本語入力なアプリケーションが 1.4.2 から 1.5.5 になりました。このバージョンアップにより日本語の入力がかぁなり複雑になったようですね。

ibus 1.4.2 と 1.5.5 の簡単な違いについて書いてみると、

o. 日本語入力状態は絶えずオン状態
o. キーボードを変更することにより全角と半角を切り分ける

と、なったようです。ある意味「日本語入力用キーボード」と「英字専用キーボード」の二つを使い分ける。と、いう状態になったようですね。おかげで ibus-setup の設定画面からは IME のオン/オフ のメニューが消えております。

さてさて。僕は今回 ibus-1.5.5 のインストールからつまずいたのでそこから書いて行きたいと思います。色々試行錯誤を繰り返し、今は日本語入力ができるようになっております。ふぅ。

あ、ちなみに僕の環境は FreeBSD/amd64 9.2-RELEASE-p3 で X での日本語入力の環境は ibus+ibus-mozc で KDE4 を利用しております。当然、オンプレミスな環境です;-)。

emacs では mozc+mozc.el を利用していますが、この場合の mozc は ibus 経由ではありません。しかし、それとは別に ibus+ibus.el+mozc というパターンもあり、その場合には ibus-el-0.3.2 が ibus-1.5 系に対応していないので動作しません。と、いうことで ibus-1.5 系にした人はサクっと ibus-el-0.3.2 を pkg delete しても問題はまるでありません。

と、いうことで、まずは ibus-1.5.5 のインストールから見ていくことにしましょう。

 
1). ibus-1.5.5 のインストール
FreeBSD だと ports では textproc/ibus/ になるので make && make install と打てばインストールが完了すると思いますが make config のオプションで悩みます。 ibus-1.5.5 をインストールすると GTK2 と GTK3 の両方が必要になる(インストールされる)のは非常に納得行かないですね。しかし、悔しいですが、以下のキャプチャの通り DOC と GCONF もしくは DCONF 以外は全てチェックを付けたほうが良いと思われます。

ibus_20140318_1

GINTRO (銀トロ? なに? それ?) をオフにすると IBus.py がインストールされずに ibus-setup が起動しない状態になる(動かないなら最初から ibus-setup インストールするのやめろよーX-(し GTK3 要らんもんねー。などと思っていると、やはり ibus-setup が起動しなかったりと、そこはかとなくとんでもない ibus がインストールされるので、ちゃんとフルオプションを付けてあげましょう。

と、いうことで ibus のインストールは完了しました。

ibus がインストールされたのですが、一応、ibus-mozc も再度コンパイルしてあげましょう。念のために ibus-1.5.5 インストール後に japanese/ibus-mozc/ で make && make deinstall && make reinstall して、一応は準備完了。と、いうことで。

 
2). ibus の起動と設定
ibus の起動は ibus をインストールしたときに pkg-message が表示されるのでその内容で設定しましょう。
まぁ、素早く試したい場合には ibus-daemon_restart とか ibus-daemon_start コマンドを実行します。無事に起動したら ibus-setup コマンドを叩いて GUI で設定します。

「キーボードショートカット」の [次のインプットメソッド] メニューでインプットメソッドの切り替えを設定します。一番上に書いたように簡単に「キーボード切り替えのためのショートカットキー。」と、いう認識でいるのが良いかと思われます。

ibus_20140318_2

ちなみに default では “Super+Space” になっていると思いますが “Super” キーというのは Win キー であったり Mac の command キー に相当するらしいです。なので、 default では「Win+Space キーでキーボード切り替え。」ってことですね。

 
さてさて。他のタブを見て行きましょう。
[インプットメソッド] のタブでは「インプットメソッドの選択」で「日本語」のキーボードアイコンと mozc を選択します。二つの項目が登録されている状態ですね。

ibus_20140318_5

[詳細] タブでは「キーボードレイアウト」で [システムキーボードレイアウトを利用する] にチェックしておいたほうが良いかもしれないです。僕の場合は ibus-setup を起動した途端に 101 キーボード列になってしまいました。普段は 106 キーボード列を利用しているのに・・。

と、いうことで ibus の設定は完了。あとは日本語をベコベコ打てば良いですね。

 
3). mozc 側で設定
が・・。上記の「キーボードショートカット」で設定したもの(僕の場合は “Shift+Space” にしました)をベコベコ押しても一向に日本語が打てる気配はありません。画面中央に切り替え画面が表示されるのですが、日本語が打てません。あいや・・。orz

しょーがねぇなぁ。となるのですが、今度は mozc の設定を行います。 mozc_tool_config コマンドを叩いて mozc の設定画面を表示させます。 [一般] タブの下のほうに「キー設定」というのがありますが、そこにある [編集] ボタンを押します。表示されたウィンドの真ん中の列が「入力キー」で、そこが “shift space” というところに、コマンドを「IME の有効化」を選択し保存します。

あとは mozc_server_restart と ibus-daemon_restart を実行して、そのあとにキーボードが変わってくれるかを確認します。

 
だいたいこんな感じで ibus+mozc の場合には日本語が打てるようになるでしょうかねぇ。mozc ではない、他の IME を利用している方、申し訳ありませんが設定方法は解らないので自力で頑張ってください;-)。

しばらく使ってみた感想ですが、

o. 新しいウインドを開いた時に日本語キーボードが選択されている
o. スクリーンセーバのパスワード入力も日本語になる
o. 文字を打ち始めると最初の文字が化ける(日本語にならない場合がある)
o. 画面に ibus の設定とかがチロッと出る場合がある(これは何?)

などでしょうかねぇ。けっこう痛いですかね・・。

 
けどもまぁ、なんとか ibus-1.5.5 に移行できたのでヨシとしておきましょう。もう少し使い込んで色々な設定を出していきたいとは思っていますが。

もしくは fcitx に移行していくかもー。

2月 242014
 

本題に入る前、一点。
FreeBSD の ports の KDE4 が kde-4.12.2 になりましたなぁ。今までは /usr/local/kde4/ にインストールされていたのですが、このバージョンからは /usr/local/ にインストールされるようになりました。僕の環境では 130 個弱の ports の再インストールが発生しまた。けど、これでようやっと、独自ディレクトリから開放されるぞぉー。って感じです。

と、いうことで本題。

KDE4 をインストールすると default のブラウザに konqueror がインストールされます。それとは別に他のブラウザをインストール、例えば rekonq をインストールするとします。

konqueror も rekonq もユーザエージェントを偽装できる機能を持っています。例えば FreeBSD のこれらのブラウザでアクセスすると「あんたのブラウザでは全部の機能が動作しない。」とか「最新のブラウザではないので利用できない。」などと蹴られる場合があり、以降の表示を止めてしまうウェブサイトがあったりします。

まぁ、仮に表示されたとしても確かに正しく動作しない場合なんかもあったりするんですけどねf(^^;;。

https://profile.microsoft.com なんかは UserAgent を IE11 に偽装したとしても正しく表示できなかったりしますが、それは konqueror や rekonq などのブラウザが対応していないので正常動作しない。と、いうことですね。

 
さてさて。それにしもブラウザでユーザエージェントが選べるのに表示される情報がどれもこれも古いバージョンで困ってしまいます。

konqueror_ua_1

これを最新のバージョンに変更できないのかなぁ? とか思いソースコードを眺めるのですが、ふむ。ブラウザは KDE コンポーネントを見ているようで、ブラウザのソースコードには無いようです。

KDE 的には konqueror も rekonq はコテコテの KDE・Qt アプリなので、共通な機能については共通コンポーネントを使うようになっており、一個のパーツを色々なアプリで利用するってが仕様のようです。例えば Proxy とか キャッシュなども KDE4 の複数のアプリで共有するコンポーネントです。

ブラウザの UserAgent 偽装機能も一緒で konqueror も rekonq もユーザエージェントの設定はコンポーネントが一緒です。
では、その場合ソースコードがどこにあるのか? ですが、見つけました。 FreeBSD の ports 的には以下になります。

x11/kde4-baseapps/work/kde-baseapps-4.10.5/konqueror/settings/kio/uasproviders/

ここに *.desktop というファイルがたくさんあり、ブラウザのバージョンごとの情報を持っているフアイルが複数あります。
これらはインストールすると以下のディレクトリにインストールされることが解りました。

/usr/local/share/kde4/services/useragentstrings/

ここに最新のブラウザに対応した .desktop ファイルを置いてあげると次回起動時にはそのファイルを読み込んで最新のバージョンのユーザエージェントが利用できるようになります。

せっかくですので firefox-24.0 と MSIE-11.0 の .desktop ファイルを作成したので、利用してみたいと思う方は以下の URL から持って行ってください。

http://icmpv6.org/Prog/KDE/firefox240oncurrent.desktop
http://icmpv6.org/Prog/KDE/ie110onwinnt61.desktop

これで konqueror や rekonq では最新の他のブラウザとして動作することができるようになりました。パチパチパチ。ただ、ユーザエージェントの情報が変わっただけで、上にも書いている通り、正しく表示・機能しないウェブサイトがたくさんあることに違いが無いのでご注意ください;-)。

 
さてさて。ここからは付録に近いのですが、 Qt 系ブラウザとして arora というブラウザがあります。 ports 的には www/arora になるんですけども。こいつのユーザエージェントが更新されてないのでソースコードも眺めてみました。すると arora の場合は独自にソースコード中に書いているようですね。以下の xml なファイルで定義しているようです。

arora-0.11.0/src/useragent/useragents.xml

もし、 arora を利用している人でユーザエージェントを最新のブラウザに偽装したい場合には上記のファイルを編集してコンパイルし直せば良いと思われます。

arora は Qt を利用しているけど、 KDE にベッタリ。ってことは無い独自路線のウェブブラウザ。ってことなんですねぇ。

今回はちろっと KDE4 の構成的な説明と、ブラウザのユーザエージェント偽装のためのネタでした。

2月 062014
 

僕はデスクトップに KDE4 を利用しているのですが、 JKUG の日本語化チームとは別に自分で利用する KDE アプリで、日本語化されていないものをコツコツと個別に翻訳しています。

例えば rekonq という konqueror を再定義し直した KDE・Qt ライクなブラウザがあるのですが、こいつはソースに日本語 po ファイルが付いてこないのでメニューなどが英語で表示されます。

まぁ、 konqueror を再定義しただけのことはあって konqueror よりは rekonq のほうが使いやすいかなぁ。とは思う点が多々あるので僕は利用しているんですけども、いかんせん日本語化されてないので、しょーがねぇなぁ。自分で po ファイル書くかぁ。などと思いコツコツと日本語化しているのであります。

僕が今まで日本語化した po ファイルは以下の URL に置いてあるので良かったら持って行ってください。

http://icmpv6.org/Prog/ja.po/

rekonq-2.4.2 に対応した po ファイルの最新版は rekonq-2.4.2-20140205_1.po になります。

 
さてさて。翻訳していて一番大変なのはバージョンアップした時ですね。
新規に po ファイルの翻訳をするのであれば、とある言語の po フアイルを引っ張ってきて Language: とか を ja に変更して、翻訳を開始していけば良いのですが、バージョンアップが発生したときはどうするの?とかになるわけです。

以下、作業手順。あ。僕が個別にどの翻訳グループにも属していないのでこのような手順を踏んているだけで、もしかしたらちゃんとしたもっと効率の良いやり方というのがあるのかもしれませんが・・。その場合は、教えて頂ければ幸いです。

1). 新しいバージョンの po ファイルを取得
2). 以前に翻訳した po ファイルをエディタで開く
3). 新しいバージョンの po ファイルをエディタで開く
4). 新しいバージョンの po ファイルの msgid に以前翻訳した msgstr をペースト
5). 新規に出てきた未翻訳の msgid を翻訳
6). やっと完成。ふぅ・・

なんていう、クラクラするような作業をしなければならずほんとにイヤになる・・。もっと効率的なやり方は無いんかな?

 
と、いうことで考えた技は以下の通り。 UNIX コマンド使いまくりだぁ;-)。 効率よく po ファイルをバージョンアップする技を考えてみました。

・新しい po ファイル: rekonq-2.4.2.po
・古い po ファイル: rekonq-2.3.2.po

ソースコードに日本語の po ファイルが無い場合には他の言語の po ファイルを日本語として使いまわします。 rekonq の場合は po/sv/rekonq.po を利用して rekonq-2.4.2.po としました。

1). msgid の抜き出し

$ cat rekonq-2.3.2.po | grep ^msgid > rekonq-2.3.2.po_msgid
$ cat rekonq-2.4.2.po | grep ^msgid > rekonq-2.4.2.po_msgid
$ diff -ur rekonq-2.3.2.po_msgid rekonq-2.4.2.po_msgid > msgid.diff

 
これで新規に追加になったメッセージと削除されたメッセージの差分が出てきます。
diff ファイルで “+” の部分は新しく登録された msgid で “-” の部分は削除された msgid です。

 
2). diff 結果の取り込み

$ cp rekonq-2.3.2.po rekonq-2.4.2_New.po
$ mule rekonq-2.4.2_New.po

 
rekonq-2.3.2.po は以前に翻訳したファイルなのでそれを最新版にします。そのために msgid.diff の差分を新しく用意した rekonq-2.4.2_New.po に反映して行きます。
“+” で表示されている msgid とその関連する部分は追加し “-” の部分の関連する情報は削除していきます。ガシガシしていきます;-)。 po ファイルには「ソースコードの何行目」なんていうコメント行がありますが、とりあえずそんなのは無視していきます;-)。

以上はエディタで編集する必要がありますが、これで新旧の情報がマージされた po ファイルが完成です。ちっこいバージョンアップだと差分が少ないので po ファイルの更新も楽ちんです;-)。

 
3). 翻訳者支援アプリ
テキストエディタで直接 po ファイルを更新しても良いとは思うのですが、何か支援 AI ではなく、支援ソフトは無いんかなぁ? とか思って調べてみると ports に editors/poedit というのがありますね。 GTK アプリで GUI で利用できそうです。こいつをインストールして起動してみます。

起動したら rekonq-2.4.2_New.po ファイルを読み込みます。すると翻訳可能な状態になります。キャプチャはありませんが、左側が msgid で、右側が msgstr です。 msgstr が空白な部分が翻訳されていない文字列になるのでそれをベコベコ打ち込んでいけば良いかと思われます。
日本語文字入力時に emacs キーバインドが利用できないのが痛いんだけど、GTK2 の emacs キーバインドの設定すれば良いんかなぁ?今度試してみよう。

 
GUI 的なモノで msgid を google 翻訳で翻訳してその結果を msgstr に表示するヤツとかあるんかなぁ? google の textproc/translate-toolkit なんかはその類なのかな? python のコマンドラインツールなんてのは使いたく無いんだけど;-P。

 
poedit は Windows 版 Mac 版もあるようです。編集した po ファイルを保存すると msgfmt も実行してくれるのでいきなり mo ファイルが生成されます。あとはそれを share/locale/ja/LC_MESSAGES/ 辺りにほーりこんで rekonq を再起動すると確認ができます。

 
翻訳用の po ファイルに対する新旧二つの情報のマージって、もっと他に何か画期的な方法・手段ってあるのかなぁ? google で探したけど見当たらなくて、結局 diff してその差分を古いバージョンの po フアイルにマージって方法にしたんだけど・・。

もしかして、本家にマージされた po ファイルは既に差分が吸収された状態でリリースされるとか?そんな便利な世の中ならドンドン本家にマージしたほうが良いなぁ。

それにしても翻訳の方法はこれで良いのかな?

2月 012014
 

このブログのとあるエントリにコメントを頂きました。 URL 的にはこれになるんですけども。

http://running-dog.net/2013/11/post_829.html#comment-36710

たまたま偶然なのかもしれませんが、以前私が日本語 po フアイルを書いた wifimgr が FreeBSD 9.2-RELEASE では動作しなくなったのだけど原因解りますか? と、いうモノです。
ちなみに今回は全然関係ありませんが、日本語 po ファイルは wifimgr の作者送り、採用されています;-)。

 
まず最初に wifimgr のソースコード眺めてみましたが、こいつは小さいプログラムなので簡単でしたね。ただ GTK の部分は全くわかりませんが、今回は GTK の部分はとりあえず置いておくことができそうです。そんな感じでソースコードを眺めたのですが wifimgr は GUI のボタンを押すと system() で ifconfig とか /etc/rc.d/ の下のスクリプトを実行していることが解りました。

 
そして wifimgr のソースコードを眺めてみるとだいたいが /etc/rc.d/netif を起動して、その戻り値でエラーをはいて停止してしまうことが解りました。

次に 9.1-R と 9.2-R の /etc/rc.d/netif を diff してみましたが、大きな相違点としては、 9.2-R では /etc/rc.d/routing を呼ぶようになった部分が怪しいです。実際に 9.1-R の /etc/rc.d/netif を 9.2-R に持ってきて wifimgr を起動すると無事に動作しました。あいや。するっていと原因は本当に /etc/rc.d/routing だねぇ。と、更に特定できました。

 
あとは IRC で教えてもらった以下の設定を /etc/rc.conf に仕込んで /etc/rc.d/routing の動作確認です。

rc_debug="YES"

 
そして /etc/rc.d/routing のあちこちに logger コマンドを仕込んで変数の値を /var/log/messages に出力させます(他にも /etc/rc.subr や /etc/network.subr も見る必要がありますが)。

/etc/rc.d/routing は以下のコマンドオプションで実行されているようですね。

# /etc/rc.d/routing start any wlan0

 
さてさて。原因の特定ですが、以下の行にあることが解りました。

    43          ""|[Aa][Ll][Ll]|[Aa][Nn][Yy])
    44                  for _a in inet inet6 ipx atm; do
    45                          afexists $_a && setroutes $_cmd $_a $_if
    46                  done
    47                  ;;

 
44 行目で inet inet6 ipx atm を定義して 45 行目で static_hoge として呼び出しているのですが inet6 を実行すると戻り値がおかしくなるらしく、その戻り値が /etc/rc.d/routing の戻り値として wifimgr に戻ってエラーになって終了するようです。
実際に

・44 行目の inet6 を消すと無事に動作する。
・45 行目の下に logger コマンドを入れると無事に動作する。
・routing_start() の終了時に return 0 を追加すると無事に動作する。

となりました。
このことをとある方にご連絡したところ、以下のパッチを書いてくださいました。多分次のリリース及び STABLE や freebsd-update では更新されるのではないかと思われます。

以下、頂いたパッチを先行して公開します。 FreeBSD 9.2-RELEASE で wifimgr を使っているが正常に動作しなくて困っている方は適用してみてください。

Index: etc/rc.d/routing
===================================================================
--- etc/rc.d/routing    (revision 255154)
+++ etc/rc.d/routing    (working copy)
@@ -42,7 +42,8 @@
                ;;
        ""|[Aa][Ll][Ll]|[Aa][Nn][Yy])
                for _a in inet inet6 ipx atm; do
-                       afexists $_a && setroutes $_cmd $_a $_if
+                       afexists $_a || continue
+                       setroutes $_cmd $_a $_if
                done
                ;;
        *)

 
これで無事に動作するようになると思われます。 wifimgr のほうもソース修正しなくとも良い(バージョンを見て実行するコマンドオプションを変えるのもつらいべ)のではないかと思われるので一安心です;-)。

あとで wifimgr の作者にメールしようと思います;-)。

あ。最後にですけど、 static_inet6() の戻り値がぶっ壊れる(っぽい)原因は詳しくは調べていません。もしかしたら FreeBSD の rc スクリプトが原因ではなく、僕が設定した /etc/rc.conf の IPv6 の設定がおかしくてそれが原因で正しく処理されずに戻り値が壊れて、結果的に /etc/rc.d/routing の戻り値がエラーになるのかもしれません。その場合、原因は僕にありそうですねf(^^;;。

1月 312014
 

いやー。WordPress なブログを三つ持っているのですが、そのうち二つのブログで WordPress 3.7.1 から 3.8.0 そして 3.8.1 へ自動アップデートできなくて困っています。

/wp-admin/update-core.php から [今すぐ更新] ボタンを押すと以下の画面になって、 wordpress.com へのアクセスがタイムアウトしているようです。

WordPress_update

パケットキャプチャしたり、自分のサーバのログを見たのだけど、どうも原因が特定できない状態。しょーがないので自動アップデート(ボタンによる更新作業。か)は断念して、手動アップデートすることにしました。

以下はその作業ログです。あ。root もしくはシェルが利用できる環境が必須です。 ftp しか利用できない環境では、残念ながら無理かもしれません。

あと、この手順で手動バージョンアップを実施してブログがおかしくなっても筆者(それはつまりは僕のことですが)は責任は持てないので、自己責任でお願いします。

 
1). 作業前にバシっとバックアップを取りましょう。
ブログの DocumentRoot が /usr/local/www/blog/ だとして話を進めます。

$ sudo -s
# cd /usr/local/www/
# tar cvzfp blog-backup.tgz ./blog
# cd blog/
# cp wp-config.php wp-config.php.sv

 

バックアップが完了しました。まぁ、ほぼ全部を tar で固めたのでイザというときは解凍すれば良いだけですね。必要であれば MySQL などの DB もバックアップしましょう。僕はバックアップしませんでしたけどf(^^;;。

 
2). パーミッションの確認
ブログの DocumentRoot が /usr/local/www/blog/ だとして、その下の wp- で始まるファイル群ののオーナーとグループを確認します。 apache:apache とか www:www や daemon:daemon などでしょうかね?

 
3). WordPress のソースの展開
WordPress のサイトからダウンロードして来たインストールしたいバージョンのファイルを展開し、オーナーとグループを直します。

$ unzip wordpress-3.8.1-ja.zip
$ cd wordpress
$ sudo -s
# chown -R apache:apache ./*
#

 
4). バージョンアップ実施
インストール前にオーナーとグループをそろえたので後はドバっと行きます;-)。

# cd ~/wordpress/
# /bin/cp -pr * /usr/local/www/blog/
#

 
豪快に cp します。オプションに -pr を付けたのでパーミッションと全てのディレクトリをサクっとインストールしてくれます。

ダウンロードした wordpress を展開したディレクトリの中のディレクトリは wp-admin/ wp-content/ wp-includes/ の三つです。wp-content/ の中が気になるようでしたら別途保存しても良いかと思われます。

が、上記で一応ファイル群のインストールは完了しました。

 
5). データベースの更新
cp -pr の実行が完了したら http://FQDN/wp-admin にアクセスしログインします。ログインするとデータベースを更新する必要があります。と、言われるので[WordPress データベースを更新]ボタンを押します。

WordPress_update2

これが無事に終わるとアップデートは完了です。

手動でやるとしてもずいぶんと簡単ですねぇ。「WordPress の更新」の画面からボタンをぼちっとな。と、押してもダメな場合はバックアップの後に cp -pr ってことでしょうかねぇ。けど、せっかくならインストール用スクリプトも同梱してくれれば良いのになぁ。

1月 302014
 

去年の 10/15 に Microsoft は Windows Phone8 update3 (俗に GDR3 と言われています)を公開しました。Microsoft が出したのはプレビュー版で OS 側のバージョンアップであり、デバイスメーカとしてのバージョンアップではありません。

これを踏まえて Nokia では “Lumia Black” と称して Nokia の Windows Phone8 が動作しているデバイスを各国のキャリア経由で Windows Phone8 update3 へのバージョンアップを実施しているようです。

日本において海外から SIM フリーな Nokia 製 Windows Phone8 端末を購入して、例えばれは僕が持っている Lumia 620 でも良いですが、 dccomo の SIM を利用していたり海外の SIM をローミングで利用している場合は “Lumia Black” の恩恵には授かれないんですね。 Nokia が docomo で “Lumia Black” を実施するとは到底思えない。

ではどうするか、と、いうと自己責任において Microsoft が提供している Windows Phone8 update3 のプレビュー版をインストールするのが望ましい。と、いうことになります。

 
そもそも、update3 を適用するとどのような良い点があるのか? ニュースサイトには色々書かれていますが Lumia 620 に特化して書くとすると以下のような点でしょうか。

1). 画面の回転が止められる
俗に言う「ランドスープモード」ですが、今までのバージョンでは横にすると勝手に画面が横向きになってしまい、それを抑制する機能が無かった。横向き回転停止機能が追加されました。

2). タスク終了時に [×] マークが表示されるようになった
Windows Phone8 は戻るボタン長押しでタスクリストが表示されるのですが、タスクリストから削除するときに、当該アプリ選択後にひたすら戻るボタンを数回押すしか無かったのですが、今度は [×] マークを押すだけでタスクを終了することが可能になりました。動作的には iOS のようです;-)。

3). 音の設定が柔軟にできるようになった
例えばスクリーンキャプチャする場合、カメラのシャッター音よりも大きな音がしていたのですが、これが消せるようになったり SMS やメール着信時の音が変更てきるようになりました。

他にも色々あるかとは思いますが、この三点でしょうかねぇ。けど、この三点だけでも随分と便利になったように感じます;-)。

納得行かない点としては

1). Bluetooth で相変わらずキーボードのプロファイルに対応しなかった
2). ブラウザでヲレヲレ証明書の SSL サイトを見るときの不便さ

の二点でしょうかX-(。

 
と、いうことで、今回は日本で利用している Windows Phone8 端末に update3 を適用する方法を書いてみたいと思います。

Windows Phone8 アプリでは update3 (“Lumia Black”) 適用対象確認アプリなんてのがすごいたくさんあるのでそれで確認しても良いですが、まぁ、日本ではそれらのアプリを利用しても意味ないですね。

docomo は “Lumia Black” はやらないだろうし、海外 SIM を使っている場合にもローミングなので無理でしょうしね。

と、いうことで以下手順を書いてみます。

1). Microsoft 開発者サイトに登録
Microsoft は日本語でちゃんと開発者向けにウェブサイトを用意しているのですねぇ。

https://dev.windowsphone.com/ja-jp/

上記 URL にアクセスし、開発者登録を行います。普段利用している Hotmail や Windows Live ID で問題無いです。日本語なので楽ちんですね;-)。

 
2). Windows Phone SDK 8.0 をダウンロード && インストール
Microsoft は開発者向けに Windows Phone SDK 8 を用意しています。

https://dev.windowsphone.com/ja-jp/downloadsdk

ここから SDK 8.0 をダウンロードして Windows8 にインストールします。 SDK 8.0 は Windows8 以上が必要で Windows7 にはインストールできませんでした。なんでも SDK 8.0 は Windows Phone8 のエミュレータとして Hyper-V が必須だそうでその影響らしいです。

インストール時にいきなり敷居が高くなりますね。 MSDN 辺りから評価版をダウンロードして来て仮想環境にインストール。とかする必要があるかもしれません。

SDK 8.0 は無料のライセンスも提供されるのでそのライセンスを利用しアクティベーションして準備は完了です。

 
3). 端末のアンロック
Windows Phone SDK 8.0 をインストールすると Blend for Vidual Studio 2012 がインストールされます。一緒にインストールされた「Windows Phone Developer Registration」ツールを起動して、USB 経由で Windows Phone8 を接続します。

WindowsPhone8_update3_1

あとはメニューに従い [ OK ] ボタンを推し進めていくと端末の開発者向けロックが解除されバージョンアップ可能な端末になります。この作業を実施しないと update3 は適用できません。

なお、実際の作業前には以下の二つをよぉーく読んで自己判断で行ってください。

https://dev.windowsphone.com/en-us/featured/update3
http://www.windowsphone.com/ja-jp/how-to/wp8/basics/how-do-i-update-my-phone-software

 
4). Preview for Developers アプリのインストール
続いて Windows Phone8 を取り出し Preview for Developers と、いうアプリをインストールします。

http://www.windowsphone.com/ja-jp/store/app/preview-for-developers/178ac8a1-6519-4a0b-960c-038393741e96

インストールしたら起動し、開発者登録したアカウントでログインし、なれない英語を読みつつ画面遷移していき最後に “Enable Preview for Developers” にチェックを入れて [ Done ] を押して準備は完了です。

 
5). 設定アプリの [電話の更新] からバージョンアップ
Preview for Developers アプリってのは「バージョンアップの確認と同意」を求めるだけで、実際にアップデートはしてくれません。

普段から利用している設定アプリの [電話の更新] メニューで [更新を確認] ボタンを押すと、上までの手順を踏んできた人の端末には update3 が表示されます。

WindowsPhone8_update3_2

あとはひたすら待ってバージョンアップが完了するのを待ちます。 Lumia 620 では結構長い時間かかりましたが 30-40 分程度は見ておいたほうがよいですね。

僕の Lumia 620 は一回バージョンアップがあって Windows Phone 8.0.10322 なバージョンだったのですが、 update3 適用後は 8.0.10521.155 になりました。

WindowsPhone8_update3_3

 
以上でバージョンアップは完了です。「設定」アプリには[画面の向き]とかいうメニューが表示されるようになったりタスクバーでも幸せになれます。スクリーンキャプチャしたときの音が小さくなった(調整で消音できる)のは嬉しいですかね。

と、いうことで僕は現在アップデートされた Windows Phone8 で遊んでいる最中です。

それにしても Microsoft は update3 を一般に公開するという、なかなか粋なことをやってくれます。 Nokia のように “Lumia Black” と称してしてキャリア経由でバージョンアップする場合、日本のような国が出てくるのでその対応策として GDR3 を用意したんでしょうかねぇ? それにしても嬉しいことです;-)。

皆さんも自己責任でトライしてみてください。ただ、何人の方が Windows Phone8 を持っているかわかりませんが・・f(^^;;。