Monthly Archives: 11月 2008

問題は、躁なんです。

Pocket

春日武彦の「問題は、躁なんです 正常と異常のあいだ」を読んだ。

あちこちで支持されているので買ったのだが、薄かった。

内容もだらだらとしていて、系統立っているような気がしないし、話のタネに出てくるデータが古いことが多い。

しかも、自分が直接診察したのではなしに、週刊誌とかに出てくるような事件を引いては、この人は躁だったんじゃないか?と続けるのだが、これじゃ単なる噂好きの親父の与太話に思える。

自分の患者の話を書くのは、いろいろと問題があるだろうが、たとえば「平気で嘘をつく人たち」などは、プライバシーに配慮しつつ、自分の扱った患者の話を書いている。

ちょっと興味のある話が出てきて、ついに来た!とワクワクして読んだら、他の人のこれこれという本に影響されてこの話を書いた、なんて記述が続いたりする。

昔の資産食いつぶし型か?と思ってWikipediaで調べてみたら、案の定、年に1~2冊のペースを10年程度続けている。ちょっとこれは。

No tags for this post.

csup(cvsup)でのports、srcのアップデートを早くするために

Pocket

2014/3/20追記
なぜだかこの記事が未だにアクセスされているので追記。
もうFreeBSDではcsupは使われませんので注意のほどを。
追記ここまで

ここでも書いたが、portsのアップデートはcsupにしている。

で、csupを少しでも早くするために、refuseの設定の他、fastest_cvsupも使っている。

このコマンドはperlスクリプトで、カントリーコードを与えて実行すると、自分の環境で反応の速いcvsupサーバ上位3つを返してくれる。

/usr/ports/sysutils/fastest_cvsupからインストールできる。

実行例。

[flageo@xxx ]$ fastest_cvsup -c jp
>>  Querying servers in countries: jp
--> Connecting to cvsup.jp.freebsd.org [210.224.172.75]...
- server replied: OK 17 0 SNAP_16_1h CVSup server ready
- time taken: 56.67 ms
--> Connecting to cvsup2.jp.freebsd.org [203.216.196.85]...
- server replied: OK 17 0 SNAP_16_1h CVSup server ready
- time taken: 23.71 ms
--> Connecting to cvsup3.jp.freebsd.org [59.106.2.11]...
- server replied: OK 17 0 SNAP_16_1h CVSup server ready
- time taken: 24.14 ms
--> Connecting to cvsup4.jp.freebsd.org [133.1.240.15]...
- server replied: OK 17 0 SNAP_16_1h CVSup server ready
- time taken: 28.51 ms
--> Connecting to cvsup5.jp.freebsd.org [210.161.150.4]...
- server replied: OK 17 0 SNAP_16_1h CVSup server ready
- time taken: 46.06 ms
--> Connecting to cvsup6.jp.freebsd.org [59.106.2.11]...
- server replied: OK 17 0 SNAP_16_1h CVSup server ready
- time taken: 29.57 ms
>>  Speed Daemons:
- 1st: cvsup2.jp.freebsd.org
- 2nd: cvsup3.jp.freebsd.org
- 3rd: cvsup4.jp.freebsd.org

 

で、-qオプションを与えてやると一番速いとこだけを返すようになるので、これをcsupに食わせてやる。

実行例

# csup -h `/usr/local/bin/fastest_cvsup -q -c jp` -g /etc/supfile-ports
-=(oooooo)=(cvsup6.jp.freebsd.org)=-
Connected to 203.216.196.85
Updating collection ports-all/cvs
(略)

その時々でネットワークの状況だったり、サーバの混み具合が違い、結果として速いサーバも変わってくるので、csup実行時にチェックできるのがいいと思う。

なお、ここで書いたrefuseの設定は以下の通り。

こうしておくと、不要なファイルのダウンロードはしない。

$ cat /var/db/sup/refuse
doc/bn_*
doc/da_*
doc/de_*
doc/el_*
doc/es_*
doc/fr_*
doc/hu_*
doc/id_*
doc/it_*
doc/mn_*
doc/nl_*
doc/no_*
doc/pl_*
doc/pt_*
doc/ro_*
doc/ru_*
doc/sr_*
doc/tr_*
doc/zh_*
ports/arabic
ports/chinese
ports/french
ports/german
ports/hebrew
ports/hungarian
ports/korean
ports/polish
ports/portuguese
ports/russian
ports/ukrainian
ports/vietnamese
No tags for this post.

