 |
| Q |
IIIMF のパッケージをインストールしまたが、どうやって動作確認すればいい
のでしょう。
|
| A |
はじめに環境変数が正しく設定されているか printenv コマンドなどで確認してください。
以下の2行が必要です。
XMODIFIERS=@im=htt
GTK_IM_MODULE=iiim
2. htt_server と htt_xbe というプロセスが走っていることを確認してく
ださい
# ps -efw | grep htt | grep -v grep
3. アプリケーションをターミナルから起動して、そのアプリケーション上
で ctrl+space (デフォルトの変換開始キー)を押してみてください
|
 |
| Q |
問題を追いかけるために、デバッグ情報を採取したいのですが?
|
| A |
はじめに現在動いている関係したプロセスを止めます。
ie. # service IIim stop
# killall httx
サーバーをデバッグ・オプション付きでターミナルから起動します。
# /usr/sbin/htt_server -d
別のターミナルから XIM へのブリッジを起動します。
# /usr/bin/httx
環境変数 XMODIFIERS=@im=htt と GTK_IM_MODULE=iiim そして、LC_CTYPE
が自分が入力したい言語のロケールに設定されているターミナルから、
アプリケーションを起動し、サーバーをデバッグ・オプション付きで起動した
ターミナルに何か表示されるメッセージを採集します。
|
 |
| Q |
他の言語は入力できるのに、 CannaLE(Wnn や他の辞書引きサーバーを使う LE も同様)が動きません。
何が原因ですか?
|
| A |
辞書引きサーバーが動いていないことが考えられます。たとえば、CannaLE
の場合、cannaserver が先に動いている必要がります。たとえば以下のように
して確認して、必要ならあらかじめ起動しておいてください。
# ps -efw | grep canna | grep -v grep
# service canna start
htt_server のプロセスに HUP シグナルを送ると言語エンジンを再ロード
するので、起動された cannaserver に CannaLE が接続できるように
なります。
|
 |
| Q |
IIIMF のデフォルトのホットキーにはどのようなものがありますか?
|
| A |
|
一般:
|
Ctrl+Space 変換オン・オフ
Ctrl+Alt+l(Ctrl+Alt+s) 入力言語エンジン切り替えウィンドウ
表示(PageDown/PageUp で次・前ページ表示)
|
|
UnitLE:
|
F5: UNIT がサポートする別の言語へ切り替え
F6: UNIT がサポートする別のレイアウトへ切り替え
|
|
 |
| Q |
emacs では ctrl+space が既に set-mark-command に割り当てられていて不便
です。shift+space に変更したいのですが。
|
| A |
使いやすい総合的なキーバインディングのエディタは未だ開発中ですが、
htt_server を起動する時、-conversionkeys オプションで異なるキーを
指定できます。
また、XIM を使用しているアプリケーションには、以下の行を
"*conversionOnKeys: Zenkaku_Hankaku <Shift>space"
を xrdb に喰わせることで変更可能です。
もし、ATOKX を使用している場合、ATOKX が、
/usr/lib/im/locale/ja/atokserver/shift_space という file の有無
を確認するため
# touch /usr/lib/im/locale/ja/atokserver/shift_space
として file を作っておくと shift+space に変更できます。
|
 |
 |
| Q |
自分で言語エンジンを書きたいのですが、どこから始めればよいでしょう?
|
| A |
LEIF と呼ばれる言語エンジンのインターフェースのスペックと sampleja と
いうサンプルの言語エンジンのコードを参照するところから始めるとよいで
しょう。IIIMF にはたくさんの言語エンジンがあり、まだ開発中で参加者を
募集しているプロジェクトもあります。IIIMF Web ページの言語エンジンの
リストを見てメインテナーにコンタクトして見るのもよいかもしれません。
|
 |
| Q |
私の作りたい言語エンジンはそれほど複雑なものではなく、独立したエンジン
として作るほどではないような気がします。LEIF 以外に言語エンジンを
書くためのインターフェースはありますか?
|
| A |
複雑なロジックが必要ないなら、UNIT(UNIcode Table based)言語エンジンの
サブ・モジュールとして作ることを考えてみるのもいいかもしれません。
UNIT言語エンジンは、簡略化したインターフェースによって、ロジック部分の
サブ・オブジェクトを追加する方式と、更に簡単な、テキストで書かれたテー
ブルを追加する方式の二つの拡張方式を備えています。
|
 |
