hoge diary - May 2005

May 28, 2005

[雑記] 高専の卒業生がいらっしゃいました

社会人 3 年目になる大阪府立高専卒の友人が,会社の用事で豊橋まで来たついで,ということでいらっしゃいました.

驚くべきことは,この事実を別な友人(同じく社会人 3 年目)に伝えたところ,「明日暇やし,行くわー」との返事が... 最初の彼は会社の用事のついでだからいいものの,2 人目の彼は... うーん,恐るべし社会人パワー.

まずは 1 人目の友人と午後 2 時くらいまで Joyfull で食事してました.

この後,飲み会をやることになるでしょう.

May 23, 2005

[雑記] TrueType フォントを CID-Keyed フォントに変換するには

以下は覚え書きです.

fontforge を用いて TrueType フォントを CID-Keyed フォントに変換する手順:

  • フォントを開く
  • [エレメント]-[フォント情報] メニューで表示されるダイアログの [エンコーディング] タブを選択.「解釈」を「日本語」とする.
  • [CID]-[CMap を指定して変換] メニューから,/usr/share/ghostscript/Resource/aj14/CMap/UniJIS-UCS2-H を選択し,対応する CID が見つからないグリフに対しては [追加] か [削除] を選択する.
  • OpenType CID あるいは PS CID フォントとして保存する.

May 22, 2005

[出来事] テレビ本体の時刻設定ミスにより録画失敗

帰宅後,テレビを確認すると... 点滅するはずの予約完了ランプが点滅していません.

「あれー 予約時刻は正しいのになー」と思いつつテレビ本体が刻んでいる時刻を見ると,午前と午後が逆に設定されていました.

そっちが狂ってたのかYo! orz.

May 21, 2005

[雑記] hoge diary 検索

hoge diary 内の検索を実装してみました.ただし検索結果の出力に手を抜いています.

May 20, 2005

[出来事] Tak.M さんが研究室にいらっしゃいました

突然の訪問でびっくりしました.

ところで,私は隣室でのやりとりが非常に気になっています.というのも,あの部屋はお世辞にも美しい状態ではなかったので...

なお,おみやげのうなぎパイは美味しく頂きました.ありがとうございます.

May 16, 2005

[出来事] 届かなくなったメール

私は普段,メールサーバのメールを取り込むために fetchmail daemon を使用しています.

そして,ある日を境にメールが届かなくなってしまいました.

メールサーバの /var/mail/hoge を覗いてみると,ちゃんとスプールが常時 0 バイト,つまり受信できなくなったわけではないようです.

取り込まれずに消えてしまったメール達... 幸い携帯に転送していたので情報は伝わっていましたが,これは一刻も早く原因を突き止める必要があります.

fetchmail daemon のログが残っていないので,動作中の fetchmail daemon を一旦 kill し,fetchmail を単独で実行すると...

procmail: Suspicious rcfile "/home/hoge/.procmailrc"
procmail: Couldn't read "/home/hoge/.procmailrc"

ありゃ.何でこのエラーが出てるんでしょう.すぐさま .procmailrc のパーミッションとホームディレクトリ /home/hoge のパーミッションをチェック... すると,何故かホームディレクトリのパーミッションが 775 になってました.

パーミッションを 700 に戻して無事解決しましたが,私はいつパーミッションを変更したんでしょう.

May 14, 2005

[雑記] チルダの補完

飲み会の席で聞いた恐い話です.

あるディレクトリに,次のように ~ という名前のサブディレクトリがあるとします.

$ ls -F
~/

さて,使用しているシェルが bash であると仮定して,このディレクトリを消すべく,rm コマンドを実行しようとします.

rmSpace-rfSpace

ここまでキーを入力したとき,このディレクトリにはサブディレクトリが 1 つだけだからといって,ここで Tab キーによる補完を何気なく使用すると恐ろしいことになります.では Tab を入力してみます.

$ rm -rf ~

補完されましたが,何とチルダがエスケープされていません.このままクセで Enter を入力しようもんなら... ああ,考えただけでも恐ろしい.

また同様に,同じディレクトリがカレントディレクトリとして,bash のプロンプトに続けて rmSpace-rfSpace\~ と入力してから...

$ rm -rf \~