FreeBSDのgames

Pocket

2chのFreeBSD関連スレを徒然に眺めていたら出てきたgrdc。

コンソール画面いっぱいにデジタル時計を表示するコマンドで、なんだかすごく衝撃を受けた。

こんなのがあるとは知らなかった。

ただ、コマンドがgamesに属するので、FreeBSDをインストールしたときのオプションによってはgrdcがインストールされていない場合もある。

俺の場合もそうだった。

インストールする方法はいくらでもあるが、俺はソースだけは全部インストールしておいたので、コンパイル後インストール。

[flageo@xxxxx /usr/src/games/grdc]$ ls
Makefile        grdc.6          grdc.c
[flageo@xxxxx /usr/src/games/grdc]$ sudo make
(中略)
[flageo@xxxxx /usr/src/games/grdc]$ ls
Makefile        grdc.6          grdc.c
grdc            grdc.6.gz       grdc.o
[flageo@xxxxx /usr/src/games/grdc]$ sudo make install clean
install -s -o root -g wheel -m 555   grdc /usr/games
install -o root -g wheel -m 444 grdc.6.gz  /usr/share/man/man6
rm -f grdc grdc.o grdc.6.gz grdc.6.cat.gz
[flageo@xxxxx /usr/src/games/grdc]$

オプションは-sでスクロール、-tで12時間フォーマット、数字nを引数で与えてやるとn秒後にストップする。ただスクロールさせると表示が間に合わないかもね。とのこと。なんだそれ。

容量確保とか、ビルドの時間を短くしたいとかで、gamesはいつも削除の対象にしていたが、改めて/usr/src/gamesを眺めてみると大した量はない。そういえばgames配下のものは、可能な限りportsに移したという話を聞いたこともある。FreeBSD自体の考えでは、ベースシステムとそれ以外を厳密に分ける。結果として、いまだにperlがベースに入ってないくらいなので、無駄なものが入っていればすぐにやり玉にあがったろう。

そういったわけで、/usr/src/gamesの下でmake install cleanして全部のコマンドを入れた。

中でも有名なのはfortune。

さっそくインストールして実行してみた。(訳俺)

ウェイター「コーヒーと紅茶、どちらになさいますか?」

客A 「紅茶がいいね」

客B 「僕も。カップが清潔か、きちんと確認してくれたまえ。」

数分後

ウェイター「紅茶を二つお持ちしました。清潔なカップを頼まれたのはどちら様ですか?」

…。

あとは文字列をパンチカードに変換するとか、カエサル暗号化するとか、すてきなコマンドがあった。

No tags for this post.

白い巨塔

Pocket

山崎豊子の白い巨塔を読んだ。

もともとは財前が裁判にも教授選にも勝ったところで幕だったところを延ばしたらしい。それで良かったのかは分からない。

この作者は、こういう欲望渦巻く話が一番似合うと思う。

その中でも、立場をかさに着た慇懃無礼、臆面の無さ、権力者に対する阿諛追従、といったようなエリアが特に生き生きとするような。

ただちょっと単純すぎるような気もしていて、今読んでいる「華麗なる一族」の方が少しひねってあるように思う。

俗物戦争とは一歩引いた立場として里見などの人物が描かれるが、これも現実味がないというか、どちらかというと「沈まぬ太陽」の主人公の方が、なかなか見ないタイプではあっても、しっくり来るように感じる。

No tags for this post.

若草物語

Pocket

若草物語を読了できず挫折した。

最近は本をブックオフオンラインで買うことが多い。

1500円で送料無料になるので、それに満たない場合には、予めリストしておいた100円とか150円程度の、いつかは読もうと思っていた本で値段を調整する。

この本も、名の知れた世界名作系だしということで対象にしていた。

が、冒頭から眠い日常をだらだらと書かれて心が折れた。

つかみの事件でもあれば良かったんだけど。

南北戦争時の小説であれば「風と共に去りぬ」があるし、あっちの方が燃える。

No tags for this post.

