2011年12月27日火曜日

FreeBSDからCanon BJ S500で印刷できた

1. 前書き

諸事情により(インクジェットプリンタよりもマザーボードの方が寿命が短いらしい)、家マシンのプリンタ再設定をおこなった。ここに記録として残しておく。

注) マザーボード:AMD Duron 900MHzの載ったK7S5A(サムライの誘惑、2001年発売)で、2007年に全ての電解コンデンサを換装済み。それなのに、煙を出して死んでしまった。

2. 環境

マシン:FreeBSD 8.2-stable(amd64), portupgrade -N emulators/linux_base-f10/ 済み。
プリンタ:Canon BJ S500 バブルジェットプリンタ。2001年発売。2008年頃ヘッドを交換した。

3. マシンの設定

3.1 プリンタフィルタの配置、リンカの設定

http://cweb.canon.jp/drv-upd/ij-sfp/bjlinux201-s500.html から、bjfilterbjs500-2.0-1.i386.rpmをダウンロードする。rpmファイルの配布場所は変わるかもしれないが、canonのtopページから、ダウンロード→インクジェットプリンター→バブルジェットプリンター→BJ S500→Linuxでたどれたことも記しておく。うっかりソースファイルをダウンロードしてしまわないように注意。

手元の資料(参考文献)には、bjfilter-common-2.50-2.i386.rpmが必要との情報があるが、なくてもlprは問題なく動くので、見つからなくても大丈夫。

ダウンロードした、rpmを適当なところにおいて、sudo -sして
# tar xvf bjfilterbfs500-2.0-1.i386.rpm -C /compat/linux
# /compat/linux/sbin/ldconfig -r /compat/linux
する(tar でも.rpmを展開できるようになったみたい。便利!)。ldconfig をすることで、/compat/linux/bin/bjfilterが、*.soを見つけられるようにしてやる。
rpm(1)コマンドを使えば、ldconfig を手動でしなくても済むのだけれど、オプションが複雑なので、今回はこちらの方法で。

このままでは、/compat/linux/bin/bjfilterが、ライブラリが足りないよ、というので
# portupgrade -N graphics/linux-f10-png10
する。linux-base-fc4の人は、linux-png10だけれど、現在の標準のlinux emulatorはlinux-base-f10になっている。

これで、/compat/linux/bin/bjfilterが実行可能になった。

3.2 /etc/printcapの編集

以下を/etc/printcapに追記する。
lp|Canon BJ S500:\
:sh:\
:lp=/dev/ulpt0:\
:sd=/var/spool/output/lpd/:\
:if=/usr/local/libexec/canon:\
:lf=/var/log/lpd-errs:\
:mx#0:\
:sh:

3.3 /usr/local/libexec/canonの編集

以下の内容の/usr/local/libexec/canonを用意する。
#!/bin/sh
/usr/local/bin/gs \
-q -r600 -dNOPROMPT -dSAFER -sPAPERSIZE=a4 -sDEVICE=ppmraw \
-sOutputFile=- - quit.ps | \
/compat/linux/usr/local/bin/bjfilterbjs500 --full --imageres 600 --lgmon
exit 0

4. 印刷

あとは普通にlprで印刷すればできる。
linux-emulatorはまだ32bitなので、こういうときは便利だ。

参考文献

後藤大地著、FreeBSDビギナーズバイブル、ISBN978-4839918941、http://www.amazon.co.jp/FreeBSDビギナーズバイブル-MYCOM-UNIX-Books-後藤/dp/4839918945

2011年12月21日水曜日

ターミナルでwordファイルを読みたい

1. 前置き
FreeBSDで暮らしているところに、WordやExcelの事務書類がメールの添付ファイルで届くことがよくある。
しかし、OpenOfficeを立ち上げるのも面倒で、lessと同じくらいの気楽さで読めればいいと思っていた。