Tab を入力すると...

$ rm -rf ~/

何とエスケープ用のバックスラッシュが消えてしまいました.これも恐ろしい話です.

ちなみに,zsh 4.2.0 (補完は "autoload -U compinit; compinit" とします)で同じ補完を行わせると...

$ rm -rf \~/

こちらはエスケープされているので安全です.

May 13, 2005

[雑記] ほげたん

もっと!! 3 分間ネットワーキング 補講第 3 回 Dijkstra のアルゴリズムには,3 分間ネットワーキングの新キャラが登場しておりました.

おねーさんほげたんです.アルファベットで書くと「hoge たん」でしょうか.

これからもキャラクタが増えて賑やかになることを祈ってみます.そのうちオールスターで何かできるようになりそうです.

May 12, 2005

[雑記] mimeman

久々に思い出しました.早く試さないと!

[雑記] ハバネロタバスコ + パルメジャーノ・レッジャーノ

パルメジャーノ・レッジャーノによるまろやかさをハバネロタバスコが打ち消しているとしたら... この両者をパスタに同時に加えることは,贅沢なのかも知れません.

May 11, 2005

[雑記] IP アドレスの表現

IP アドレスはオクテット毎にドットで区切らず,4 オクテット(32 ビット)の整数値として記述することが可能らしいです.

試してみるとその通りになりました.例えば次のような感じです.

$ ping 123456789
PING 123456789 (7.91.205.21) 56(84) bytes of data.

--- 123456789 ping statistics ---
1 packets transmitted, 0 received, 100% packet loss, time 1999ms

もとい,知ったところで使用することはないでしょうねぇ.

May 7, 2005

[Linux] DVD-ROM ドライブを使用する場合の /etc/fstab

UDF は ISO-9660 互換のファイルシステムであるため,例えば,/etc/fstab に次のように記述した状態で UDF のディスクをマウントすることができてしまいます.

/dev/cdroms/cdrom0       /mnt/cdrom       iso9660     ro,owner,nosuid,noauto,iocharset=euc-jp      1 0

こうすると,UDF のディスクへのアクセスは,ISO-9660 ファイル名を用いるので使いづらいです.かといって,/etc/fstab に次のように書くと,当然ながら今度は ISO-9660 のディスクがマウントできなくなってしまいます.

/dev/cdroms/cdrom0       /mnt/cdrom       udf         ro,owner,nosuid,noauto,iocharset=euc-jp      1 0

そこで,こういう場合は /etc/fstab を次のように書き換えます.

/dev/cdroms/cdrom0       /mnt/cdrom       udf,iso9660 ro,owner,nosuid,noauto,iocharset=euc-jp      1 0

この部分に関する記述はしっかり mount(8) に載っていました.私はこういう書き方が許されることをたった今知りました...

あれ,そういえば昔 Fedora Core 2 をインストールしたときにこんな記述に見覚えが...

May 6, 2005

[Gentoo] mlterm + scim

GTK+-2 アプリケーションは GTK_IM_MODULE=scim とすることで On-the-spot 入力できていました.そして今回,Qt アプリケーションも QT_IM_MODULE=scim として On-the-spot 入力ができるようになりました.

そして,私が普段使用しているアプリケーションは唯一の例外である mlterm を除き,全て GTK+-2 か Qt アプリケーションです.こうなってくると,残った mlterm でも On-the-spot 入力したいと思うのが人情というものです.

mlterm-2.9.2 には,SCIM と直接通信する機能が実装されました.これを使用しない手はありません.

... と思いきや,portage ツリーの x11-terms/mlterm-2.9.2 には,この部分がありません.

というわけで,自分で /usr/portage/x11-terms/mlterm-2.9.2.ebuild を改造し,--enable-scim が使用できるようにしました.

以下がオリジナルとの ebuild との差分です.

--- /usr/portage/x11-terms/mlterm/mlterm-2.9.2.ebuild   2005-04-12 10:05:56.000000000 +0900
+++ mlterm-2.9.2-r1.ebuild      2005-05-06 23:00:22.000000000 +0900
@@ -4,7 +4,7 @@

 inherit eutils flag-o-matic