深い河

Pocket

遠藤周作の深い河を読んだ。

とてもよかった。

何人も出てくる登場人物のどんな思いも、生と死とまとめて受け入れるガンジス川で表現される何か。

深い河 (講談社文庫)

突拍子もない話をするが、ガンジス川は汚いと思うし、ここで沐浴しろと言われても絶対に無理。だけど、登場人物を異端として排除した教会のロジックと、ガンジス川を汚いと思うロジックは似ているのではないかと思った。

作中に出てくる、やせ細りながらも授乳を行う醜い女神の話が印象的だった。

No tags for this post.

2つのjpeg画像が同じかどうか確かめるには

Pocket

ネタ元はfreebsd-questions@freebsd.org

ハッシュを比較するというのはアウト。

というのは、jpegファイルにはExifなどのメタデータが含まれているため、たとえ画像が同じでも、メタデータが違えばハッシュが違ってしまうから。

jheaderなどのツールを用いてメタデータを削除し比較する手もあるが、いったんbmpに変換してからdiffなりで比較するのがよい。

なぜかといえば、jpgに限らず、メタデータの含まれる画像であっても融通が利くため。

bmpへの変換はgraphics/ImageMagickに含まれるconvertコマンドが便利。

なお、ImageMagickは、デフォルトではX関連のソフトを入れようとするので、Xの不要なマシンでは注意。

Linuxの場合は適当にaptで。

No tags for this post.

インストールしたportsのpkgを作るには

Pocket

こんなことがあったので、やはり曲がりなりにもサーバたるもの、吊るしのpkgをインストールすることはやめようと思ったのだが、やっぱり時間がかかる。

そこでメインマシンのVM上FreeBSDでビルドしたものをサーバマシンに移すことにした。

ビルドするときにパッケージも作っておく方法はいくらでもあるが、すでにビルド済みのマシンでパッケージを作るのはあまり経験が無かったのでメモ。

# pkg_create -Rvb php5-5.2.6_2

このように、バージョン名も含めてターゲットを指定すると、カレントディレクトリにpkgが作成されるので、それを移す。

ただしmeta-portは指定出来ない。

なお、Rオプションは、ターゲットのportsビルドに必要な別のportsのパッケージも作る指示。

移動先マシンへのインストールが、ターゲットのportsだけでよいことがはっきりしている場合には、付けなくても可。

以下が実行例。

$ pkg_create -Rvb php5-5.2.6_2
Creating package php5-5.2.6_2
Creating bzip'd tar ball in '/usr/home/flageo/php5-5.2.6_2.tbz'
Creating package expat-2.0.1
Creating bzip'd tar ball in '/usr/home/flageo/expat-2.0.1.tbz'
Creating package perl-5.8.8_1
Creating bzip'd tar ball in '/usr/home/flageo/perl-5.8.8_1.tbz'
Creating package pkg-config-0.23_1
Creating bzip'd tar ball in '/usr/home/flageo/pkg-config-0.23_1.tbz'
Creating package sqlite3-3.6.4
Creating bzip'd tar ball in '/usr/home/flageo/sqlite3-3.6.4.tbz'
Creating package db41-4.1.25_4
Creating bzip'd tar ball in '/usr/home/flageo/db41-4.1.25_4.tbz'
Creating package libiconv-1.11_1
Creating bzip'd tar ball in '/usr/home/flageo/libiconv-1.11_1.tbz'
Creating package apache-2.2.9_5
Creating bzip'd tar ball in '/usr/home/flageo/apache-2.2.9_5.tbz'
Creating package libxml2-2.6.32_1
Creating bzip'd tar ball in '/usr/home/flageo/libxml2-2.6.32_1.tbz'

ところで、php5の場合はphp5-extensionsでインストールしたphp拡張機能も作っておく必要がある。

冒頭で述べたように、pkg_createではphp5-extensionsのようなmeta-portは指定出来ない。

そこでpkg_info -Ix php5として得られる一覧をpkg_createに渡すことを考えるが、pkg_createが取ることのできる引数は一つだけ。

なのでxargsを使う。xargsで-n 1とすれば、引数を一つずつ渡してくれる。

下記が実行例。-Rオプションはここでは外している。

