2012年3月16日金曜日

FreeBSD 9.0RELASEで日本語manを使う



eucJPだと問題無いらしいですが、ja_JP.UTF-8だと日本語manが文字化けします。


その問題に対する、とりあえずのワークアラウンドはできたのでメモ。


まず日本語マニュアルを追加します。ここでインストールした以外の雑多なマニュアルも含めて日本語マニュアルは一般に/usr/shere/man/ja以下にEUC-JPでインストールされます。



pkg_add -r http://home.jp.freebsd.org/%7Ekogane/JMAN9/ja-man-doc-9.0.20120115.tbz


EUC-JPのマニュアルをコピーしてUTF-8に変更します。copy先のディレクトリ名をja_JP.UTF-8にする事で標準搭載のmanによって自動的に認識されるようになります。



cd /usr/share/man
cp -r ja ja_JP.UTF-8
find ja_JP.UTF-8 -name '*.gz' -exec gunzip '{}' ';'
find ja_JP.UTF-8 -name '*.[0-9]' -exec nkf -Ew --overwrite '{}' ';'
find ja_JP.UTF-8 -name '*.[0-9]' -exec gzip '{}' ';'
nkf -Ew --overwrite ja_JP.UTF-8/whatis


manで使われているgroffはバージョンが古く日本語に正常に対応できないっぽいので、portsから新しいバージョンのgroffを入れます。



cd /usr/ports/textproc/groff
make install


新しいgroffを使うように/usr/bin/manを書き換えちゃいます。


#ちなみにmanはFreeBSD9.0以降ではシェルスクリプトで実装されてます。


変更点はgroffを/usr/local/bin/groffに置き換えて gorffに-Tオプションを渡しているところに同様に-Dも渡すだけです。



333c333
< NROFF="$NROFF -T$nroff_dev"
---
> NROFF="$NROFF -D$nroff_dev -T$nroff_dev"
936c936
< NROFF='groff -S -P-h -Wall -mtty-char -man'
---
> NROFF='/usr/local/bin/groff -S -P-h -Wall -mtty-char -man'
940c940
< TROFF='groff -S -man'
---
> TROFF='/usr/local/bin/groff -S -man'


スクリプト系言語でシステムが記述されてると改造が楽でいいですねぇ。OSという性質上シェルスクリプトに限定されてしまうのが残念ですが、LuaをFreeBSDのOS標準搭載のシェルスクリプトとして採用しようだとかいう話も上がったりしたりしてるようですし。だんだん楽しくなっていきそうですね。





2012年3月6日火曜日

日本の数学は大丈夫なのか を読んで 



http://bakera.jp/ebi/topic/4726



難問です。知っていれば解けるし、知らなければ無理な問題でしょう。



と言われていますが、機械系の工学部だと図学の授業を受けるので簡単に解けます。(私の母校は学部1年でやった気がする)それ以外の学部は大変なのかもですね。





ただ、その正答例(http://mathsoc.jp/comm/kyoiku/chousa2011/answer.pdf)が気にくわないです。コンパスを入れる数が多すぎて、作図するうちにずれて美点減点を食らう可能性が高いです。平行線をターゲットとなる線分に平行に1本引く方がもっと作図の手間を省けます。


とりあえずの解法を考えてみました。だいぶ手間が減るはずです。(もっとエレガントな解があるかもしれません。)







  1. ターゲット線分(黒)に中心がある円を2つ書きます(ピンク)

  2. 二つの円(ピンク)の交点を通る縦線(青)引きます

  3. 縦線(青)とターゲットの線分の交点を通る円を描きます (ここまで円のサイズは全部一緒)

  4. 円の交点を通る横線(青)を描きます(これはターゲット(黒)に平行です)

  5. よく観察すると円の交点は横線(青)を3等分しています

  6. ターゲット線分(黒)と三等分された横線(青)の端っこを結ぶ直線を引きます(オレンジ 2本)

  7. オレンジ2本の交点から、横線(青)と円の交点にむかって直線(緑)をひきます

  8. オレンジと緑の直線はターゲット直線を3等分しています


ということで、だいぶ作図の手間が減りました。





ところでなぜ作図の手間に注目するのか?と言うと、図学での作図はプログラミングでの算法にたとえると、数値解法で式を解くときの手順の数に相当しします。その手順は多ければ多いほど計算速度も精度も通常は落ちてしまいます。なので、作図の手間は少ない方がエレガントなのです。


なにが言いたいかというと「問3」の正答例はださい、その事のほうが「日本の数学は大丈夫か?」と言いたくなるところだよねっと・・・・