-IUSE="truetype gtk imlib bidi nls uim"
+IUSE="truetype gtk imlib bidi nls uim scim"
 #IUSE="${IUSE} m17n-lib iiimf scim"

 DESCRIPTION="A multi-lingual terminal emulator"
@@ -41,6 +41,7 @@

        # m17n-lib and iiimf aren't stable enough
        #myconf="${myconf} $(use_enable iiimf) $(use_enable m17n-lib m17nlib)"
+       myconf="${myconf} $(use_enable scim)"

        append-ldflags -Wl,-z,now

この ebuild をマージして,無事 mlterm を作ることができたなら,最後に ~/.mlterm/main の設定を変更すれば完了です.

input_method = scim

[Gentoo] scim-qtimm を使用可能にする

skim をインストールしていれば,さらに scim-qtimm をインストールすることで,XIM を経由することなく Qt のウィジェットが直接 SCIM と通信できるようになります.

scim-qtimm をインストールする前に,まずは Qt の IMModule を有効にします.

# USE="immqt-bc" emerge qt

USE="immqt-bc" は,USE="immqt" でも構いませんが,その場合はバイナリ非互換の Qt になるので,Qt に依存するパッケージも再コンパイルする必要があります.

さすがにそれは厳しいので今回は USE="immqt-bc" にしておきました.でも,USE="immqt" にした場合と何が変わってくるんでしょうねぇ.

さて,Qt のインストールが終われば,いよいよ scim-qtimm のインストールです.

# emerge scim-qtimm

準備は整いました.最後に,Qt のウィジェットから scim を使用するために,~/.xsession もしくは ~/.xinitrc に環境変数の設定を追加しておきます.

export QT_IM_MODULE=scim

これで完了です.Qt は直接 SCIM と通信するようになりました.

(私が享受した)利点は,何といっても On-the-spot による入力ができるようになった点でしょう.欠点としては,SCIM が死ぬと Qt アプリケーションが巻き添えになって死ぬ点でしょうか.

May 5, 2005

[雑記] 酸 湯麺

マルちゃん 黒酢香る酸辣湯麺(スーラータンメン)なるものが近くのスーパーにて売られておりまして,その値札(業界ではポップと呼ぶらしい)を見ると...

黒酢香る酸辣 麺

黒酢香る酸とは一体何のことかと思いました.製品パッケージと見比べてみると,文字が 1 文字抜けてるではありませんか.

「辣」は JIS X 0208,UCS-2 に含まれているので,一般に流通しているであろうコンピュータで使用できるはずなんですが... なぜ抜けてしまっているのでしょう.

ああ,なるほど.文字は存在すれども,印刷に使用したフォントにグリフが入ってなかったということですか.業務印刷用のフォントに JIS X 0208 第 2 水準の文字が入ってないとは考えにくいのですが...

May 3, 2005

[Linux] Acrobat Reader 7.0 for Linux

をををっ,Acrobat Reader 7.0 for Linux があるじゃありませんか.まさに待望の品,自ずと期待が高まります.

app-text/acroread-7.0 は masked package でしたが,構わずインストールします.

そして起動... ををを,Acrobat Reader 7.0 は GTK+2 アプリケーションになってます.

Uho! Acrobat Reader 5.01 では表示できなかった PDF もあっさり表示してくれました.

[TeX関連] 90ms-RKSJ-H エンコーディングとの闘い (最終章)

さて,無事に Ghostscript の設定が済んだところで,lprng + magicfilter を通して PDF を印刷させてみます.

結果... 次の内容が印刷された紙が出てきました.

Error: /undefined in /90ms-RKSJ-H
Operand stack:
   --dict:7/7(L)--   TT2   1   --dict:5/5(L)--   --dict:5/5(L)--   MS-Gothic
Execution stack:
   %interp_exit   .runexec2   --nostringval--   --nostringval--   --nostringval--   2   %stopped_push   --nostringval--   --nostringval--   --nostringval--   false   1   %stopped_push   1   3   %oparray_pop   1   3   %oparray_pop   --nostringval--   2   1   3   --nostringval--   %for_pos_int_continue   --nostringval--   --nostringval--   --nostringval--   --nostringval--   %array_continue   --nostringval--   false   1   %stopped_push   --nostringval--   %loop_continue   --nostringval--   --nostringval--   --nostringval--   --nostringval--   --nostringval--