$ pkg_info -Ix php5|cut -d" " -f 1 |xargs -n 1 pkg_create -vb
Creating package php5-5.2.6_2
Creating bzip'd tar ball in '/usr/home/flageo/php5-5.2.6_2.tbz'
Creating package php5-bz2-5.2.6_2
Creating bzip'd tar ball in '/usr/home/flageo/php5-bz2-5.2.6_2.tbz'
(略)
Creating package php5-zlib-5.2.6_2
Creating bzip'd tar ball in '/usr/home/flageo/php5-zlib-5.2.6_2.tbz'

こういうまだるっこしいことをせず、インストールされているportsのすべてをpkgにするには、pkg_infoにEaオプションを与えてpkg_createに渡す。

$ pkg_info -Ea|xargs -n 1 pkg_create -vb
Creating package ORBit2-2.14.14
Creating bzip'd tar ball in '/usr/home/flageo/ORBit2-2.14.14.tbz'
Creating package aalib-1.4.r5_4
Creating bzip'd tar ball in '/usr/home/flageo/aalib-1.4.r5_4.tbz'
Creating package alacarte-0.11.5_1
(略)
No tags for this post.

php5パッケージにはApache向けphpモジュールが含まれていない件について

Pocket

知らなかった。

FreeBSDを載せてサーバにしている自宅マシンは、CPUがセレロン300MHzの化石だ。

OS自体のアップグレードを自前ビルドでやるのはとうの昔にやめていて、snapshotからインストールする状態だった。が、そろそろportsのビルドも時間がかかるようになってきたので、こちらもpackageでバージョンアップするようにした。

そして先日、php5をpackageでバージョンアップしたところ、Apache上のphpスクリプトが動かなくなってしまった。

これはphp5のパッケージにはlibphp5.soが含まれていないのが原因。

なお、パッケージに含まれるファイル一覧は、pkg_info -Lで得られる。

ただ、引数としてバージョンも含めたパッケージ名を与えなければならないので、/var/db/pkg配下のディレクトリ名を調べるか、pkg_info -Ixで調べる。

$ pkg_info -L php5|grep libphp5.so
pkg_info: can't find package 'php5' installed or in a file!
$ pkg_info -Ix php5
php5-5.2.6_2        PHP Scripting Language
$ pkg_info -L php5-5.2.6_2|grep libphp5.so
$

まあ、確かにApacheモジュールのインストールを標準設定にするわけにはいかないので、これは仕方ないと思う。

というわけで、php5をportsからインストールしなおした。

pkg_info -Lの内容も当然ながら変化している。

$ pkg_info -L php5-5.2.6_2|grep libphp5.so
/usr/local/libexec/apache22/libphp5.so
No tags for this post.

Thinkpad X30でUbuntu 8.04がフリーズしまくる件について

Pocket

Windows2000をインストールしていたThinkpad X30のHDDがクラッシュしたので、古いHDDに換装してUbuntuのインストールを試みた。

7.10→8.04→8.10というようにアップグレードする予定だったのだが、何度やってもフリーズする。

古いHDDのせいかと別のにしても結果は同じ。

ハード的に寿命なのかと頭を抱えたのだが、ふと思い立ってググってみたら、あっさり解決した。グーグル先生ありがとう。

後述するとおり、原因ははっきりとは分からないが、Ubuntu 8.04のXにおけるマウスの設定が影響しているようだ。

至れり尽くせりのUbuntuでこんなことが起こるとは思わなかったよ…。

ちなみに、上記リンクのとおり、CentOSでは大丈夫らしい。

解決法は以下の通り/etc/X11/xorg.confを書き換える。

◎マウスの設定でEmulate3Buttonsを無効に

Section "InputDevice"
Identifier	"Configured Mouse"
Driver		"mouse"
Option		"CorePointer"
Option		"Emulate3Buttons"	"false"  #この行追加
EndSection

◎キーボードレイアウトをgb(英国=グレートブリテン)に変更…だが。

#Option	"XkbLayout"	"us"  #コメントアウト
Option	"XkbLayout"	"gb"

ネタ元の発言者のポストはどうも要を得ないのだが、少なくとも俺はキーボード配列を変えなくてもよかった。まあ、参考までに。

No tags for this post.