| Q |
自分で書いた言語エンジンを追加インストールしたのですが、
gnome-im-switcher applet の言語リストには言語名しか表示されず、
自分の言語エンジンがどれだかわかりません。
|
| A |
gnome-im-switcher アプレットのバグとして bug id#0000003
(http://www.openi18n.org/mantis/bug_view_page.php?bug_id=0000003)
として登録されているバグです。このバグは、revision 1804 で修正されました。
1804 以降の revision にアップグレードするか、言語エンジンリストを選択する
ホットキー <Alt><Ctl>s または <Alt><Ctl>l.
を使用することで確認できます。
|
 |
| Q |
私は言語エンジンをシングル・ユーザー、シングル・コンテクストを仮定して書いてしまいました。IIIMFで使うにはマルチ・ユーザーで使えるように書き直さなくては行けないのでしょうか?
|
| A |
これはマルチユーザーで使えるプログラムをどう書くか勉強する良いチャンスかもしれません(^-^)。
しかし、IIIMF は、プロセス全体が、シングル・ユーザー、シングル・コンテ
クストを仮定して書かれてしまった、ロケール依存な言語エンジンでも、
無修正で動かすメカニズム vmseparator を備えているので、書き直す必要はありません。
元々、IIIMF のサーバーは 1989 年にシングルユーザーで動く XIM サーバー
として書かれた "htt" から発展してマルチユーザーサーバーになったもので
す。
XIM サーバー時代に書かれた古いエンジンは、皆シングル・ユーザー、ロケー
ル依存、X依存のものばかりでした。
それらをサポートするため、旧版の LEIF ではその vmseparator は必須
で、im-sdk r10 までは標準で使われていました。
新しい言語エンジンがマルチユーザー対応をするようになり、既に需要が無いかと r11 では一端落としたのですが、r12 では r10 からバックポートし再度サポートすることになりました。
|
 |
 |
| Q |
IIIMF はサーバー・クライアント間の接続方式とお互いの認証方式に複数のオ
プションを提供していると聞きました。どのようなものがあるのですか?
|
| A |
どのように組み合わせるかについての制限は特にありませんが、典型的な
5種類のシナリオについて以下に例を挙げます。
|
シナリオ
|
サーバー認証
|
クライアント認証
|
通信路
|
アクセス制御
|
シナリオ 1
自分がログイン・アカウントを持っていないリモートホストのサーバ
に信頼できない LAN や WAN 経由で接続する場合
|
X.509 認証
|
X.509 認証
|
SSL/TLS による暗号化
|
TCPWrapperによるホストまたはネットワークごとの接続制限
|
シナリオ 2
自分がログイン・アカウントを持っているリモートホストのサーバ
に信頼できない LAN や WAN 経由で接続する場合
|
X.509 認証
|
X.509 認証か PAM認証
|
ssh や stunnel などでポートフォワードすることで暗号化
|
通常のログイン・アカウントにかけられるアクセス制限
|
シナリオ 3
ローカルホスト上でシステム・デーモンとして走るサーバーに
localhost(127.0.0.1) のアドレスで INET ドメイン・ソケットを
使用して接続
|
システム・デーモンが特権ユーザーで走っている場合は、特権ポー
トを使用することでも認証可能。非特権ユーザーで走っている場合
は X.509 認証
|
PAM 認証もしくは X.509 認証
|
暗号化しない、もしくは SSL/TLS よる暗号化
|
通常のログイン・アカウントにかけられるアクセス制限
|
シナリオ 4
ローカルホスト上でシステム・デーモンとして走るサーバーに
UNIX ドメイン・ソケットを使用して接続
|
ソケット path の uid/gid
|
ソケットの credential
|
暗号化しない
|
通常のログイン・アカウントにかけられるアクセス制限
|
シナリオ 5
ローカルホスト上で自分の個人サーバーとして走るサーバーに
UNIX ドメイン・ソケットを使用して接続
|
ソケット path の uid/gid
|
ソケット path の uid/gid とパス、もしくはソケットの credential
|
暗号化しない
|
ソケット path のパーミッション
|
|
 |
| Q |
IIIMF のようなサーバー・クライアント方式のシステムは sniffer 等でキー
入力を盗聴できるから危険だという話を聞きますが本当ですか?
|
| A |
それが本当なら、まず最初に、X ウィンドウシステムを使用するのをやめ
るべきでしょう。ご存じのように、X ウィンドウシステムでは、同じホス
ト上で動かしていても、 すべてのキー入力が X サーバーと X クライア
ントの間で送られています。
IIIMF が使用する UNIX ドメイン・ソケットや localhost(127.0.0.1) に
対して張る INET ドメイン・ソケット では外部ネットワークにパケット
が垂れ流されません。したがって、そのシステムに侵入し、ユーザー自身
か root のアカウントを奪取しなければ盗聴は不可能です。
IIIMF は、リモートのサーバーに接続する場合は、SSL/TLS で通信路の暗
号化をしますから、それを解読しないかぎり盗聴は不可能です。
|
 |
| Q |
IIIMF は、暗号化されていない生パスワードを送ると聞いたのですが
盗聴されませんか?
|
| A |
それはパスワードではく、クッキーのようなもので、ユーザーのホーム
に パーミッション 0600 で置かれた file を、接続要求して来た
ローカルホストのユーザーが読めるかどうかで、PAM 認証のプロセスの
一部として使われるものです。ユーザーのアカウントのログイン・パスワード等
ではありません。 上記のように root かユーザー本人の
権限を奪取しなければローカルホスト上で盗聴できませんし、リモート
サーバーへの接続では SSL/TLS で通信路が暗号化されているため
盗聴できません。また、本来、PAM 認証は暗号化されていない安全でない通信路
で使える認証として使うためのものではありません。
|
 |