Dictionary stack:
   --dict:1052/1123(ro)(G)--   --dict:0/20(G)--   --dict:92/200(L)--   --dict:92/200(L)--   --dict:97/127(ro)(G)--   --dict:229/230(ro)(G)--   --dict:19/24(L)--   --dict:4/6(L)--   --dict:24/31(L)--
Current allocation mode is local
Last OS error: 2

印刷キューを追加したユーザの設定は読んでくれなかったのですね... 研究室に泊まってまでやってきた今までの苦労は一体... orz

結局 sudo して設定を変えてしまうしかないのですか... 共用マシンではあまり sudo したくないんですけどねぇ.

[TeX関連] 90ms-RKSJ-H エンコーディングとの闘い (3)

四角いゴミがどこに出現しているかを見てみると,空白と改行の部分に現れていました.

ということは,CMap ファイルをいじって空白と改行のマッピングを変えてやればこの四角は消えるのではないでしょうか.

ということで作業開始.まずは 90ms-RKSJ-H を見てみます.

1 beginnotdefrange
<00> <1f> 231
endnotdefrange

という記述がありました.どうやら制御コードは 231 (0x00E7) にマッピングされているようです.

さて,Shift-JIS から UCS-2 へのマッピングが分かったので,あとは 0x00E7 が変な文字で印字されるのを止めさせるだけです.Adobe-Japan1-UCS2 をいじくります.

--- Adobe-Japan1-UCS2.org    Tue May  3 11:13:55 2005
+++ Adobe-Japan1-UCS2   Tue May  3 11:14:20 2005
@@ -110,7 +110,7 @@
 <00E4> <2122>
 <00E5> <017E>
 <00E6> <0030>
-<00E7> <2002>
+<00E7> <0020>
 <0123> <00A5>
 <0145> <203E>
 <0186> <FFFD>

デフォルトで 0x00E7 は 0x2002 にマッピングされています.この文字が何かはさておき,とりあえず強引に空白文字 0x0020 に修正しています.

これでレンダリングを行うと... 無事に所望の結果を得ることができました.めでたしめでたし.

ちなみに,90ms-RKSJ-H を次のように修正する方法では出力結果が全く変化しませんでした.

1 beginnotdefrange
<00> <1f> 32
endnotdefrange

[TeX関連] 90ms-RKSJ-H エンコーディングとの闘い (2)

Ghostscript 8.15 - TeX Wiki によると,GNU Ghostscript 7.x では日本の gs-cjk プロジェクトの成果が取り込まれたとあるので,Ghostscript 7.05 + VFlib でも一応 VFlib を介さずに TrueType フォントを使用できるのではないかと思い,以下のようにしてみました.

$ cd
$ mkdir -p .ghostscript/{lib,Resource/CIDFont}
$ cp /usr/local/share/ghostscript/lib/gs_res.ps .ghostscript/lib
$ cat > .ghostscript/Resource/CIDFont/MS-Gothic
%!PS-Adobe-3.0 Resource-CIDFont
%%BeginResource: CIDFont (MS-Gothic)
/MS-Gothic
(/usr/share/fonts/ryobi/tcgothb.ttc) .openttcidfont
dup length dict begin {def} forall currentdict end
/CIDFont defineresource pop
%%EndResource
%%EOF
$ vi .ghostscript/lib/gs_res.ps
(248-249 行目を以下のように編集)
/FontResourceDir (/home/hoge/.ghostscript/Resource/Font/) readonly .forcedef
/GenericResourceDir (/home/hoge/.ghostscript/Resource/) readonly .forcedef
$ export GS_LIB=$HOME/.ghostscript/lib:$HOME/.ghostscript/vflib

これで,MS-Gothic に対しては gs-cjk 経由で TrueType フォントが使用されるはずです.

早速レンダリングを実行.そしてその結果は...!

変な四角いゴミが含まれているレンダリング結果

なんでしょうね.この四角いゴミは.これさえなければ完璧なんですけどねぇ.惜しい?


Valid XHTML 1.1! Valid CSS!
© 2004-2009 ぱくちゃん.
Last modified: Fri Nov 02 01:56:09 JST 2007