数ヶ月前に、lessdocというshellscript を書いて(私の過去の記事「wordファイル(.docファイル)をtxtに変換する方法 -> wvWare」http://quantum-public-diary.blogspot.com/2011/08/worddoctxt-wvware.html)、Wordファイルはターミナルで内容確認できるようにした。
それを拡張して、Excelファイルにも対応したので、ここに報告する。

2. install しておくべきもの
(1) textproc/wv
word形式のファイルをhtml形式やpdf形式などに変換するライブラリ。本家はこちらhttp://wvware.sourceforge.net/。portsから入れればよい。
(2) textproc/xlhtml
excel形式のファイルをhtml形式に変換するプログラム。本家はこちらhttp://chicago.sourceforge.net/xlhtml/。portsから入れればよい。
(3) japanese/w3m-img
コンソール(ターミナル)用のWeb browser。ここではhtml->txt変換に使う。軽いので普段もssh越しにブラウザを使いたいときなどに利用している。それから、うっかりXorgを壊してしまったときに、kon(japanese/kon2-16bit)と組み合わせて、最後のとりでとして検索するのに使う。
www/w3m-imgを入れてしまうと、文字エンコーディングなどのオプションが少なくて、日本語を使うときに困ると思う。
(4) 日本語を表示できるターミナル
私は gnome-terminal派だが、ktermでももちろんよい。lvの-Oオプションと、ターミナルの入力エンコーディングを合わせないと文字化けする。

3.原理
やることは、wvWareでhoge.docをhoge.htmlに変換し、w3mのdump機能を利用してtxtにし、lvでターミナルに表示する。

script はこれだ!!!

#!/bin/sh
# lessoffice.sh
export LV=-Ojis; 
for i; do
    TMPDIR=`mktemp -d /tmp/tmp_lessdocXXXX` || exit 1 
# for Word 
#    if file $i |grep Word; then
    if [ ${i##*.} = doc ]; then
        if ! wvHtml $i $TMPDIR/tmp.html; then
            echo "You need to install textproc/wv !!!"
        else
            w3m -dump $TMPDIR/tmp.html |lv 
        fi
# for Excel
#    elif file $i |grep Excel; then
    elif [ ${i##*.} = xls ]; then
        if ! xlhtml $i > $TMPDIR/tmp.html; then
            echo "You need to install textproc/xlhtml !!!"
        else
            w3m -dump $TMPDIR/tmp.html |lv 
        fi
# for other format
    else
        lv $i;
    fi
#  else
    rm -r $TMPDIR;
done
4.いいところ
(1) lvのincremental searchを使ったり、grep に流し込んだりできる。
(2) Xがいらない。ssh先で実行するときに、とくに快適。

5.追記
ファイルの種類の識別をファイル名に頼っているのは格好悪いのだけれど、file(1) を使うと、word(excel)のバージョンによっては、識別に失敗するので、この方法にしている。

2011年11月16日水曜日

gnomeのpop-upを使ってみよう->ネット中毒防止 pop-up

1.
家で余暇の時間を過ごしていると、うっかりネットサーフィンを続けてしまうことがある。前述(過去の記事「"Startup Applications" で立ち上げた xclock を "Always on Top" かつ "Always on Visible Workspace" にしたい。 -> devilspie を導入した」http://quantum-public-diary.blogspot.com/2011/07/startup-applications-xclock-always-on.html)のようにあなろぐ時計を見やすい位置に表示しているにもかかわらずだ。そこで、gnomeが立って2時間経過したら、「もうネットの時間はおしまいよ」とpop-upで教えてくれるスクリプトを書いた(普段、家のPCの電源を入れっぱなしにすることはないのだ。で、電源を入れたら自動login して、gnomeを立てて待っていてくれるシステムになっている)。

2.
zenity (http://live.gnome.org/Zenity)はコマンドラインやシェルスクリプトからGTKのダイアログボックスを開くことを可能にするツールである。使い方は「試験運用中なLinux備忘録(http://d.hatena.ne.jp/kakurasan/20070716/p1)」に詳しい。

が、私には細かいことは必要ないので、一番基本的な使い方をしている。

$ zenity --info --text "It's time to leave PC"

としてみればpop-upが出せる。

3.
pop-upの出し方がわかればあとはスクリプトを書くだけだ。
以下のスクリプトを書いて保存しchmod +xして、gnomeのstartup applicationsに登録する。

#!/usr/local/bin/bash
d=`date +%w`
if [ $d -eq 0 -o $d -eq 6 ]; then
    exit 0;
fi
sleep 7200;
zenity --info --text "It's time to leave `hostname -s`"

土曜と日曜は2時間以上ネットしてもいいとのポリシーを採用した。
2時間で pkill gnome-sessionとかshutdownしようかとも思ったけど、過激過ぎるのでとりあえずは警告のみで運用する。

2011年10月25日火曜日

freebsdでflashを見るのは簡単になった

セキュリティ上の安全性のために、firefoxのversionを上げたのだが、
(firefox 3.6 -> firefox 7.0.1、portupgradeを使用。
portupgrade firefox の前に portupgrade nsprが必要だった。)
linux-flashplugin(linux-f10-flashplugin-10.2r159.1)、
nspluginwrapper(nspluginwrapper-1.2.2_8)は
そのままで、youtubeが見られた。

昔はgnashをいれてみたり、youtubeは見られなかったり、
大変な苦労をしていたが、今は楽になったなあ。

これは、portdowngradeする羽目になったときのためのversionのメモ。

2011年9月23日金曜日

旅行にいく時に持っていった方がいいもの

しばらく学会に行っていたのだが、いくつか現地で必要になって買うことになったものがある。次回は忘れないように書いておこう。
いままでの「旅の持ち物」リストに加えておこう

持っていけばよかったものたち

1. 爪切り
4日もあれば、爪は伸びる。現地の薬局で購入したが、次回は持っていこう。

2. フォーク
旅先でアップルパイを買って宿に持って帰ったときに、手づかみで食べるのは悲しい。結局、駅ビルの100円ショップでフォークを購入したが、次回は持っていこう。

3. 紅茶のティーバッグ
わたしは紅茶中毒でかつブランドにこだわりがあるのだが、うっかり忘れてしまった。これも現地調達することになった。

4. 学会の参加証
なくても困ることはなかったが、他の参加者と話すときに、わたしもあった方が相手にとって便利だろうなと思った。

5. 時刻表
ちょっと、次の次の電車を調べるときとか手元に時刻表があればよかったと思った。iPhoneでも経路検索できるけど一覧性は紙の勝ち。

これから、出かける皆さんへ
旅を楽しんできてくださいね。

2011年9月21日水曜日

回数券入れを自作しました


回数券は10枚分の値段で、11回電車に乗れるのでお得である。
得に東京メトロの回数券は金額だけで、経路の指定がないので出発地、目的地が違っても使える。さらに乗り越しができるので、190円の回数券で乗って230円のところで降りるには40円の差額を払えばよい。したがって160円の回数券を持っていればいつでも使えるのだ。

しかし、PASMOやSuicaの普及に伴い、回数券入れが置いていない券売機が多い。しかたがないので自作したので、その作り方を載せておく。

1.紙を用意する。
綺麗な紙を探そう。下図のように切り、より綺麗な面を下にして机の上に置く。


2.折り紙のように折る。




最後に糊でとめれば完璧。使用開始から2週間経つが、今のところ壊れていない。

追記

切符かPASMOで乗ると、東京メトロと都営地下鉄は乗り継ぎ割引で70円引かれるから、地下鉄を乗り継ぐなら回数券を使わない方が得だ。

2011年9月4日日曜日

電源ボタンを入れて待ってたら、gnomeが立ったらうれしい(boot時にautologinする方法)

1.背景
家のマシンに限った話をすると、
  • 使い終わったら電源を落とす。
  • 私しかユーザーはいないし、sshされない。
  • 使うときは、電源を入れるとlogin画面で止まっていて、loginしてstartxとtypeし、gnome環境で生活する。
という日々を送っていた。

しかし、
電源ボタンを入れて待っていたら、gnome が立って欲しい!
ので設定した。

2.概要
/etc/gettytabと/etc/ttysを編集し、ttyv4に自動ログイン(autologin)し、~/.bash_profileでttyv4にloginしたときはlogin直後にstartxするように設定する。

3. 自動ログイン
/etc/gettytabと/etc/ttysを以下のように修正する。

--- /etc/gettytab.orig    2011-09-03 20:59:47.000000000 +0900
+++ /etc/gettytab    2011-09-03 21:08:25.000000000 +0900
@@ -164,6 +164,10 @@
 P|Pc|Pc console:\
     :ht:np:sp#115200:

+P1|Pc1|Pc1 console:\
+    :al=username:ht:np:sp#115200:
+
+
 #
 # Wierdo special case for fast crt's with hardcopy devices
 #

--- /etc/ttys.orig   2007-01-12 16:42:20.000000000 +0900
+++ /etc/ttys    2011-09-03 21:08:55.000000000 +0900
@@ -37,7 +37,7 @@
 ttyv1    "/usr/libexec/getty Pc"        cons25    on  secure
 ttyv2    "/usr/libexec/getty Pc"        cons25    on  secure
 ttyv3    "/usr/libexec/getty Pc"        cons25    on  secure
-ttyv4    "/usr/libexec/getty Pc"        cons25    on  secure
+ttyv4    "/usr/libexec/getty Pc1"        cons25    on  secure
 ttyv5    "/usr/libexec/getty Pc"        cons25    on  secure
 ttyv6    "/usr/libexec/getty Pc"        cons25    on  secure
 ttyv7    "/usr/libexec/getty Pc"        cons25    on  secure
patch形式になれていない人へ
diff の読み方は、/etc/ttysの例でいくと、
@@ -37,7 +37,7 @@ は「/etc/ttys.origの37行目から7行分と/etc/ttysの37行目から7行分を表示しています」という意味だ。
そのあとは、「-で始まる行は、ttys.origにあってttysにない行、+で始まる行はtty.origにはなくてttysにはある行です。他の行は両方のファイルにありますが、どの行かわかりやすい用に表示しています」という意味だ。
つまり、40行目のPcをPc1にするように、エディタで編集しろと言うことだ。

上は
$ diff -u /etc/ttys.orig /etc/ttys
の出力をコピペしたもので、unified context という形式で、patchを当てるときに
使う形式でもある。diffとpatchのマニュアルに目をとおしておくこと。

これでboot直後に、ttyv4に自動ログインするようになった。
参考 昔々のhandbook http://docs.freebsd.org/doc/3.0-RELEASE/usr/share/doc/ja/handbook/handbook172.html

4.gnomeをたてる
私は、default shell としてbashを使っているので、loginしたときに~/.bash_profile が実行される。なので、~/.bash_profileに以下のように追記する。

if [ `tty` = "/dev/ttyv4" ]; then
        startx
fi
これで ttyv4 でログインした時に限り、ログイン直後に startx が実行されるようになる。

csh、tcshの人へ
.login に正しい書式で、同様に書けばよろしい。if文の書式は自分で調べてること。

以上、/etc/ttys、/etc/gettytab、~/.bash_profileの3ファイルを書き直せば、
電源を入れると、gnomeがあなたを待っている。さあrebootしよう。

5.注意
UNIXマシンに詳しくない同居人がいる人は、あなたのプライバシーが暴かれる可能性が増大します。電源を入れて黒い画面で login: と表示されたら手も足もでない人は多いですが、gnomeが立っていたらファイルを見ることは簡単です。
しかし、パートナーがUNIXに詳しい場合はLiveCDで起動して、HDDをmountしてすべて見ることができるので、あまり危険度は変わりません。気にしないでよいでしょう。

Xserver をlocalhostのclient以外が使う場合は注意が必要です。上のように、rootでautologinして、、、と思うかもしれませんが、うまくやらないと、正当なユーザ以外でもXserverを使えるようになったり、他のユーザのウインドウをとったりすることができてしまうようになります(例えば xinit 以外で Xserver を立てた場合など)。
上記のように、個人ユーザで startxする分には大丈夫ですが、気をつけてください。


2011年8月31日水曜日

FreeBSDにlinux由来のソフトウェアを入れようとすると、perlのpathのせいでしくじる

 1.FreeBSDにlinux由来のソフトウェアを入れようとすると、perlのpathのせいでしくじる

今日は、ffmpeg を install しようとして、失敗した。
(portupgrade は楽だが、成功率は100パーセントではない)

multimedia/ffmpeg の場合は、texi2pod.pl の一行目に
#!  /usr/bin/perl -w
とあるのだが、FreeBSD での perl 本体の場所は、/usr/local/bin/perl である。
($ type perl
としてみるがよい。昔は/usr/bin/perl だったらしいが、少なくとも8.2では/usr/local/bin/にある。)

perl script の path が正しくなくてmakeが通らないことは、ports systemを使わないでlinux用のソフトウェアを source codeからcompile、installをしようとするときにも、しばしばある。

2.対策
(1)
source codeがあるならば、*.pl という名のファイル内の "/usr/bin/perl" を "/usr/local/bin/perl" に置換してしまえばよいのだが、毎回やるのは面倒くさい(一行ですむけど)。よってこの方法は不採用。

(2)
# ln -s /usr/local/bin/perl5.14.1 /usr/bin/perl
# ln -s /usr/local/bin/perl5.14.1  /usr/bin/perl5
一見やる気ないが、これで万事OK。

(3)
(2)でいいのだが、perlをportupgradeするたびに(2)をするのは面倒くさい。なので /usr/local/etc/pkgtools.confの AFTERINSTALL のところに
        'lang/perl5*' =>
          'ln -s /usr/local/bin/perl5* /usr/bin/perl',
と書いておけば、perlのversionが6に上がるまでは安泰だ。

3.参考文献
ports の不具合の報告 http://www.freebsd.org/cgi/query-pr.cgi?pr=131331

4.追記
ふつうは、perlのmake optionで
USE_PERL on
になっているので、上記対策は必要ないらしい(/usr/ports/lang/perl5.14.1/Makefile を参照)。けれど、なぜか/usr/bin/perl がなかった時のために記事は残しておく。pkgtools.confは編集しないで様子見がよろし。

2011年8月23日火曜日

Mathematicaをssh越しに使うにはlocalhostにfontのinstallが必要だ。

Mathematica(http://www.wolfram.com/index.ja.html) を sshでXをとばじて使うには、 localhostにmathematica用のfontを用意する必要がある。

概要はhandbook(http://www.freebsd.org/doc/ja/books/handbook/linuxemu-mathematica.html)に書いてあるが、下の様に適当にやっても動く。なおマシン構成は、
server : FreeBSD 8.2, Xorg 7.5, Mathematica 4(古い!でも不定積分はできる)
localhost : FreeBSD 8.2, Xorg 7.5

1. fontをserverからコピーする
server のどこに fontがあるかを調べるには、server:/etc/X11/xorg.confを見る。
Section "files"のFontPathにそれらしい記述があるので、例

----ここから server:/etc/X11/xorg.conf ----
Section "ServerLayout"
        Identifier      "秘密"
        Screen      0   "秘密"
        InputDevice     "Mouse0" "CorePointer"
        InputDevice     "hhk" "CoreKeyboard"
EndSection

Section "Files"
        RgbPath      "/usr/X11R6/lib/X11/rgb"
        ModulePath   "/usr/X11R6/lib/modules"
        ModulePath   "/usr/local/lib/xorg/modules"
        FontPath     "/usr/local/mathematica4/SystemFiles/Fonts/X/"  <-
        FontPath     "/usr/local/lib/X11/fonts/misc/"
        FontPath     "/usr/local/lib/X11/fonts/TTF/"
        FontPath     "/usr/local/lib/X11/fonts/OTF"
        FontPath     "/usr/local/lib/X11/fonts/Type1/"
        FontPath     "/usr/local/lib/X11/fonts/100dpi/"
...(続く)
----- ここまで server:/etc/X11/xorg.conf ----

localhostに同じdirectryを作って、中身をすべてコピーするよろし。 上の例だと
# mkdir  -p /usr/local/mathematica4/SystemFiles/Fonts/X/
# rsync -azv username@server:/usr/local/mathematica4/SystemFiles/Fonts/X/ /usr/local/mathematica4/SystemFiles/Fonts/X/

2. xorg.confの設定
それから、/etc/X11/xorg.conf にもFontPathの行を加えて、Xを立ち上げ直せばよろし。ただし、FontPathのなかで、一番先頭にmathematica用のfontを指定しないと、fontを見つけられないので注意。(serverのxorg.confと同じ位置に書き加えればよろし)。

2011年8月20日土曜日

コンソール画面で日本語で生活するための小道具

私の自宅マシン(FreeBSD 8.2、amd64)は、年に3回くらいgnomeなどのportupgradeをしくじって黒い画面で暮らすことになる。しかし、gnomeが壊れていても、日本語のメールの読み書きとgnomeを復旧するためのネット情報の閲覧くらいはしたい。
そんな願いを叶えてくれるのが、konとemacsとwanderlustとw3mだ。

1.kon (japanese/kon2-16dot)
konは漢字(日本語の文字)をコンソールの上に表示するためのプログラムだ。
(KON2 is a program for displaying Kanji (japanese characters) on the
console of Linux/FreeBSD. pkg_descrより)
現在 FreeBSD ports では32bit にしかインストールできなくなっているが、Makefile の
ONLY_FOR_ARCH=i386
の行をコメントアウトすれば、エラーも出ずにインストールできた(うちの子は64bitなのだ)。

kon は入力の文字コードはEUCを受け取るので、実行するプログラムのオプションが必要となる。たとえば黒い画面で
$ kon
$ lv -Oeuc japanese.txt
とすると、ファイルの中身が確認できる
$ emacs japanese.txt
は適当に出力を調整してくれるようで、出力オプションなしで大丈夫。wlもあくまでもemacs の内側で走るので、いつもどおりに使える。入力切替はいつもどおり ctrl+バックスラッシュ。

2.w3m (japanese/w3m-img)
まず、w3mは www/w3m-img ではなく japanese/w3m-img がインストールされているかを確認すること。www/w3m-imgは指定できるオプションが少なく、出力をEUCにすることができない(大変なだけだとは思う)。
$ kon
$ w3m -Oe google.co.jp
で検索する。tabキーでリンクやテキストボックスを移動できるので、テキストボックスを選択してReturnキーを押すと、窓下部に TEXT: と入力受付するのでテキストを打ち込もう。
日本語入力の方法は知らない。webメールを使っていたりして、日本語を書きたい人、ごめんなさい。

(うわさでは、uim-fepをなんとかすればいいらしい)
(失敗の記録だが、www/emacs-w3mをでemacsの入力を使おうと思ったが、w3m-m17nとja-w3m-imgが conflictして、これもうまくいかない。)
 
Xは壊れやすいし、もしもの時のためにインストールしておくと安心できる。

参考
kon 本家サイトが見つからない。
w3mの多言語拡張している人のページ。ありがとうございます。 http://www2u.biglobe.ne.jp/~hsaka/w3m/patch/README.m17n-ja
コンソールが好きそうな人たち。友達になりたい。
ある nakagami の日記 http://nakagami.blog.so-net.ne.jp/2006-08-08
oogatta の勉強日記 http://d.hatena.ne.jp/oogatta/20100520/1274311272

(2011-10-31追記)
32bitのシステム(kernel+userland)を64bitマシンにつないでも基本的には動くのだが、konは立たなかった。

より詳細に書くと、今のマシンのHDD不具合で、昔32bitマシンで使ってい(てsmart的にまずそうになったから、換装して0で埋めて捨てようと思ったまま放置してい)たHDDを差してみたら、konは灰色モザイク画面になってしまう。kernelもgnomeも完全に動くのになあ。ちなみにportupgradeしてもダメだった。うーん残念。

2011年8月15日月曜日

SFと科学1  高野史緒「ひな菊」とイヌ可移植性性器腫瘍

 SF(サイエンスフィクション)は科学の知見や仮説を、非専門家にもわかりやすく小説の形で表現されたものであるという一面を持つ。(もちろん、超光速移動など、現代科学的にはありえない設定に基づくものもある。)

したがって、SF小説には、元ネタとなる科学的な事実や新技術が存在することがあり、元ネタと対応する科学・技術に出会ったら、記録することにする。


---- ----

最近の日経サイエンス2011年9月号の「タスマニアデビルの伝染するがん」を読み、昔読んだ 量子回廊 年刊日本SF傑作選(2010年)に収載の高野史緒著の「ひな菊」とを思い出した。

イヌ可移植性性器腫瘍は、伝染するがんであり、交尾の際に相手に移動してひろがる。
小説中の描写と似ている点は、「イヌ性器腫瘍は雌に発情を促す化合物を作り出すことによって、雄にうつる確率を高めている」(日経サイエンス2011年9月号)、「おそらく(中略)最初のうちは非常に致死性が高かったのだろう。」(同)

高野史緒著の「ひな菊」ではスターリン時代のロシアの音楽院のサマースクールを舞台として、上のような特徴を持つ病気があったとしたら、、、を描いている。

参考
大森望『量子回廊 年刊日本SF傑作選』(大森望・日下三蔵編)序文 http://www.webmysteries.jp/sf/ohmori1007.html
東北大学SF研wiki-ひな菊 http://www28.atwiki.jp/tohokusf/m/pages/112.html?guid=on
日経サイエンスの紹介記事 http://www.nikkei-science.com/page/magazine/1109/201109_062.html
wikipedia 可移植性性器腫瘍
 http://ja.wikipedia.org/wiki/%E5%8F%AF%E7%A7%BB%E6%A4%8D%E6%80%A7%E6%80%A7%E5%99%A8%E8%85%AB%E7%98%8D

2011年8月12日金曜日

FreeBSD に手動で font を install する方法

1.IPA font
私は、FreeBSDをメインマシンのOSとして利用していて、かなり快適に暮らしている。(マウスを使うのが苦手なのと、セキュリティー面で安心感で、WindowsよりFreeBSDが好きだ。)

そんな日常生活を送るのに不可欠なものが、"フリーな"日本語フォントである。幸いなことに独立行政法人 情報処理推進機構(IPA) http://www.ipa.go.jp/ が無償でIPAフォントを配布しており、FreeBSD では ports からinstall することができる。(明朝、ゴシック)と(固定幅、変動幅)の直積、計4種類がある。

しかし、2チャンネルの芸術作品AAは、MS Pゴシックで表示されることを前提としており、IPAPGothic では表示が崩れてしまう(どちらもPropotional font ではあるが、変動幅の設定が異なるため)。

MS Pゴシックと同じ変動幅を持つフリーなフォントは古くはモナーフォントがあるが、現在は開発が停止しているらしいので、今回は IPAモナーフォントを install した。

2.install の方法
(1) download
IPAモナーフォントの本家サイトhttp://www.geocities.jp/ipa_mona/から、opfc-ModuleHP-1.1.1_withIPAMonaFonts-1.0.8.tar.gzをダウンロードする。

(2) install
$ tar xzvf opfc-ModuleHP-1.1.1_withIPAMonaFonts-1.0.8.tar.gz
$ sudo -s
# mkdir /usr/local/share/font-ipamona/
# mv opfc-ModuleHP-1.1.1_withIPAMonaFonts-1.0.8/fonts/*.ttf /usr/local/share/font-ipamona/
# ln -s /usr/local/share/font-ipamona/* /usr/local/lib/X11/fonts/OTF/
 (OTF はOpen Type Font の略なのでOTFの下にした。どこでもいい。)
(3) ためしてみよう
firefox でアスキーアートのあるページ (例:あなろぐま http://l19.chip.jp/chidejika/)を表示して
Edit -> Preference -> Content -> Fonts & Colors で IPAMonaPGothic を選んでみよう。

(4) トラブルシューティング
/etc/X11/xorg.conf のSection "Files" に FontPath "/usr/local/lib/X11/fonts/OTF/" がなければ追記すべし。

3. おまけ
フリーの日本語フォントみたいな、作るのにお金はかかる(手作業だから、お金を払って外注する)けど、あればみんなが役に立つことは、税金でやるべきことであると思う。

4. 参考文献
IPAフォントのページ http://ossipedia.ipa.go.jp/ipafont/index.html
IPAフォントと異字体 http://ossipedia.ipa.go.jp/ipamjfont/
IPAモナーフォントの本家 http://www.geocities.jp/ipa_mona/
アスキーアートの例(あなろぐま) http://l19.chip.jp/chidejika/

2011年8月7日日曜日

wordファイル(.docファイル)をtxtに変換する方法 -> wvWare

非windows ユーザーにとって、よくあるイラっとする瞬間の一つは電子メールでwordファイルが送られてきたときである(同じくらいよくあるのイラっとする瞬間は、flash が固まって、$ pkill npviewer するときである)。

そんな時は
1.windows マシンを立ち上げて、word を立ち上げて読む
編集する必要がある時は、この方法に限るのだが、非力なノートPCが立ち上がるまで待つの苦痛である。
あと、ウイルス対策はしてあるとはいえ、ちょっと怖い。

2.OpenOffice で見る
レイアウトは崩れるとはいえ、内容を確認する程度はできる。しかし、出張先などで、手元のマシンが非力なノートPCだったりすると、立ち上がるまで待つのが苦痛である。
ウイルス感染の確率はかなり下がるのは安心。

そして最近第3の方法としてwvWare の存在を知った

3.wvWare
wvWare とは「word document を変換するための library 」であり、AbiWord(GNOME Office に含まれるフリーでオープンソースなワードプロセッサ)の一部である。
http://wvware.sourceforge.net/
wvWare 一群の application を使うことで、word やpdf などの保存形式のファイルを、html や latex source など、unix freindly な txt 形式に近いものに変換することができる。
windows 用の同様の機能を持つものに xdoc2txt がある。

(1). install の仕方
# portupgrade -N textproc/wv
ちなみにwv2はライブラリのみインストールで、executableはできないので注意。

(2). 使い方
$ wvHtml input.doc output.html
で変換できる。ブラウザで見ると段組みや太字なども保たれている。
$ wvText input.doc output.txt
は手軽に lv で見るのにおすすめ。詳しくは
$ man wvWare
するよろし。

(3). 応用
手元にあるマシンが、Xが死んでいる、あるいはXやopenofficeが載らないくらい非力なとき
kon(日本語をconsole で表示するプログラム、japanese/kon2-16dots、32bit machineのみ)+emacs(editors/emacs)+wanderlust(emacs 用のmailer、imapにも対応、mail/wanderlust)+wvHtml+w3m(pager/text-based WWW browser、www/w3m)で
黒い画面で日本語の手紙を読めて、wordの添付ファイルも読める。

Xは載るけれど、OpenOfficeを使うには非力な時、あるいは待てないとき
wvHtml+web browser(firefoxやepiphanyなど)で word ファイルが読める。

メールサーバにlogin できるシステムで、wvWareとw3mを入れてもらえた場合
ssh することで、添付ファイルを手元にダウンロードしないで内容を確認できる。

参考
FreeBSD ports最新ニュース textproc/wv http://blog.livedoor.jp/freshports/archives/1897769.html
wvWare の公式サイト  http://wvware.sourceforge.net/
2php : wvWare(wvHtmlなど) のインストールの仕方・使い方 http://2php.jp/install/wvware.html
Abiword の公式サイト http://www.abisource.com/ 
xdoc2txt の公式サイト http://www31.ocn.ne.jp/~h_ishida/xdoc2txt.html

追記(20110927)
wvTxetは内容に日本語が含まれるとしくじることがあるので、txtファイルを作るにはw3m(もちろん日本語対応の japanese/w3m-img/)を使った方が便利そうだ。そして、ユーザーインターフェースとしてはlessが一番便利そうだ。以上をふまえて、lessdocという自作wrapperで、わたしは暮らしている。

#!/bin/sh
# lessdoc.sh
for i; do
    TMPDIR=`mktemp -d /tmp/tmp_lessdocXXXX` || exit 1 
    if ! wvHtml $i $TMPDIR/tmp.html; then
    echo "You need to install wvWare !!!"
    else
    w3m -dump $TMPDIR/tmp.html |lv -Outf
    fi
    rm -r $TMPDIR;
done

2011年8月6日土曜日

iPad2 生活の準備1 - iTunes Store でお金を払えるようにする

iPad2 は便利そうだという結論になったので(今度記事にする予定)、買う準備を始めることにした。まずは iTunes Store でお金を払う手段について調べた。

オンライン決済はかなり普及していて、身の回りでもオンライン決済を利用する人は多い。
でも私は基本的に the Internet は危険なところと思っていて、ネットショッピングをしてもカード番号を打ち込んだことはない。
amazon -> 必ず、コンビニ払い、コンビニ受け取り。住所も削除してある。メールアドレスもフリーメールのアドレス。
航空券 -> 予約はオンラインでして、旅行代理店で決済。クレジットカードで払うこともあるが、ある程度生協を信用しているから。
宿 -> ビジネスホテルの予約はほぼネット予約を使う。値段が全然違うから。でも正確な住所は書かないこともある。現地で現金払いできるところにしか基本的には泊まらない。

そもそも、オンライン決済でなくても、信用できそうなところで高額な買い物をするときしかクレジットカードは使わない。生協、鉄道会社(定期券)、くらい。

あとは、Suicaで買い物もしないなあ。何も悪いことはしていないけど、情報が生じることが嫌だ。でも edy は特定のスーパーの店舗でのみ使っていて、無記名でその店舗での買い物情報が集まるくらいは便利さとのトレードオフでぎりぎり許容範囲である。

さて iTunes Store でお金を払う方法を調べた。

手段1.2枚目のクレジットカード
オンライン決済用のバーチャルカード
http://www.smbc-card.com/nyukai/add/virtual/index.jsp
を限度額の小さい2枚目として持とうかと考えたが、1枚目の限度額を下げれば良い気もして保留。使い分けると、情報が盗まれたときの被害が多少は減るような気もするので、そのうち作るかもしれない。

手段2. Vプリカ
http://vpc.lifecard.co.jp/guide/use.html#guide_check
「プリペイドでクレジットカードとして使える」という宣伝文句に惹かれたが、現金でプリペイドすることはできず、別のクレジットカードで支払うという仕様。
それって何がうれしいか考えたが、2枚目のクレジットカードと同じで、使い分けると、情報が盗まれたときの被害が多少は減るような気もする、ということか。2chのスレ
http://toki.2ch.net/test/read.cgi/credit/1309483837/
を読んだが、エロサイト用か。1のバーチャルカードより使う可能性は低い。

手段3. iTunesカード
そう、ここまで調べてから、iTunes カードの存在を知ったのだ。
http://store.apple.com/jp/browse/home/shop_ipod/itunes_cards
これが必要十分ではないか。現金で、セブンイレブンや家電量販店で買える、プリペイドカード。私はこれが欲しかった。
参考) iTunes Storeでハッキング被害に遭わないためにいますぐできる3つの方法+α http://www.ttcbn.net/no_second_life/archives/3119

ということで iTunes カードで、iTunes Storeでお金を払える見通しがついた。

しかし、「頻繁にクレジットカード情報流出!」と聞くが、みんなよく怖くないなあ。金銭的には損はしないけど、個人情報が漏れることが「気持ち悪い」と私は思うのだ。感覚と価値観の問題だから、とやかく言わないけど。

2011年7月21日木曜日

"Startup Applications" で立ち上げた xclock を "Always on Top" かつ "Always on Visible Workspace" にしたい。 -> devilspie を導入した

やりたかったこと
デスクトップに時計が常駐していると便利なので、多くのデスクトップ環境では端に時計表示があることが多い。
しかしながら私は「あなろぐ時計」が欲しいので、xclock 愛用している。
今までは Gnome の Startup Applications として xclock を起動していたが、
「全てのワークスペースで」「(firefoxなど他のアプリケーションのウィンドウに隠れず)いつも最前面に」xclockが常駐して欲しいと考え、devilspie で実現することに成功した。

wmctrl

まず、「gnome startup application commandline always on top」などで検索してみたのだが、なかなか望みの答えにたどり着けない。command line は gnome の startup applications はコマンドを書くようになっているからである。
検索の結果 wmctrl がまず候補に上がって、実際にインストールしてみた。(# portupgrade -N x11/wmctrl)
wmctrl は「ウインドウマネージャーにコマンドラインからちょっかいを出す道具」である。
wmctrl 本家 http://tomas.styblo.name/wmctrl/
コマンドラインからXのウインドウを操作する(kwt hrtk さんのブログ、trial and error の記事)  http://techno-st.net/2008/12/18/-x-wmctrl.html

「いつも最前面に」は wmctrl 実現できたが、「全てのワークスペースで」が実現できなかった。
ちなみに、いつも最前面には
$ wmctrl -r xclock -b toggle,above
とすればよい。

Devil's Pie
さらに検索した結果 Devil's Pie (x11-wm/devilspie)の存在を知った。
Gnomeでウィンドウを操作する(Matsue Trisen さんのページ)  http://headoffice.matsue-torisen.co.jp/~naruse/Estab/Tips/devilspie.html
Devil's pie でGnomeのウィンドウを操作 http://sites.google.com/site/fesnote/GNU_Linux/setup-debian-lenny/devilspie

devilspie では
以下のスクリプトを ~/.devilspie/xclock.ds として保存し、
$ devilspie &
と実行すればよい。
スクリプトの中身 ↓
(begin
  (if
   (is (application_name) "xclock")
   (begin
     (pin)
     (above)
    )))
スクリプトの中身終わり

まとめ
「全てのワークペースで」「いつも最前面に」ある xclock を gnome の起動時に立ち上げるには

1.上記内容のファイル ~/.devilspie/xclock.ds を用意する

2.gnome の toolbar の System -> Preference -> Startup Applications -> add
で以下の二つを書く
(1).
Name: devilspie
Command: devilspie
Comment: (空欄でよい)
(2).
Name: xclock
Command: xclock -geometry -0+0
Comment: (空欄でよい)

これで時計が常駐できた。やったね。

環境
FreeBSD 8.2
gnome 2.32.1
wmctrl 1.07
devilspie 0.22

余談
私は Scheme を愛してやまないのだが、devilspie は lisp っぽい設定ファイルで素敵だ。

2011年7月18日月曜日

バス特と定期とどちらが得か?

バスの定期券は鉄道に比べて、一般的に高い(気がする)。
また、PASMO用(Suicaでも同じ)の「バス特」という制度もあり、どうするのが一番お得なのか分かりにくい。
一度、きちんと計算しておこうと思っていたので、連休を利用して計算してみた
(嘘つきました。一時間もかからずにできました)。

前提
・都区内の都営以外の民営バス会社(小田急バス、東急バス、京王バスなど)は、ほとんど一回210円均一の料金で乗れる。
・通勤定期券(一ヶ月)は45回分、通学定期券(一ヶ月)は36回分で設定されている。
・バス得の制度はPASMOで利用したとき、おまけがつく制度。旧バスカードのおまけと同額(5000円払うと5850円分乗れる)だが、暦月ごとにリセットされてしまい、バスカードほどは得ではない。バス会社によって違う。今回は小田急の場合で計算した(が、他の会社でも大体同じ)。
http://www.odakyubus.co.jp/pasmo/pasmo2006-12.htm#ticket (小田急のバス特)
http://www.keio-bus.com/pasmo/page04.html (京王バスのバス特)

結果
 横軸が乗る回数、縦軸がかかる金額。線の種類は上から順に
現金(赤)、PASMO(黄緑)、定期券大人(青)、定期券学生(ピンク)
結論
学生は21往復、大人は26往復するならPASMOより定期券の方が得だ。一月の平日の数は平均30日×5/7-1日(祝日)=21日であることを考えると定期券は得ではない。
定期券は未来に乗るかを判断しなくてはならない。天気が良ければ歩こうかと思うかもしれないし、飲みすぎて終バスがないかもしれない。やっぱり、PASMOがよいと私は思う。

参考
今回の計算に用いたスクリプト。お行儀悪いけど、せっかくなので載せておく。
#!/usr/local/bin/bash
omake=0;
bustoku=0;
regular=0;
one=210
for i in {1..60}
do
    charge=$one;
    regular=`expr $one + $regular`;
    if [ $omake -gt $one ]; then
    omake=`expr  $omake - $one`;
    charge=0;
     elif [ $omake -gt 0 ]; then
        charge=`expr $charge - $omake`;
        omake=0;
    fi
    
    toku_make=`expr $bustoku % 10000`;
    if [ `expr $toku_make / 1000` -ne `expr \( $toku_make + $charge \) / 1000` ]; then
        omake=100;
        if [ `expr $toku_make / 1000` -eq 4 ]; then
            omake=450;
        elif [ $toku_make -gt 5000 ]; then
            omake=170
        fi
    fi
    
    bustoku=`expr $bustoku + $charge`;
    echo $i $regular $bustoku 9450;
done 
 

2011年7月11日月曜日

メールの安全性について

メールの安全性(盗聴、改ざん、なりすまし、否認を防ぐ)を確保するための手段はいくつかある。何があるかを調べたのでメモしておく。

中間者攻撃による攻撃は、PKI(公開鍵基盤)を用いない限り防げない。

DKIMは、送信メールサーバはメールの内容に、送信メールサーバのもつ暗号鍵でsignetureをつける。送信メールサーバを管轄するDNSサーバに公開鍵を置いておく。受信メールサーバは、Fromに書いてある送信メールサーバを管轄するDNSサーバの公開鍵と証明書で、送信メールサーバを秘密鍵を持っているサーバとして認証する。
オレオレ公開鍵でも中間者攻撃がなければ、文面改竄検知が可能。

SPFはFromに書いてある送信メールサーバが本当に送信メールサーバであるかを、Fromに書いてある送信メールサーバを管轄するDNSサーバに確認する。文面改竄検知は不可能。
RFCではExperimentalの扱いだから「ついてないと受け取らない」はやるべきではない。

ヘッダから手動で安全性を確保するなら、
1. Received を上から追いかけ、変なところを通っていないか調べる。
2. Received の最下行の送信者のIPからdomain nameを正引きする。($ whois xxx.xx.xx.xx)
3. 2の結果をdigする。($ dig example.com txt)
文面改竄検知は不可能


私見では、文面改竄されたら困るものはたいてい見られ困る級のものだから、そもそも暗号化して送れと思ったのだが、見られていいものに、中間者がウイルスファイルを添付するとかは攻撃としてありうる。これはオレオレDKIM級で防ぐことができるものだ。
あと、ヘッダから手動で確認はSPFに負けてないと思うがどうだろう。

ちなみに某検索最大手は DKIM(PKIによる認証)をしている。
某航空会社は SPFに対応している。
某I機構、某大学は 認証なし。しっかりしよう。

参考文献
DKIMについて RFC4871
http://www.ietf.org/rfc/rfc4871.txt
SPFについて RFC4408
http://www.ietf.org/rfc/rfc4408.txt

追記(2011年7月12日)
SPFの主目的は「Fromを偽装したスパムを弾くこと」らしい。SPFはその目的にはかなった手段だ。
それから、中間者攻撃は「技術的に可能だけれどもかなり大変。悪人がコストをかけても改竄したいと思わなければやらない」。だから普通はあまり気にしなくてよい。楽にできて、やらないよりマシな技術というものはたくさんあるから、それはやったらいい。

2011年7月5日火曜日

クラウドコンピューティングと(動画)ファイル共有の未来

先日、友人にドリームジャンボのCMを紹介しようと思った。
今はもう放送されていないが、幸いYoutubeでとってあったので、URLをメールで送った。
http://www.youtube.com/watch?v=K0swXbQmbaQ


クラウドコンピューティングの時代だなあ。

URLと動画Fileの関係は、C言語におけるポインタとデータの関係に同じだ。
別の関数がデータにアクセスするためには、データを直接やりとりせずに
データの所在地を示すポインタのやりとりだけで済ませた方が、
memory spaceとdata copyにかかる時間の節約にもなるので、
ポインタは非常に便利である。
同様に友人に動画を見せたい場合もURLをポインタとして渡せば充分だ。

必要なら、関数と同じように勝手にlocalでcopyをとればいいだけだ。

しかしながら、未だに、クラウドコンピューティングは
サーバーがサーバー群であり、ネットワークがインターネットである
サーバークライアント方式だという理解のままである。





また、技術とは別の所だが、YouTubeなどの動画(ファイル)共有システムには、

著作権法上の問題がある。CMなどは広告主がインターネット上にアップロード
してくれればいいのだが、改変されるのが嫌なのだろう(ほかにも出演者との契約とか
もあるだろうが)。
すべての再生可能なデジタルデータは技術的には改変可能なので
(暗号化しても再生可能だということは、最終的には単純なRGBデータになる。
再生ソフトとOSがバイナリでのみ配布されないかぎり、RGBを盗むことは可能
(例えば、copy不可のpdfだって画面キャプチャーしてデータを保存することは原理的には
できる。プログラムとして出回っているかは知らないが) 。
世の中には数多の動画編集ソフトがある)、それが嫌なのだろう。

しかしながら、法律と取り締まりを厳しくするか、動画再生ソフトを企業が独占販売すれば
改変されたものが出回らなくなるはずだ。そうなったとき、インターネット上の動画共有が
どうなるのか楽しみでもある。

2011年6月24日金曜日

uim* を v.1.7 にあげたら日本語が入力できなくなった -> portdowngrade した

ひさしぶりに ports を上げてみた。 2011年6月3日にチェックアウトして。
そうしたら、日本語入力ができなくなったのだ。

今回上げたもののうち怪しいのは以下の uim 関係の4つ
ja-uim-anthy-1.5.6_3                <   needs updating (port has 1.7.0)
uim-1.5.6_3                         <   needs updating (port has 1.7.0)
uim-gnome-1.5.6_4                   <   needs updating (port has 1.7.0)
uim-gtk-1.5.6_3                     <   needs updating (port has 1.7.0_1)

オプションを変更したりしたけれど、どうにもこうにも直らない。
(あとで分かるのだけれど、uimの --without-anthy は関係ないようだ)
しょうがないので portdowngrade で元に戻して一件落着。
(もとはv.1.5だったけど、v.1.6で大丈夫だったので、今はv.1.6が入っている)
anoncvs.jp.FreeBSD.org はcvsに失敗するから、ほかのサーバーを試してみよう。

# export CVSROOT=:pserver:anoncvs@anoncvs.tw.FreeBSD.org:/home/ncvs/
# cvs login (パスワードはanoncvs)
# portdowngrade japanese/uim-anthy (v.1.6.0を選んだ他も同じ)
# portdowngrade textproc/uim
# portdowngrade textporc/uim-gtk
# portdowngrade textproc/uim-gnome
# pkgdb -uU
# portupgrade -f uim*

これでまた日本語が入力できるようになった。めでたしめでたし。

参考ページ
portsのダウングレード(FreeBSD覚書)
 http://ml37.exblog.jp/3447065/
portdowngradeをためす(tota diary)
 http://rtfm.jp/~tota/diary/20031204.html#p05
Anonymous CVS(FreeBSD handbook)
 http://www.freebsd.org/doc/ja/books/handbook/anoncvs.html

ブログを始める

ブログを始める。

その理由を 最初の投稿として書こうと思う。
先日、uim まわりのバージョンを1.7に上げたら、日本語入力ができなくなってしまった。
半泣きになりながら、もとのバージョンにもどしたのだが、その際インターネット上のたくさんの方のブログの記録に大変お世話になった。
私もインターネット社会を構成する市民となり貢献していこうと考えたので、情報発信の場としてここにブログを始めようと思う。

なお、ここには個人情報は書かないつもりだが、友人や知人に身元がバレても問題ないことし書かない。
主に
・FreeBSD との戦いの記録
・読書記録と感想文
・考えたことの記録
・その他の趣味の記録とアイディア
などを書くつもりだ。

読者の方、こんにちは。
あなたに読んでもらえてうれしい。言葉は書く人と読む人がいて初めて意味を持つ。
人は相互作用の中で生きているのだ。