最近の(でもないけれど)出来事/落書帳/仲間内のネタ/覚え書き/whatsnew

基本的に落書き帳/メモ帳/備忘録なので、 わりと間違っていたり、 数分後とか後日とかに見たら、 いきなり消えていたり書き換わっていたりとかあります。


Wed,02 Jan,2008

ウィリアム・ギブスン「モナリザ・オーヴァードライブ」。 相変わらず、相変わらず、 雰囲気を味わいつつ、 振りまかれたまま放置される伏線を楽しむスタイルらしい。 撮影連鎖 - コンティニュイティ (Continuity)、 迷光(めいこう) - ストレイライト (Stray Light)、 仕掛け - ラン (Run)、 変化したとき、 岩と堅いところに板ばさみ、 ヴェヴェ (Veve? Vever?, eにウムラウト)、 。 迷光は、普通の光学用語らしい。 スヌーカーは、ビリヤードのルール形態の1つらしい。 「岩と堅いところに板ばさみ」は、 英語の慣用句の between a rock and a hard place を直訳してしまった物らしく、 意味はそのまんま「板挟み」らしい。 クロムは銀白色の光沢らしい……(ja.wikipedia.org)、 ステンレスとして見ている物は、ずばりクロムの特性に由来するらしい……、 クロムの化合物で毒性が有るのは6価と4価であって、 単体や3価は毒性が無いどころか、3価は必須栄養素らしい。

Thu,03 Jan,2008

太陽電池の時計。 カタログスペックだと、 満充電から電池切れまで5ヶ月以上、になっているのに、 1ヵ月かそこらで電池切れになる。 説明書を読んでみた。 充電に必要な時間が書いてある……、 計算してみると、30日間、太陽光に当てないと、満充電にならない……。 2〜3日、せいぜい1週間しか当てていなかったよ……。 そう言えば、いつも充電レベルが MID になっていたな。
↑ Fri,11 Jan,2008 追記: あれからずっと、日の当たる場所に置いておいたら、 充電レベル HI になっていた。

Fri,04 Jan,2008

SSH のポートフォワード経由で scp したら、 Disconnecting: Bad packet length とか出て、ポートフォワードしている方の ssh が落ちた。 ssh -R x:127.0.0.1:22 して scp -P x hoge 127.0.0.1:/dev/null でさえも、同じく ssh の方が落ちる。 sshd_config や ssh_config を標準設定の物にしても駄目。 ワケが判らん……。 OpenSSH_4.7, OpenSSL 0.9.7j 04 May 2006 1MiB までなら平気、10MiB だと駄目、約6MiB でも駄目。 buffer_append_space() でこける場合もある。 ……。 両方 Compression yes にしたら起きなくなった。 ssh の方を Compression yes にすれば起きなくなる場合と、 scp の方を Compression yes にすれば起きなくなる場合があって、 よく判らん。
ヒューズ¥210-。 同じ物が別の店では¥173〜215-
コテ先クリーナー、スチールウールみたいな奴のタイプ、¥630-。
HAKKO?のコテ先復活剤(フラックスと錫の混合物) ¥550?。
HAKKO の 20/130W 即熱付き セラミックヒーター キャップ付き ハンダこて ¥2,394-。
ハンダごて。 なんか、ここ10年くらい、 BC タイプと C タイプって全然売っていない。 何でだろう。
千石の webカタログを見て気付いた。 大洋のキャップ無しコテで、別売りのキャップを付けられるタイプがあるらしい。 CXR-31/41 22/30W セラミック 定価3,000+tax 売値¥2,300-、 キャップ 定価400+tax 売値¥340-。 標準添付のコテ先は B タイプ(¥700-)だが、 別売りの交換こて先で BC タイプ(PX-60RT-1C ¥800-)と C タイプ(PX-60RT-?C ¥700-)もある……、 千石では売っていないらしい。 ……、 全部足すと¥3,440-、 普通に選ぶちょっと良いコテの、5割増の値段になるのですが。
若松の webカタログ。 HOZAN H-510 25W セラミック キャップ付き コテ先BC 定価3,045- 売値¥2,835-。 交換用ビットは BC のみ存在 定価¥535- でも売っていない。
マルツの webカタログにバグを見つけた。 表示中のカテゴリをクッキーに持たせている為、 複数のカテゴリを同時に閲覧していた場合、 表示が滅茶苦茶になる。
週末とは思えないほど電車がすいていた。

Sat,05 Jan,2008

途中駅混雑の為、5分遅れ。 なんか電車がやけに混んでいた。
唐突に昔語り。 BSD Magazine は全部で No.1〜No.20。 2004総集編¥2,800- では、No.1〜No.18 + Parody まで収録。 …… No.19 と No.20 は……。 BSD/Linux、 「新世紀覇王獲素伝説 美獲素手の拳(しんせいきはおうえすでんせつ びぃえすでぃのけん)」。
↑ 発端は、 BSD/Linux の他のティストロと比べて不利な点が気になった事。 BSD/Linux の、他のディストリビューションと比べて不利な点。 ……、 FreeBSD が Xen の dom0 に対応するか (これは 2009〜2010年頃に初期版がリリースされる予定?)、 BSD/Linux が VMWare for Linux に対応するか (鋭意作業中、でもリリース日程は不明、らしい)、 VMWare が FreeBSD に対応すれば (これは VMWare社が 「当面やる予定は無い(意訳:市場環境が変わらない限りやらない)」 と公表済み)、 ほぼ解決する気がしてきた……。 ……、 Xen だと CPU が Intel VT だか AMD Pacifica だかに対応していないと駄目なのか。
↑ BSD/Linux だと、 パッケージ類は /compat/linux 以下にインストールされると決まっているが、 それ以外の GNU/Linux distribution だと、 /usr/local や /usr/X11R6 は普通としても、 いきなり /usr に入ったりするのだよなぁ。 それに BSD/Linux 以外のディストリはモノリシック構造じゃないからなぁ……。 ……単一構造だとどんなメリットが有るかと言えば、単なる好みかもしれない。
そう言えば Ubuntu GNU/Linux のパッケージ一覧って何処にあるのだろう?。 ……。 http://packages.ubuntu.com/ らしい。 オフィシャルホームページに書かれていない気がするのだが……。

Mon,07 Jan,2008

LAN 内で、1ヶ月くらい前から "192.168.3.166:402 → 225.1.2.3:402 udp 84" なんて物が出ていたのだが。 Altiris Deployment Solution とか言う物が使うらしい。 そうかもしれないし、そうでないかもしれない。 ……。 パケットをダンプして見るの忘れてた。
Request=GetServer
MAC-Address=************
Addl-MAC-Address=
Node-Type=Workstation
だそうで。 ずばり Altiris で当たりらしい。 MS-Windows で、 複数の計算機に同じソフトウェアを一斉にインストールして管理したり、 複数の計算機で同じ環境を共用したり、 するソフトウェアらしい。 ……。 HP の計算機は、 リカバリやアップデートに Altiris を使っているっぽい記述がある……、 そちらか?、 MAC も HP の計算機だし。
電車がすいていた。

Tue,08 Jan,2008

BSD/Linux (i386) の ja-acroread7 を、 ja-acroread8 に更新してみた。 動かなかった。 ja-acroread7 に戻してみた、動かない orz。 ……。 sysctl compat.linux.osrelease=2.4.20 (Skype on BSD/Linux での推奨値)にすると、動かないらしい。 sysctl compat.linux.osrelease=2.4.2 (BSD/Linux のデフォルト)に戻すと、両方共動いた。 ただ、ja-acroread8 は、キー入力するとフリーズするので、使い物にならない。 Sat,25 Oct,2008に続く。
BSD/Linux (amd64) の ja-acroread7 を、 ja-acroread8 に更新してみた。 動かなかった。
cannot set up thread-local storage: cannot set up LDT for thread-local storage
とか、 compat.linux.osrelease を古くすると
cannot set up thread-local storage: kernel too old for thread-local storage support
とか、 出て拒絶される。 てきとーに検索した結果によると、 FreeBSD 6系列の BSD/Linux (amd64) では、TLS(SSLではない)非対応らしい。 他のディストロでも、kernel 2.4系だと非対応らしい。 ja-acroread7 に戻すしかないらしい。 Sat,25 Oct,2008に続く。

Wed,09 Jan,2008

RSA Adaptive Authentication for web とか言う物があるらしい。 利用料が10万ユーザで1年間1900万円、 トランザクション認証は別途に35%追加料金、 ワンタイムパスワード認証は別価格、 初期設定費用が 400万円、 らしい。 ユーザベース認証に関しては、 SSL 使っているのだから SSL のサーバ認証を使うべきであって、 本気でフィッシング詐欺とか中間者攻撃とかやられたら ユーザーベース認証なんぞ何の役にも立たない。 現に、ユーザベース認証と同等のサービスを行っていた銀行で、 フィッシング詐欺にやられた実例があったと思うが?…… どうだったか忘れたので要確認。 リスクベース認証の実効性ってどうなんだろう?、 こちらのばあい、 本人拒否率を下げれば他人受容率が上がり、 他人受容率を下げれば本人拒否率が上がり、 と言う生体認証と同様のトレードオフがありそうな気がする。 リスクベース認証で蹴った場合、 追加のパスワード認証(RSA の商品の場合はQ&A形式らしい)を行う事で 受容するそうで。 それはつい数ヶ月前に、 ソニー銀行でアカウントとパスワードとQ&Aの内容を盗まれて、 口座の中身をごっそり盗られたという事件が有ったばかりなわけで (この事件の場合、必要なパスワード類を書いたメモを、 キャッシュカードと一緒に持ち歩いていたらしいのだが?……)。 かと言ってリスクベース認証で完全に拒否してしまうと、 操作間違えるとか OSインストールしなおしたとか パソコン買い換えたとか 引っ越したとか プロバイダ変えたとか、 そういった場合にログイン出来なくなってしまって 利便性が下がりすぎる問題があるわけで。 不特定多数の顧客を相手にする商用ベースで考える場合、 バランスをどう取るのだろう?。

Thu,10 Jan,2008

今日の日経新聞から派生。 199ドル ノートPC ASUSTeK EeePC、 OS は専用ディストロの GNU/Linux らしい。 200ドルPCと言うのは単なるキャッチフレーズで、 実売価格は Eee PC 4G で$400前後らしい。 日本版は Eee PC 4G-X だそうで、 Eee PC 4G をベースにメモリを拡張して 2GB、 OS は MS-Window XP Home SP2 になって、 日本円で50,800円だそうで。 元の日経新聞の記事だと、 「200ドルノートPCが国内でも販売開始、値段は5万円」 と言う様な内容だったので、 どんなボッタクリなのかと思いきや。
↑ ……、 そう言えば AMD提携(主導はどこぞの大学の学者と協賛団体だったと思う)の 100ドルPC計画 (開発途上国でもPCを使った教育を可能にする為に、 安くて頑丈なPCを用意しよう、 とか言う計画だったと思う) を叩き潰す為に、 Intel連合が 200ドルPC計画をぶちあげていたっけ。
↑*2 工人舎の SA1F とか SH6 とか SH8 と比べると、 EeePC の方がサイズが数mm 小さいらしい。 重さは工人舎 約990g、EeePC 約920g。 でも、 値段は工人舎は10万円前後、EeePC は5万円前後。
FreeBSD 6.2-RELEASE on Let'snote CF-Y5 が、 今年入ってから3回目のフリーズ。 なんか 4-STABLE から 6.2-RELEASE に上げて以降、 頻繁(1〜2ヶ月に1回くらい)にフリーズする様になった気がする(泣。 それから xorg のマイナーバージョンを上げる毎に、 フリーズする頻度が上がっている気がする。 しかも今回はディスククラッシュして、 直前に作業していたファイルが消えた(泣。 まぁ、UFS2 だから、直前に作業していた分だけで済んだけれど。 ext3 だと壊滅的打撃がくるからなぁ……。
Sat,24 Feb,2007に発端。 Mon,14 Jan,2008Sat,01 Mar,2008Wed,02 Apr,2008Sun,11 May,2008に続く。

Fri,11 Jan,2008

電車の中吊広告の鉄道債。 3年0.93%……、 半年前が 1.38%だったので、思いっきり下がった様な。 日本国債残3年物が0.65%……、 こちらも半年前は 1.17%。 ネット専業銀行の定期預金(キャンペーン限定金利を含む)は、 1ヵ月0.44〜0.62%、 3ヶ月0.55〜0.90%、 6ヶ月0.71〜1.00%、 1年0.81〜1.20%、 2年0.45〜0.90%、 3年0.50〜1.00%……、 半年前の3年物の金利が現在の1年物の金利になり、 半年前の1年物の金利が現在の3年物の金利になり。 ……、 なんかごちゃごちゃと逆転現象が起きている様な……、 あれ、鉄道債より仮にも銀行預金の方が金利が高いって……。
UNIX系OS で使える、MS-Windows のバイナリの逆アセンブラ、 ようやく見つかった。 http://d.hatena.ne.jp/nozom/20070219/1171838445 逆アセンブラ - ヒビノキロク

Sat,12 Jan,2008

PD5+X バグ修正 私家パッチ

Sun,13 Jan,2008

USB接続 光学マウス 5ボタン DPI 切り替え付き ¥980-。 どうやら通常販売価格でこれらしい。
IO-DATA の 17" 液晶ディスプレイ ¥20,000-。 1280x1024 1619万色 グレアかノングレアかは不明。 DVI-D 付き 応答速度 8ms の物と、 DVI-D 無し 応答速度 5ms の物。
IBM? レノボ? トラックポイントとタッチパッド付きのキーボード が売っていた。 でも1万円越えていた。
USBメモリ 1GB が、大抵の店で ¥1,000前後 だった。
MACROSS PLUS O.S.T ¥1,180- で2枚。
ごろ寝リターンズ ¥2,980?。 5ボタンあるけれどボタン1とボタン2が2つづつあるので、 ファンクションとしてはスクロール付き3ボタンマウス。 スクロール付き5ボタンにして、 ドライバで設定いじれる様にしてあったら良かったのに……、 設定変更できなくて上手く使えない人が出ちゃうか。 上面のボタン、あの配置だと間違えて押しそうな気が。 ……、光学式であるだけでなく、DPI切り替えまで付いているらしい。
HDD。 サーバ用(オンラインと言うらしい)と 一般用の中間に、 ミッドラインとニアラインと言う系列があるらしい。 ただ、単純にサーバ用と言うと、 高信頼性重視で言っている場合と、高速性重視で言っている場合と、 あるからなぁ。 高信頼性重視でサーバ用HDDと言ったのに、 高速性重視のHDDが来たりしちゃうと、 速攻で熱で逝くからなぁ。 あと、サーバ用と行っても、絶対に不良が出ない訳ではない。 サーバ用HDD で、いきなり初期不良を引いて初期不良交換になった事が……。 業務用データサーバとかでなければ、 一般用 低消費電力モデル の方がバランスが良さそうな気が。 でもニアラインのMTBF100万時間も魅力的……、 よく見ると低デューティーサイクル時ですか……。
PD1 無し、PD2CV 無し、APD2 無し、 PD3 無し、PD4 無し、 PD5 無し、PD5X 無し、 PD5plusX ¥4,480-、 PD6 無し。 ブルーフロウ 無し、ブルフロ ファンディスク ¥1,480-、 ブルーブラスター 外箱痛み¥2,680- 通常品¥2,980-で2本、ブルブラ ファンディスク 無し。 ガジェットトライアル 無し。 火星計画2 無し、火星計画3 無し。 PD5plusX 降下中……。 ブルブラの外箱痛みは、何処が痛んでいるのか判らなかった。
日経Linux。 GNU/Linux の /etc/shadow のハッシュ強度に言及している記事が有った。 Openwall で GNU/Linux の /etc/shadow で blowfish 使うパッチ、 と言うのは、 http://www.openwall.com/crypt/ らしい、crypt_blowfish と言うらしい、 glibc-2.1〜2.1.3 と glibc-2.2〜2.3.6 対応らしい。 ……日本語だと、encryption も hashing も「暗号化」と言いかねないなぁ。 関係ないけれど、John the Ripper も Openwall だったのね。 ……。 glibc-2.7 にすれば、SHA-2 のうち、SHA-256 と SHA-512 に対応するらしいが、 Debian/Ubuntu だと testing になっちゃうので、それはまずい。 Sat,12 Nov,2005(YP)、 Fri,18 Nov,2005(YP)、 Sat,03 Nov,2007(YP)、 Sun,13 Nov,2005(/etc/passwd)、 Fri,14 Apr,2006(/etc/passwd)、 に関連項目。
月刊 航空情報。 ここ数年、置いている本屋が少ない気がする。 空関連をまんべんなく扱っているが為にオタク受けせず売れないのかな?。 鉄道系やミリタリー系は何処の本屋でも大抵置いているのだが。
レイノス → ヴァルケン → フロントミッション ガンハザード。 ガンヴァルケンとか言う物もあるらしい、 ……90年代風?、……80年代風だと思っていたよ。 ……、ガンハザードの FAQ なのか?、 ステージ脱出方法は▽で↓Bらしい……。

Mon,14 Jan,2008

GNU/Linux 2.6.17以降で ACPI S4 するには uswsusp 使うらしい。
最近のファイルシステム。
↑ ZFS。 FreeBSD は積極的に取り入れようとしているらしい。 GNU/Linux は、ZFSは黎明期に権利関係でもめていた事から、倦厭しているらしい?、 ……、 じゃなくて、単純に GPL じゃないから、蹴ったのかな?。 一応、ZFS on FUSE とか言う実装があるらしい……、 がしかし、開発やめると言う話があるらしい?。
↑*2 ext3 のジャーナリングは3つのモードがあるらしい。 それはともかくも、 ext2 → ext3 は、UFS → UFS2 と違って、 互換性(移行し易さ)最重視にした結果、 ext2 にジャーナルを取って付けただけ、 と言う状態だから(それが良いか悪いかはどうでもよい)、 既存の ext2 から journalling FS に移行する場合は ext3 が手軽だろうけれども、 新規に FS 作る場合に関しては、積極的に ext3 を使う理由にはならない。
↑ ReiserFS は、ジャーナリング処理を省略しているから、 ジャーナリング系のファイルシステムの中で高速なのだ、 と言う話があるらしい……。
↑*2 そうすると、JFS と XFS と言う物が視野に入ってくるらしい。 JFS は IBM の OS/2、 XFS は SGI の IRIX、 らしい。 Linux では /boot は ext2 か ext3 のみ対応らしい。 JFS は SELinux 非対応らしい。
↑ その辺に関する、とある ML で見つけた 2001年の記事。 ext3, ReiserFS, JFS では、 データ(メタでは無い方)の書き込みは async なので、 例えば /etc/shadow の編集中にクラッシュすると、 (セキュリティ関連用語で言う所の)見えてしまう場合がある、 らしい。 XFS では、その点は大丈夫、らしいが、 BSD系の Soft-updates と比べると、その点の完全性は、低いらしい。 ext3 ではメタデータのジャーナルの書き込みを sync で要求出すのに、 下位層は ext2 なので async で処理されてしまうらしい。 今は治ったのだろうか?。
↑ 追記(Thu,19 Mar,2009): UNIX Magazine 2006年3月号と4月号で、記事になっていた。 FreeBSD が笑っちゃうような結果、と言うのは、「やたら遅い」と言う事らしい?。 ただ、FreeBSD の場合、タイムスライスが 10ms なのだから、 周期が 20ms になる (10ms毎だとタイムスライスの持分を消費し尽してしまうので、 タイムスライス1回分他所に持っていかれる)のは ごく自然だと思うのだが……。 それでも FreeBSD の SCSI の場合は遅すぎか。   最近では、 「slashdot.jp - okky (2487) : 2009年03月14日 19時15分 (#1531001)」。 いまだに、 GNU/Linux の ext2, ext3, XFS(IDE), ReiserFS(IDE) の実装だと、 sync を要求しても sync しないらしい……。 XFS(SCSI), ReiserFS(SCSI) だと、fsync() あたりは sync するらしい。   要約記事は 「Omicron カーネル読書会/51」、 カーネルソース追っかけによる確認結果は 「Crossroad (tunefsの日記) - 2008-05-27 - ソースから見たProject DOUBT diskio」 にあった。
↑ さらに別の記事で、 XFS はスタック馬鹿食いするので、 それでカーネルスタックが溢れてしまいクラッシュした事がある、 とか言う物が……。 ……、 何かぐるっと回って、UFS2 Soft-updates が無難かなぁ、 に戻って来てしまった気が……。
FreeBSD 6.2-RELEASE が、今年入ってから4回目のフリーズ。 Thu,10 Jan,2008の続き。 しかも又ディスククラッシュした。 UFS2 の Soft-updates だから、ディスクの内容が1分間ぶん程度、 さかのぼるだけで済んではいるのだけれども。 Soft-updates なだけに、 全てのファイルが均等にさかのぼってくれたりはせず、 とあるファイルはクラッシュ直前の物だったり、 別のファイルは1分前だったり、 幾つかのファイルはコピーの為の確保完了直後で ファイルサイズは正しいのに中身が全部 00 だったり、 ごちゃまぜで、区別がつかない……。 まぁこれは、管理領域?のみをジャーナリングするタイプの ジャーナリングファイルシステムでも似た様なものだろうけれど。 クラッシュしたのが Linux の ext3 な Journalling FileSystem だったら、 もっと悲惨な事になっていただろうなぁ……(経験者は語る)、 ext3 がクラッシュした時は大抵、 ディレクトリが幾つか丸ごとぶっ壊れていたしなぁ……(回想)、 /usr とか /usr/lib とかがぶっ飛んだ事もあったなぁ……(遠い目)。
Sun,17 Feb,2008Sat,01 Mar,2008Wed,02 Apr,2008に続く。

Tue,15 Jan,2008

Linux。 昔は、リリース番号の2桁目が偶数なら安定版、奇数なら試験版、だったが、 その方式はとっくにやめたらしい。 リリース番号が3連なら試験版、 4連なら(上位3つの番号が指し示す試験版を土台にした)安定版、 らしい。 そう言えば、リリース番号の1桁目は3にならないのか?、と言う話は?。
Firefox とか uim-candwin-gtk とか、 GTK なアプリケーションで
Pango-WARNING **: failed to create cairo scaled font, expect ugly output. the offending font is 'Sazanami Gothic 11'
Pango-WARNING **: shaping failure, expect ugly output. shape-engine='BasicEngineFc', font='Sazanami Gothic 11', text='A'
Pango-WARNING **: pango_font_get_glyph_extents called with null font argument, expect ugly output
とか出て、一部の字体(漣)の文字全部が豆腐になるか、 Firefox だと 「漣フォントが使えないから代替フォントを適当に探して使うよ」 とか言う感じのメッセージがでて違うフォントで表示された。
fc-cache -fv
とかやっても、治らない。 web で検索しても、 Ubuntu系 mailing-list で「fc-cache やったか?(原文は英語)」 と言う記事しか見つからない。 手がかりが見つからないまま2時間後、突然閃いた。 ${HOME}/.fonts.cache-1 を消したら治った。 どうやら、昨日クラッシュした時に、 壊れていた(書き込み領域の確保だけした状態に戻った)らしい。 ……、fontconfig/Xft2 がらみの状態は、fc-list で確認できるらしい。

Thu,17 Jan,2008

Mac の新型ノートPC。 日本のメーカー以外で、 あんな薄型を出してくるメーカーが有るとは思わなかった。 日本以外で、あそこまでの薄型の需要は有るのかなぁ?。
ホイール付き5ボタン光学式マウス DPI 切り替え付き 通常の売値で¥980-。 アクロス AMS-SS/SW/SB の実体は、Ione Lynx-R9 とか言う物らしい。 光学の発光/読取が、マウスの中心からずれていて、 前後方向は中心だが、左右方向は上面から見て左にある。 その為、 マウスを動かす時に手首なり肘なりを固定して 弧を描く様な動かし方をする癖があると、 光学系が中心にあるマウスと比べて動きが狂う……、 でも慣れれば問題なく使える……と思う……、人によるか。 ホイールの回転のノッチが軟らかく、 ホイールボタン(第2ボタン)をクリックすると、 ホイールが回転してしまう場合がある。 追加の2ボタンとDPI切り替えボタンがホイールの手前側に有るのだが、 第7ボタンは押しにくいがなんとか押せる、 第6ボタンは押せたもんじゃない、 DPI切り替えボタンに至ってはマウスから一旦手を離さないと押せない……、 あー駄目だ、やっぱり3つとも全部、押せないわ。 Ione の英語?の説明を読むと、 「6ボタンゲーム用マウス、 普通のマウスではボタンが足りなくなるが、 このマウスなら追加のボタンで、 武器の切り替えやその他のコマンドもボタンに割り当てられる (かなり意訳、と言うより超訳か)」 と書いてあるが、 FPS アクションゲームのプレイ中に押せたもんじゃない。 マウスの側面(右利きなら左側面、左利きなら右側面)にあれば、 押しやすいものを……、 このマウス、光学系が左に寄っているから、 左側面にボタンを付ける事は難しいのか。 ……、と思ったら、 ホイールの左右チルトが第6ボタンと第7ボタンの操作になっていた、 ので、追加2ボタンはちゃんと押せる……、 ただ、第2・6・7ボタンのクリックやホイール回転に関しては、 たまに混じる……、 まぁ、どこのメーカーのどんなマウスであっても、 クリック付きホイールとかチルト付きホイールとかになると、 すべからく当てはまるのだけれども……、 第2ボタンを押す時にホイールが回転してしまったり、 第6・7ボタンを押す時に第2ボタンも一緒に押してしまったり……、 ゲームのボタン割り当てで、 押し間違いをするとマズいものを割り当てたりすると、 すこぶる危険な事になりそう。 DPI の切り替えは 400, 800, 1600 だが、 マウスドライバの感度設定をタッチパッド用に設定した状態のままだったり、 800cpi のマウスと同じ設定のままだと、 とても使いにくい。 マウスドライバのタッチパッド用設定を外すと、 この3段階はちょうど良い。 普段は 1600DPI、CAD で細部をいじる時は 400DPI、で丁度良いと思う。 でも DPI 切り替えボタンが、マウスから手を離さないと押せない場所にある……、 まぁ、 通常時は大DPI、CAD で細部をいじる時に高精細、 にする程度なら、何とか許容範囲だし、 他社のマウスで見かけるような、 CPI切り替えボタンが裏面にあったり、 通常のボタンを組み合わせて押すと切り替えになったり、 するような物と比べると、ずっと良い。 ただ、 オルタネートプッシュボタンでローテーション3段切り替えだから、 今、何DPI になっているのかは、 切り替えて動かしてみて、を数回繰り返さないと、判断できない。 しかも、抜挿する毎に 800DPI に初期化される。 こういう切り替えはモーメンタリ3点スイッチじゃないと駄目だよ……、 別のメーカーでは、LEDの色で現在のDPI値がわかる物があるらしいが、 マウスを使っている時は画面を見ているのであって、 マウスなんぞ見ていないのだから、LEDで表示したって無いも同然。 プッシュスイッチにするなら、せめて2段階にしておかないと、 何DPI になっているのか判らなくなる……、 暫く使った感触からすると、2段階にして、 1600〜2400DPI と 300〜600DPI くらいの2つがちょうど良さそうな気がする。
↑ 総評: 普通のチルト・ホイール付き光学式3ボタンマウスとして問題なく使える。 ホイールのチルト/クリック/回転の操作は、他社同様、よく混ざるので注意。 DPI切り替えは、 一休みしつつ切り替えるにはちょっと操作しにくい程度で、 使用中にダイナミックにガンガン切り替えるのは不便と言うか無理。
Sun,03 Feb,2008 追記: 時々、マウスが固まる。 2週間で2回。 抜いて差し直せばいいんだけれども、さて……。 Sat,09 Feb,2008 追記: 今日も固まった。 で、OS のログをよく見直してみたら、USB ドライバが死んでいた。 今回は抜挿しても駄目で、一旦、マシンの電源を切るまで、治らなかった……。 Sun,16 Mar,2008 追記: マシンの SpeedStep を無効にしてから3週間、 全く問題無く、一度も固まっていない。 マウスではなく、SpeedStep が原因だったらしい。 Sat,21 Jun,2008 追記: USB マウスがまたこけた。 uhub が逝ってる。 Sat,19 Jul,2008Mon,18 Aug,2008Tue,30 Sep,2008Fri,16 Jan,2009Sat,22 Aug,2009に続く。
↑*2 Sat,19 Jan,2008 追記: 分解してみた。 ネジは手前側の大きい方の滑り部分の両端付近に合計2本、 ツメはケーブルが生えている部分の両脇の第1ボタンと第3ボタンの付近に合計2つ。 バラす時にネジを見つけられず (滑り部分を剥がそうとしたら、板だけはがれて両面テープがはがれず、 しかも両面テープが割と厚くてネジが透けては見えなかった、 それをネジが無いと誤解した)、 ツメだけ外して、隙間から中を除いてネジの位置を探していたら、 ネジ止め部分が割れて、筐体がバラバラになった……(泣。 基板はリフローハンダ付けだった……、 安物の中国産マウスにしては珍しい。 石は、 光学処理用の定番の奴が1つと、USBマウス処理用の奴が1つで、 マウス処理用の方は、ウエハーを基板に貼り付けた後に樹脂封止するタイプだった。 光学処理用は PAN301 BSI-208 D628G832C とか書いてあった。 アジレントではなく、PXI PixArt Imaging Inc. とか言う台湾の会社らしい、 アジレントから特許侵害で訴えられた事があるらしい (結審したか係争中かは不明)。 どうやら、光学処理用の石自体は 400/600/800cpi 切り替えで、 PAN301ASI-204 だとデフォルト 400cpi、 PAN301ASI-208 だとデフォルト 800cpi、 PAN301A が 5V系、PAN301B が 3.3V系、 らしい……、 ので、このマウスの 1600DPIは、USBマウス処理用の方で作っている値か?、 確かに、1600DPIに設定すると、1pixel 単位で動かすのが困難だが、 でも、できないわけでもなく……、 どういう処理なんだ?。 未実装のコネクタが1つ(Vcc1ピン+信号3ピン)あった……、 何だろう?、セカンドホイール実装用?。 ホイールのノッチを堅くできないか見てみた所……、 このホイール、チルト機構になっているじゃん、と言う事で、 ようやくホイールチルトで第6ボタンと第7ボタンになる事に気付いた。 ホイールのノッチは、 ホイールの中空軸タイプのロータリーエンコーダユニット自体が持っている ノッチ機構を使っていたので、いじれなかった。
↑ Mar,2008 追記: 使い始めてから2ヶ月経ったが、 ホイールの回転が緩すぎるのと、 ホイールの手前のボタンは全く使わなくなった、 の2点を除いては、 私の好みにあっていて使いやすい。 従来のマウスドライバで移動量の加速設定をすると、 操作量と移動量が非線形になって使いにくかったが、 このマウスなら、 起動時にいちいち cpi 切り替えをするのが面倒だが、それさえ行えば、 操作量と移動量が線形になって操作しやすい。 それにネットサーフィンしている時は、ホイールチルトがとても便利。 ……。 ただ、別のマウスを使っている時に、 カーソルを目的の場所に合わせられなくなったり、 思わずホイールチルトしようとして痛い思いをしたり、 する事が多くなりつつある……。 まぁ、キーボードでも同じ様に、 お気に入りでないキーボードを使った時に、 思わずお気に入りのキーボードと同じ操作をしてしまい、 操作を間違える事が多くなっているけれど。 キーボードとマウスを、計算機の数だけ用意しないと駄目かなぁ?、嫌だなぁ。

Fri,18 Jan,2008

国民年金、 Tue,20 Nov,2007の続き。 クレジットカードでの自動支払(前納)ができる様になったらしい。 前納のみらしいが、 従来の金融機関窓口での支払や、預金口座からの自動引き落としでも、 前納のみだったし後払いすると延滞税(延滞割増料金)取られていたし。 前納1年度分の割引と、前納半年分の割引もできるらしい、 が、口座振替割引は付かないらしい。 大抵のクレジットカード会社の場合、 各社のクレジットカードの利用ポイントも付くらしい。 数年前までは、 国民年金や各種公共料金や税金等をクレジットカード払いできる様にすると、 クレジットカード会社に支払う手数料の分、 実質の支払金額が目減りしてしまう勘定になるか、 支払金額がクレジットカードの手数料分割増にする勘定になるか、 してしまうから、 クレジットカード払いへの対応はできない、 と言っていたが……、 口座振替割引の分をクレジットカード会社の手数料に割り振って、 勘定を合わせたのかな?。 計算してみた。 約0.31〜0.35%ぶんの割引が無くなる代わりに、 クレジットカード払いができる様になっている。 口座振替の受取側の手数料は、 概ね0.5%ぐらいだと言う話がある(明確な情報源無し)。 合計すると0.8〜0.9%くらいをクレジットカード会社に手数料として払っても、 収支は合う……、 でもよく聞く話だとクレジットカードの受取側の手数料は 1〜3%くらいらしい(明確な情報源無し)のだが。 クレジットカード会社がなにがしかの割引をしていないと、 収支が合わない?(根拠無し)。 あるいは、納付率(納付金額)を上げる為の経費として、 クレジットカード払い手数料を支出するのか?(根拠無し)、 それは国民年金の制度上できないと思うが?(根拠無い事項に対する憶測)。 利用者から見た場合、 一般的なクレジットカードの場合、 大体0.5〜1.0%相当のポイントが付くから、 ポイントを活用できるならば口座振替よりもクレジットカード払いの方が得。

Sat,19 Jan,2008

ガンヴァルケンを動かしてみた。 完成度やゲームバランスは、7面(まだ未完成らしい)を除き、良いと思う、 こういうのそこそこ好き。 コンティニューが保存できない……、ので、 私みたいに1日で全面クリアできないヘタレは、非常に苦しい。 多くの敵に囲まれると、ガード解除すると瞬殺され、 解除しないとそのままハメ状態で動けない、になるのは、下手だからか?。

ガンヴァルケンを検索している時に見つけた、 GUN ARMS を動かしてみた。
擬似3D表示(モデリング計算はフル3Dの様ですが)の 横ビュー全方位任意スクロールのシューティングゲーム。 コンセプトやゲームシステムは、こういうの大好き。
MS-Windows XP 以降だと DEP 保護違反が出るので、 DEP 無視リストに登録しなければならない。   逆アセンブルして見た感じでは、 圧縮か、あるいは改造に対するプロテクトか暗号化か、 もしくはインタプリタ処理用の何か、が入っているらしく、 ランチャ起動後に 本体バイナリをデータセグメントに読み込んで変換処理?を行い、 データセグメント上のバイナリコードを実行している模様。 DEP違反が出て当たり前な、行儀の悪い構造。 ……。 もしかして HSP - Hot Soup Processor で書かれている?。 ……。 ファイル構成からすると、 HSP2 と Forsythia3D と dsoundex を使って書かれているっぽい (確証無し)。 となると、DEP違反とか後述の痛いバグとかはどれも、HSP2 の問題か……。
コンティニューが保存できず、コンティニュー回数も2回まで。
時々、MS-Windows を巻き添えにクラッシュしてブルーバックになり、 ディスククラッシュする……、 コンティニューが保存できないから、また1面の先頭からやりなおし。
時々、壁にめり込んだり、床下に突き抜けて無限に落下し続けたりして、 ゲームの終了以外、何もできなくなる……、 ゲーム終了すると、 コンティニューが保存できないから、また1面の先頭からやりなおし。 落下と横ブーストを同時に行うと、特に壁にめり込みやすい気がする。 あと、壁に張り付いた状態で爆風をガードすると、 これまた壁にめり込みやすい。
何だかんだ言って、1面の先頭からやりなおしさせられてばっかり。 と、言うわけで、全面クリアするには、 アクションゲームの腕だけでなく、 数多のバグに当たらないというリアルラックまで必要になる……、 まぁ、コンティニュー一切無しでできるぐらいの凄腕なら 問題無いんでしょうけれど。
キーカスタマイズができないので、キーボードでやっていると、 入力できない操作がある (指が届かないとか、 ダイオード無しキーボード使っているから キーボードのせいで3つ以上の同時押しが無視されるとか)。
防御(ガード)と滞空時のモード切り替えの操作が同じキー/ボタンなので、 防御しようとして滞空モードになってしまうとか、 ガード中に敵の弾を受けて空中に吹き飛ばされて (斜面に立って攻撃を受けるとしばしば発生する。特に5面と7面) 勝手に滞空モードになってしまうとか、 タコ殴りされる事が多い。
多くの敵に囲まれると、ガード解除すると瞬殺され、 解除しないとそのままハメ状態で動けない、になるのは、下手だからか?。 下手だからだろうなぁ。
防御状態だと、射撃方向の上下操作すらできなくなるので、 一瞬だけ防御解除して射撃してすぐ防御、と言う戦法を取る場合、 本格的に射撃を行う前に、 一瞬だけ防御解除して射撃方向をずらして防御して、 を延々繰り返さなければならない。
3面のボスステージは、ゲームバランスが悪い気がする。 5面やそれ以降は、たどり着いた事が無い (たどり着く前に MS-Windows ごとクラッシュするか、 コンティニュー回数を使い切って1面に戻されるか、 してしまう)ので不明。
何かと悪い面ばかり目についてしまったが、 画面解像度やテクスチャ辺りを最低ランクに設定すれば、 AthlonXP や Pentium4 辺りの 3000+/3.0GHz クラスのマシンでも、 スピード感ある感じで(バグの件を除けば)快適にプレイできると思う……、 今時はその程度のスペックは当然なのか?……、 元々このゲームの作られ始めた時期を考えると……。

Sun,06 Sep,2009 追記:
1回のプレイに2時間近く消費する(バグ等でやり直しした場合を除く)ので、 プレイ時間を確保するのがきつい。
ちまちまやっていって、面を覚えて、攻略法を覚えて、 ようやく全クリ。
Gun Arms の全面クリア後の、面セレクトが可能になっているスコアデータ
ボス面のセレクトはできない。 武装のセレクトもできない。

00000000  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00000030  00 00 00 00 01 13 08 06  00 00 00 00 00 00 00 00  |................|

攻略法:
6面につくまでノーコンティニューが基本。駄目ならやり直し。
私の場合、全面クリアに2時間かかる。
1面:
ブーストを使った高速機動 (注意:「機動」は、的確に目的地に移動する、の意)が上手ならば、 パイルバンカーを取得後は、残り全てを無視してボスまで直行可能。 ゲージが半分くらいまで減るかもしれないが、余裕でボスを倒せる。 2段目末端の箱にあるショットガン?を取っておくと、ボス戦が楽になる。
ブーストが苦手ならば、地上敵は出現直後にパイルバンカーで瞬殺、 空中敵は1機出現毎に、ガードをしつつ迎撃して確実に撃墜、 していけば、クリア。
1面ボス:
ガードして行動パターンを見ていれば、 いつ、こちらから安全に攻撃できるのかすぐ判るので、 あとはガードと攻撃を適切に行えば問題無し。
ただし、爆風の強い攻撃を受ける際にマップの端にいると、 吹き飛ばされて壁の中か床下に埋められてしまい、 違う意味で終わるので注意。
2面:
列車から落ちると、いきなりゲームオーバーなので注意。
これも、ブーストを使った高速機動で、雑魚全部無視してボス直行可能。 中間地点くらいにあるショットガン?と救急箱?を取っておくと、 ボス戦が楽。
ブースト苦手なら、敵が1機出現する毎に必ず潰していけば、 クリア。
2面ボス:
これもガードして行動パターンを見ていれば、 いつ、こちらから安全に攻撃できるのかすぐ判るので、 あとはガードと攻撃を適切に行えば問題無し。
注意が必要なのは、空中機雷?みたいな奴。 触れるとかなり痛いので、これだけは空中ブーストで避ける必要がある。 迎撃で破壊は、多分、間に合わない。
3面:
ダッシュ不可。落ちても死なない。
地道に、敵が1機出現する毎に必ず潰していくしかないと思われる。
分岐は、上が楽。落ちると空中機雷?地獄。
最後に箱が3つあり、レーザー?、救急箱?、フレイムランチャー?、 だったと思う。救急箱?は必須として、レーザー?を取ると、 ボス戦序盤が楽。
3面ボス:
ダッシュ可能。
最初のミサイル/ガトリング/ガトリングのコンボは、 ガードしつつ、敵の攻撃の隙間でレーザー攻撃。
レーザー砲は、画面ギリギリからレーザー攻撃で破壊。 この辺でレーザーの弾切れになる。
5連装砲塔の2連続だか3連続は、 敵が攻撃して来ない圏外ギリギリから、横ダッシュで一気に崖下に入り込み、 敵の攻撃の隙で砲身を攻撃、攻撃が来たらガード。 爆風で崖下から離れた場合、敵の攻撃の隙が無くなるので、 あとはガードしっぱなしで、爆風で吹き飛ばされて、 敵の攻撃圏外に出るまで待つのが楽。
またレーザー砲があるので、ジャンプとブーストで崖っぷちの上側に迫り、 ガードしていると、敵の攻撃が頭上を通りすぎる位置まで押し返されるので、 あとはミサイルだけはガードしつつ連射して破壊。
そのままミサイルだけはガードしつつ連射していれば、 ミサイル/ガトリング/ガトリングのコンボのうち、 ミサイルとトリング1つまでは壊せる。 あとは敵の攻撃の隙間でダッシュ&攻撃、敵のガトリングが来たらガード、 で、ガトリングを破壊。
残りはメインブリッジとミサイル砲台3基だが、 面倒なので、ダッシュしてメインブリッジに密着、 ミサイルはガードしてあとは連射してブリッジだけ破壊すればクリア。
4面:
ダッシュしながら敵や防壁の出現直後に撃破、 していれば楽に 1/3 くらいまで到達。
破壊不能物の上にいる爆弾?バラまいている奴は、 攻撃方向を前方ちょっとだけ斜め上に固定しつつ、 ジャンプ&滞空モードで頭と砲口だけ上に出せば、撃破できる。
階段状部分のミサイラーも同様。
2/3 くらいで縦穴を落ちるが、機雷だらけ。左端に密着していれば、 当たらなかったと思う。
縦穴を落ちた直後の箱の内、左端はレールガン?なので、ボス戦に取っておき、 ミサイルとフレイムランチャー?で残敵と空中敵を1機ずつ撃破。 掃討完了後に一旦戻ってレールガン?を取って、ボス戦へ。
4面ボス:
毎度お馴染み、基本はガード、隙が出来たら攻撃。
ただし、爆風の強い攻撃を受ける際にマップの端にいると、 吹き飛ばされて壁の中か床下に埋められてしまい、 違う意味で終わるので注意。
5面:
強制横スクロール面。
平坦部では延々ガード。 斜面に入ると、 狙ってくるタイプの敵の攻撃が外れやすくなるので、 隙を見て狙い撃ち。
以下、全5回ループ。
但し、平坦部にある小さな台地状の部分?は、 台地状の部分から降りる側で敵の攻撃をガードで受けると、 滞空モードになってしまってダメージ食らいまくりになる事が有るので 注意。
5面ボス:
初っ端にミサイラーヘリ?が1〜5機くらい出現する事が有る。 邪魔なので、取り敢えずボスは無視して潰した方が良いかも。
ボスの攻撃は単調なので、 毎度お馴染み、基本はガード、隙が出来たら攻撃。 歩行器みたいな奴は、どうやら無敵らしい。
慣れると、5面ボス戦終了まで 30〜45分。
6面:
空中面。落ちたら即ゲームオーバー。   敵を全滅させると、最終ゲートが破壊可能になる。 敵出現位置は固定。 機雷は数に入るので必ず破壊。 アイテム箱と障害物の箱は、敵の数に入っていない気がする。   つまるところ、面覚えゲー。
前半部では数回連続ジャンプすると空中敵が出現してくる事が有る。
背景が壁に変わった直後、機雷?が有る縦穴は、 下に落ちるともう1個機雷が有る。これも破壊する必要が有る。 この機雷を破壊した直後に右にブーストすると、足場が有るので乗る。 足場に乗り損ねて落ちると即ゲームオーバー。
足場からジャンプした所にも足場が有り敵がいる。
下の足場から右にブーストして行くと、また足場があり、 敵がてきとーに居て、上にあがっていくと、 箱組みたいな足場になる。ここを左にいくと、先程降りた縦穴に着く。
この辺の地帯を抜ければ、あとは落ちても下が床になっているので安心。
左側の細い隙間の下に、機雷が2機と箱が1つ。 右側の細い隙間の下に、ミサイラーと箱が1つ。
さらに右は、大きな箱状の足場で段々になっており、 爆弾をばらまいているやつが数機いる。 避け損なうと痛い。 この地帯は、最下部から最上部まで敵がいる。
敵を全滅させれば、右端下端のゲートが破壊できる様になる。
6面クリアだけで 30分前後。
6面ボス:
ボスは左端から右端に移動し続ける。 それからボスの左側の黒い所は無敵で、弾も通り抜けない。 黒い部分の中央と上下の黒い部分の隙間は、たまに弾が通り抜ける。
足場は、下、上、下、上、と交互に無限に続く。 ここで連続ジャンプで高く上がると、 高確率でブルーバックになって MS-Windows ごと落ちた。 まぁ、この面に着く以前でも、 十回か二十回くらいはブルーバックで落ちたけど。
ボスのミサイル発射装置の下半分は、 最初の下の足場から右方向に撃ち続けていれば、そのうち壊れる。
何とかして空中機動を行い、上の足場に移動すると、 またボスが右方向に移動していってしまう。
ボスのミサイル発射装置の上半分は、 この上の足場から右方向に撃ち続けていれば、そのうち壊れる。 これで、ボスはミサイルを撃ってこなくなり、 機雷とガトリング?だけになる。
あとは、 上の足場から次の上の足場まで横空中ブースト移動を繰り返してボスを追い越し、 ボスを追い越した状態のまま、 射撃方向を左下に固定したまま撃ちっ放しにし、 上の足場から次の上の足場まで横空中ブースト移動、 を繰り返せば、そのうち撃破できる。
空中機動が上手ければ、敵中枢に接近してパイルバンカー、で、 楽に破壊出来るかもしれないけれど。
6面ボス戦クリアだけで 30分前後。 慣れたり、速攻をかけたりすれば、もっと速いかもしれませんが。
7面その1:
一旦、左に行くと、救急箱?。
あとは、右方向に斜面を登ったり降ったりしながら、 敵が1機出現する毎に必ず破壊、をしていけば、クリア。
途中に破壊可能な防御壁?が何度が出現するので、 ダッシュして突破は多分無理。
7面その2:
最初に左に行くと、そのまま無限落下して、違う意味でゲーム終了。
右に行って、階段状の部分を登りながら、 空中敵や待ち伏せしている地上敵を破壊しながら登頂を目指す。
射撃方向を斜め上に固定し、ジャンプ/滞空移動で足場の下側に張り付くと、 砲口が足場の上に出て、いきなり敵に射撃やパイルバンカーが当てられる。
7面クリアに 30分前後。慣れれば、もっと速いかもしれませんが。
7面ボス:
敵のコアみたいな奴の台座に登ってしまうと、 敵の攻撃をガードしてもコアのビーム?連射で空中に吹き飛ばされて 滞空になってしまい、ゲージを 1/3 だか 1/2 だか削られる。
中央付近でうろうろしていると、上と下から猛攻撃を食らい、 ガードが解除できなくなる。
敵のコアみたいな奴の台座の足元に張り付き、 斜め上に砲口を向けて射撃すると、コアに弾が当たる。 あとは、敵の攻撃パターンを覚えて、攻撃が来る時はガードする。 これで楽勝。
あるいは、左端からガードしつつ狙い撃ちでも、楽勝かも。
5分もかからずクリアしたと思う。
エンディング:
このゲームの醍醐味は、 ゲーム本編のダッシュ・ブースト機動とか、 弾撃ちまくりとか、 3D描画なメカとか、 です。
エンディングに期待しない様に。

Sun,20 Jan,2008

FreeBSD 6.3-RELEASE 出た。 7.0-RELEASE は遅延しているらしい。
確定申告。 国税庁の確定申告書の作成ページに、 外国税額控除の作成機能が追加されていた……、 需要あるのかなぁ?。
↑ そして、 バグではなくて仕様です、な、計算間違い?が、今年も残っている……、 海外から受け取った(海外に投資する日本の投資信託も含む) 配当金・分配金に関して、 日本の金融機関を使っていれば、 大抵は地方税の特別徴収をされており申告不要なのだが、 あえて確定申告する事もできる、 ……、 (証券特別減税の有無や所得税減税の状況に応じて、 年収695万だか330万だか195万だか130万だかそのくらい以下、 の人は、確定申告した方が得になるが、 それ以上の年収がある人は確定申告しない方が得……、 FX とか外貨預金とかと違って、 納税が済んでいるので確定申告しなくても脱税ではない)、 ……、 その様な確定申告をする場合、 国税庁の確定申告書の作成ページで入力すると、 所得税の配当控除の金額が間違っている (配当控除率が実際よりも大きな率で計算されてしまい、 配当控除額が認められる額よりも大きくなってしまう)か、 住民税の配当割額控除の金額が間違っている (特別徴収された分が加算されない)か、 どちらかになってしまう……、 配当所得の計算の仕方に関した私の理解が間違っているのだろうか?。 ……、 よくみたら、 国税庁の確定申告書の作成ページの配当控除の扱いって、 配当控除率10%の場合しか扱えないし。
↑ 平成18年度の場合は、 所得税減税有り証券優遇税制有りでなので、 配当控除無し外国税額控除有りならば年収195万円以下、 配当控除無し外国税額控除無しならば年収130万円以下、 ならば確定申告して総合課税にした方が得。 それ以上は申告せずに源泉分離課税のままにした方が得。 ……。 平成19年度では配当控除の計算が変わったらしい。
↑*2 web で検索していたら、 yahoo の QA でも、同じ事が書かれていた。
↑*3 個別の配当の額に、個別の配当控除率をかけて、 全ての配当に関して合算した値を、「(所得税の)配当控除額」に書く。 総合課税か源泉分離課税かに関わらず、 配当収入の総額を、「配当に関する住民税の特例」に書く。 特別徴収された配当割額を、「(住民税の)配当割額控除」に書く。 だから、配当控除と配当割額控除が連動しているのはバグだな。
↑*4 単純に住民税と言っても、 県民税と市民税の合算の事だったりするから、 さらに市県民税を分けて考え始めると、 さらにわけの判らない事に……。
↑*5〜2 Thu,24 Jan,2008 追記: 修正されていた。 ついでに、 「配当等の種類」で指定した順番に、自動で並び変わる様になっていた……、 しかも、 「所得の内訳」を既に記入し終わったデータを読み込んで、 「配当等の種類」を修正して並びが変わると、 「所得の内訳」のデータが壊れるし。 さらに、 分離長期(短期)譲渡所得、 株式等に係る譲渡所得、 先物取引に係る雑所得、 退職所得、 がある場合は、 外国税額控除ができなくなっていた。
↑ 平成19年度の確定申告の配当控除: いわゆる普通の株や特定株式投資信託(株価指数連動型上場投資信託の事)は10%、 国内の割合と株の割合が両方共50%以上の投資信託ならば5%、 国内の割合と株の割合が両方共25%以上の投資信託ならば2.5%、 特定外貨建等証券投資信託(国内の割合か株の割合のどちらかが25%未満)や REIT や外国株式は無し。
↑*5 web でその辺を検索した所、 どこぞのブログやそのリンク先やトラックバック元?先?辺りで、 外国株式や外国投資信託の配当金・分配金の 外国税額控除をするのが流行っているっぽいが……。
↑ 配当金・分配金の外国税額控除をすると、 該当の配当金・分配金は総合課税となり、 所得税と同じ税率が適用されると思ったが。 手続きをしない場合は 国外の源泉徴収が10%と 国内の源泉徴収が9%で 合計の税額が19%。 手続きをする場合は 国外の源泉徴収が10%と 国内の源泉徴収が9%と 配当控除が0%で、 所得税率が0(所得0),15(所得195万以下),20(330万以下),30(695万以下),以降省略%だから、 徴収不足分の0(所得0),6(所得195万以下),11(330万以下),21(695万以下),以降省略%が追加徴収されて、 外国税額控除限度額が0(所得0),10(所得195万以下),10(330万以下),10(695万以下),以降省略%になって、 合計の税額が0(年収103万以下。9%還付の控除額10%が最大3年繰越),15(所得195万以下。4%還付),20(330万以下。1%追加納付),30(695万以下。11%追加納付),以降省略%。 年収に配当金・分配金やその他を加えた額が概ね298万円を超える人が、 配当金・分配金の外国税額控除をすると損をする、 概算すると ボーナスが4ヶ月分なら税引前月給19万円以上なら 手続きをすると損をする筈なんだが……。 ↓*4 に続く。
↑ 優遇税率の10%が廃止されて20%になると、 手続きをしない場合は 国外の源泉徴収が10%と 国内の源泉徴収が18%で 合計の税額が28%。 手続きをする場合は 国外の源泉徴収が10%と 国内の源泉徴収が18%と 配当控除が0%で、 所得税が0(所得0),15(所得195万以下),20(330万以下),30(695万以下),以降省略%だから、 徴収不足分の0(所得0),0(所得195万以下),2(330万以下),12(695万以下),以降省略%が追加徴収されて、 外国税額控除限度額が0(所得0),10(所得195万以下),10(330万以下),10(695万以下),以降省略%になって、 合計の税額が0(年収103万以下。18%還付の控除額10%が最大3年繰越),15(所得195万以下。13%還付),20(330万以下。8%還付),30(695万以下。2%追加納付),以降省略%。 概算で、ボーナス4ヶ月分なら税引前月収27万円くらいが境か。 ↓*3 に続く。
↑*2,*1 外国税額控除の繰越をしていたりすると、 さらにややこしい計算になる……。 外国税額控除限度額の概算は、 その年の国外所得総額に所得税率をかけた物になるから……。 前年と本年に同じ金額の国外所得と国外源泉徴収があったと仮定して、 前年は丸ごと全部くりこしたと仮定、 本年の所得税額の総額が外国税額控除よりもずっと大きいと仮定、 すると。 外国の源泉徴収が10%と 国内の源泉徴収が9%と 配当控除が0%で、 所得税が0(所得0),15(所得195万以下),20(330万以下),30(695万以下),以降省略%だから、 徴収不足分の0(所得0),6(所得195万以下),11(330万以下),21(695万以下),以降省略%が追加徴収されて、 外国税額控除限度額が0(所得0),15(所得195万以下、前年ぶんが10%の本年分が5%),20(330万以下、前年ぶんが10%の本年分が10%),20(695万以下、前年ぶんが10%の本年分が10%),以降省略%になって、 合計の税額が0(年収103万以下。9%還付、控除額10%が残2年繰越、控除額10%が最大3年繰越),0(所得195万以下。9%還付、控除額5%が最大3年繰越),0(330万以下。9%還付),10(695万以下。1%追加納付),以降省略%。
↑ でも、 前年の外国税額控除限度超過額を丸ごと全部繰り越す様な事は 前年の所得が0でない限り起こり得ないし、 控除限度額は繰り越せないから 本年にも国外所得がないと控除限度額が発生しないし……。
↑ どうやら外国税額控除は、 法人税の様な物 (法人税の税率は、 損益の総額だけで決まり、 所得税みたいに徴収の経路によって税率が変わったりはしない、 と思った)か、 確定申告が必須の場合(所得が2000万円以上とか配当所得がいくらだっけ?以上の場合)を、 想定しているっぽい?。 ……、 上場株式等以外(いわゆる未公開株の事らしい)の配当金が 1銘柄{10万円÷(年間の配当回数)}を越える場合は 確定申告が必須らしい。 で、上場株式等の配当で源泉されている物は上限無しで申告免除か?。

Sat,26 Jan,2008

FreeBSD 7.0-RC1。 FreeBSD 6.3-RELEASE なマシンで、 /usr/RELENG_7/src/sys に cvsup で RELENG_7_0 の src-sys を持ってきて、 FreeBSD 7.0-RC1 の base.?? を /usr/RELENG_7/root に突っ込んで、 /usr/RELENG_7/src/sys/i386/conf/ULE 作って options SCHED_ULE して、 /usr/RELENG_7/src/sys/i386/conf で
% sudo env CPUTYPE=prescott LD_LIBRARY_PATH=/usr/RELENG_7/root/lib /usr/RELENG_7/root/usr/sbin/config ULE
して、 /usr/RELENG_7/src/sys/i386/compile/ULE で
% sudo env CPUTYPE=prescott WITH_GCC3=yes make -m /usr/RELENG_7/root/usr/share/mk cleandepend
% sudo env CPUTYPE=prescott WITH_GCC3=yes make -m /usr/RELENG_7/root/usr/share/mk depend
% sudo env CPUTYPE=prescott WITH_GCC3=yes make -m /usr/RELENG_7/root/usr/share/mk
してみたら、なんか足りないとか言われた。 cvsup で src-sys-crypto が別配布らしい。 追加して cvsup からやり直してみたら、 今度は kern/sched_ule.c のコンパイルでこけた。 inline 関数の定義場所が悪いらしい。 前に移動したらコンパイル通った。
% sudo env CPUTYPE=prescott WITH_GCC3=yes make -m /usr/RELENG_7/root/usr/share/mk KODIR=/boot/testkernel install
で、インストールまではいけた。 カーネルが 7.0-RC1、残りは全部 6.3-RELEASE、で起動したら、 IPF と kldload/kldstat/kldunload と ACPI 回りが使えなくなった。 残りは普通に動いているみたい。

Tue,29 Jan,2008

middleman(mman) に、またバグを見つけた。 URL に .. が含まれていると、mman 用特殊コマンドとみなして処理してしまう、 バグと言うか仕様と言うかがあり、 NaviTime 辺りの URL にピリオドが複数個連続して含まれるサイトを 閲覧できない。
↑ 特殊コマンドの判定を厳しく行う 対応パッチ(patch6)

Thu,31 Jan,2008

レーザーポインタ。 赤のレーザーポインタを使われると、非常に見にくい。 で、調べてみた所、緑のレーザーポインタがあるらしい。 さらに値段を調べてみた。 ……。 赤のレーザーポインタの10〜20倍の値段、2〜4万円しているし……。 取り敢えず、秋月や共立で¥6,700-くらいらしい。 初代の秋月グリーンは 1mW。 二代目 秋月グリーンは 5〜10mW くらい出るらしいが レーザーポインタとして使うのだから出ては困る。 共立モジュールは 5〜10mW くらい出るらしいが、 二代目になってからちょっと落ちた?。 ……。 そもそもレーザーポインタって好きじゃないんだよね。 枯れた赤色レーザーポインタにもかかわらず、 肝心な時に2本立て続けに死んだ事あるし。 ……。 この値段なら、 すなおに物理的なポインタ使うなぁ……。
赤緑色盲。 数年前に見た weblint に、 web とかプレゼンテーションとかポスターとか広報とか作る時は、 色使いに注意すべきだ、と言う内容の事が書いてあった。 で、 そういう色使いを調べるツールとしては、 ImageJ + Vischeck があるらしいが、 これは Java で記述されたグラフィックツールなので、 今ひとつ使いにくい(ディスク容量ばが食いする上に重い)。 それ以外に、 富士通アクセシビリティ・アシスタンスと言うソフトもあるらしいが、 これは MS-Windows と Macintosh にしか対応していないので却下。 それ以外にも、 Vector にフリーソフトにもあったが、MS-Windows 専用なので却下。 調べた所、Hans Brettel 博士が、 その方面の元となる資料を作って公表したのが、 この手のソフトの発端らしい。 で、博士の名前で探してみると……、 何の事は無い、gimp の plugin に Vischeck の移植版があるらしい……、 2003年頃から存在していたらしい……、 で、使おうと思ったら、modules を読み込めない……、 MS-Windows版は wine では動かなかったし、 MS-Windows版をネイティブでも modules を読み込めなかった……。 贅沢を言うと、Xorg のモジュールか何かで、 ちょいちょいとコマンド叩くだけで動的に切り替えられると嬉しいのだが……、 いちいち画像で保存して読み込んで plugin で変換するのって面倒だし。
↑ Mon,04 Feb,2008 追記: ようやく GIMP 拡張モジュール (Modules) の、 cdisplay (color_display, colordisplay, GIMP_TYPE_COLOR_DISPLAY) 系列の 使い方が判った。 「(共通ダイアログ) → 拡張 (Xtns) → モジュール管理 (Module Manager)」 は、 単にインストール済みのモジュールと、使用を許可する・しないモジュールを、 一覧表示するだけで、 モジュールを実際に使用するとか、モジュールの設定とか、 には、全く関係が無いし、 ここで「状態:未読み込み」になっていても無視して構わない。 実際に使用したり、モジュールの設定をする場合は、 「(各画像の個別メニュー) → 表示 (View) → ディスプレイフィルタ (Display Filters...) 」 を選択すると、 モジュール一覧が出てきて、使用を選択したり、設定を変更したり、 する様になっていた。
↑ 「ファイル → Aquire → 画像取り込み」して、 「(各画像の個別メニュー) → 表示 (View) → ディスプレイフィルタ (Display Filters...) 」 で赤緑色盲を選択すれば、 今、ディスプレイに表示している内容の確認ができる。 まぁ、取り込みする分、一手間あるのだけれど。
↑ cdisplay_colorblind モジュールの場合、 「Protanopia (insensitivity to red)」が第一色盲(赤に対する赤緑色盲)、 「Deuteranopia(insensitivity to green)」が第二色盲(緑に対する赤緑色盲)、 らしい。 フィルタ解除する場合は「アクティブなフィルタ」から外せば良い。 以前は、フィルタタイプの一覧に、 「無し(解除)」、「第一色盲」、「第二色盲」、「第三色盲」、 と並んでいたけれども、 「無しもフィルタから外すのも同じだからフィルタタイプ一覧から消した」 だそうで……、 使ってみた感じだと、 やっぱりフィルタタイプ一覧に none ある方が比較しやすいんですけど……、 GIMP 総本山で none が残っている頃の古いソースを探したら、 古すぎて消されちゃってるし。 ImageJ の Vischeck と比べて、 変換後の色彩が強く?(明度が低く?)なっている気がする。 GIMP の第一色盲のシミュレーションだと、 赤が黒、緑が茶色、になって、 区別ができてしまう。 GIMP の第二色盲のシミュレーションなら、 赤も緑も焦茶色になって区別が付かないけれど。 確認するなら、第二色盲のシミュレーションの方が良いかな?。 まぁ、この手の画像ツールのプラグインだから、 学術的な厳密さは不要でしょうけれど……、 肝心の見える見えないはシミュレートできているのかな?。 ……、 何パターンか試してみたが、やっぱり明度が低い?方にずれている。 特に、 第一色盲シミュレーションでは赤が、 第二色盲シミュレーションでは水色が、 ずれている (再現パターンで区別が付かない色と書かれている物でも、 明度が違って区別できる)。 どうやら Vischeck(Mac) に近い変換傾向らしい。 MS-Windows版だろうが Macintosh版だろうが、 同じソースなら同じ変換結果になると思うのだが……、 ソースが違うとか?、 浮動小数の丸めが違うとか?。 ……、 そう言えば以前から、gimp 使っていると、 何もしていなくても色がずれている気がするのだよな……。
↑*3 web で日本語、英語で資料を探しても全然見つからず、 結局、 gimp の locale テーブルとソースコード追いかけて使い方を知ったのって、 どうなのよ……。 と、言うわけで、私みたいな無駄手間をかける人を減らす為に、 GIMP で Vischeck みたいな "Hans Brettel 博士" の手法で 赤緑色盲 の見え方のシミュレーションをするには、 ↑*? みたいにするのだ。 と書いておいてみる。 書いた所で、どうせまた Google にはヒットしないんだろうな。

Fri,01 Feb,2008

理由は忘れたけれどもダイヤに乱れ。 5〜20分の遅れ。
1月29日〜31日に1ヵ月定期預金を組むと、 満期日は2月29日になるらしい。

Mon,04 Feb,2008

車両トラブルによりダイヤに乱れ。 20分くらいの遅れ。

Tue,05 Feb,2008

理由は忘れたけれどもダイヤに乱れ。 5〜10分の遅れ。
qemu で GNU/Linux。 ディスクレスマシンで initrd の修正をする事になった。 実機の BIOS で PXE を持っていて、 PXE-boot で DHCP(bootp)サーバから起動パラメータを貰って、 tftpサーバから vmlinuz と initrd を貰って、 その initrd を ramfs なルートファイルシステムにして、 起動するタイプ。 実機で試すのが面倒だったので、qemu で試そうと、
% qemu-img create -f raw dummy 1
% qemu -localtime -k ja -m 512m -soundhw pcspk,es1370 -net nic,model=rtl8139 -net user -hda dummy -kernel vmlinuz -initrd initrd.img -append "ramdisk_size=131072 initrd=initrd.img ip=dhcp root=/dev/ram0"
したら、
Kernel panic: No init found. Try passing init= option to kernel.
になった。 あれ、qemu の Linux起動モード?で、 ramfs をルートファイルシステムにした起動って、できないんだっけ?。 でも、ramfs のマウントまではできているっぽいメッセージが出ているのだが。 ……。 qemu総本山を見たら、ちょうど先日の1月に、 「前述の起動方法まるごと」に対応したらしい……、
↑ initrd.img のディスクイメージが壊れていただけだった(泣。
↑*2 CapsLock と Ctrl を入れ替えていると、 qemu では、どちらの入力も CapsLock になってしまう事がある(泣。

Wed,06 Feb,2008

車両トラブルによりダイヤに乱れ。 10〜15分くらいの遅れ。
qemu on OpenBSD。 OpenBSD の qemu で -net tap なモードだと、
+ _ETHER=trunk0
+ _BRIDGE=bridge0
+ [  ]
+ BRIDGE=bridge0
+ [  ]
+ ETHER=trunk0
+ id -u
+ test 0 -ne 0
+ echo Initializing tun0..
Initializing tun0..
+ ifconfig tun0 link0 up
+ ifconfig tun0 group tun
+ ifconfig bridge0 create
+ brconfig bridge0 rule block in on trunk0 dst 33:33:0:0:0:12
brconfig: bridge0: No such file or directory
+ brconfig bridge0 rule block in on trunk0 dst 01:00:5e:00:00:12
brconfig: bridge0: No such file or directory
+ ifconfig bridge
+ sed -n /^bridge[0-9]*/{s/:.*$//;p;}
+ read brif
+ brconfig bridge0 del trunk0
+ brconfig bridge0 del tun0
+ read brif
+ brconfig bridge0 add trunk0 up
brconfig: bridge0: trunk0: No such file or directory
+ brconfig bridge0 add tun0 up
(trunk0は実機のNICのifに置き換える) して、
tun0: flags=9943 mtu 1500
        lladdr xx:xx:xx:xx:xx:xx
        groups: tun
        inet6 fe80::2xx:xxff:fexx:xxxx%tun0 prefixlen 64 scopeid 0x7
bridge0: flags=41 mtu 1500
        groups: bridge
に、なるらしい。 FreeBSD だと、Layer2 は tap、Layer3 は tun、だけれども、 OpenBSD だと、どちらも tun で、link0 指定すると Layer2、無指定だと Layer3、 らしい。 その block している MAC は、何だろう?。 dst 01:00:5e:00:00:12 と src 00:00:5e:00:01: は IPv4 での VRRP - Virtual Router Redundancy Protocol のマルチキャストMAC、 33:33:xx:xx:xx:xx は IPv6 でのマルチキャストMAC、 らしい、 確かに、ルーティング情報をブリッジしちゃまずいな。 翌日に続く。
NFSの話、その1。 qemu を net user で動かして、 ゲストOSで NFS クライアントを使おうとすると、
mount: RPC: Authentication error; why = Client credential too weak
になる。 読んだまんま。NFS クライアントを、権限の無いユーザが使おうとしている。 qemu を動かしている一般ユーザには NFS クライアントを使う権限が無い。 例えゲストOS上では root 権限であっても、 それは仮想内の話であって、実機では一般ユーザだし。 実機の NFS サーバで、mountd -n して許可してしまえば通る様になる。 どうせ LAN 内に適当な計算機つながれちゃったら、 IPsec とか kerberos とか使っていない NFS なんぞ、 好き勝手にいじられちゃうんだし。
NFSの話、その2。 で、mountd で許可してやっても、今度は
RPC: garbage, exit EIO
mount: hoge:/export: can't read superblock
とか出る。 NFS の superblock って何だろう……、 RPC の通信ができない場合に、そう言ってくるらしい。 NFS サーバ側でみてみると、
localhost.***** > localhost.nfsd: xid 0x******** (NFSv3) 104 fsinfo [|nfs] (ttl 64, id *****, len 132)
localhost.nfsd > localhost.*****: xid 0x******** reply ERR 24 fsinfo [|nfs] (ttl 64, id *****, len 52)
localhost.***** > localhost.nfsd: xid 0x******** (NFSv3) 104 getattr [|nfs] (ttl 64, id *****, len 132)
localhost.nfsd > localhost.*****: xid 0x******** reply ERR 20 getattr [|nfs] (ttl 64, id *****, len 48)
mountd で許可しても、まだ nfsd が許可されていないらしい。 OpenBSD 3.1 で、nfsd は well known port を要求しない仕様に変わった、 となっているのだけれども、なんで?……。
qemu。 net userモードで ping を打つと、 実機側では udp port 7(echo) 宛で飛ぶらしい。
名前付きメモリ:named memory、.text とか .data とか。 無名メモリ:anonymous memory、anon_vma、.bss とか .stack とか書き込みをした .data とか。

Thu,07 Feb,2008

qemu の net tap 用の IP のトンネリング。
ifconfig bridge0 create
ifconfig tun0 link0 inet 10.0.2.2 netmask 255.255.255.0 up
brconfig bridge0 add bge0
brconfig bridge0 add tun0
brconfig bridge0 rule pass in on tun0
brconfig bridge0 rule pass out on tun0
brconfig bridge0 rule pass in on bge0
brconfig bridge0 rule pass out on bge0
brconfig bridge0 up
net.inet.ip.forwarding=1 とか net.inet6.ip6.forwarding=1 とか 忘れると、 tun0 の LAN からホストへはアクセスできるのに、 tun0 の LAN から bge0 の LAN へは出て行けない、 と言う状態になるので注意。 あと、 パケットフィルタ(ファイヤーウォール)を入れている場合は、 tun0 のぶんのルールも記述しないと蹴られる。 LAN の構成によっては tun0 → bge0 の nat ルールも必要。
↑ 準備ができたら、
% sudo qemu -localtime -k ja -m 512m -net nic,model=rtl8139 -net tap,ifname=tun0,script=no -hda dummy -kernel vmlinuz -initrd initrd.img -append "ramdisk_size=65535 nfsaddrs=10.0.2.15:192.168.1.2:10.0.2.2:255.255.255.0:qemu:eth0:none root=100 1"
	10.0.2.15	my-ip
	192.168.1.2	serv-ip
	10.0.2.2	gw-ip
	255.255.255.0	netmask
	qemu		name
	eth0		dev
	none		auto

	domain, nis-domain, rootpath が設定できない。
で、動く。 この状態で、ゲストOSからホストOSにアクセスすると、 ホストOSからは 10.0.2.15 からアクセスされている様に見える。 実機の LAN のアドレスとは違うので注意。
↑ が、しかし、……、 kqemu 無しの NFS_ROOT で動かすと、 GNU/Linux の Run Level 5 の起動に35分、 shutdown に15分、 かかるのだが……。
↑ Sat,09 Feb,2008 追記: OpenSSH の VPN 越しの kqemu 有りで、NFS_ROOT で動かすと、 GNU/Linux の Run Level 2 の起動に8分、 shutdown に3分、 だった。 開発専用と割り切って、 各種サービス類は片っ端から切っている環境なので、 実機だと、 起動は2分かからないくらい、 shutdown は1分ちょっとくらい。 Sat,09 Feb,2008に関連。
bridge を有効にした時だけ、
tp-s2-c12r32.router.hinet.net.28418 > tc-c12r2.router.hinet.net.5001: udp 45 [tos 0x4]
210.65.200.22.28418 > 210.65.200.21.5001: [udp sum ok] udp 45 [tos 0x4] (ttl 64, id 0, len 73)
とか言うパケットが見えるのだが、なんなのだろう?。
↑ Sat,09 Feb,2008 追記: CPUの電源は落ちているけれども 周辺の電源が入ったままのままのマシンから出ていた。 何故出ているのか、 何故bridgeを入れた時だけ pf にひっかかるのか、 その辺は不明。

Fri,08 Feb,2008

Debian 3.1(sarge) GNU/Linux。 apt-get update; apt-get -u upgrade した後くらいから、
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
とか言う様になった。 locale -a してみたら、POSIX と C しか知らん、とか言ってくる。 locale-gen したら治った。
Debian 3.1(sarge) GNU/Linux。 起動とシングルユーザモードでの動作に必要な部分を全部入れて、約64MiB。 開発関連の基本的な物はほぼ全部入れて、約360MiB。 両方合わせて bzip2 -9 圧縮したら、約140MiB。

Sat,09 Feb,2008

CUI で使える高機能関数電卓 calc。 BSD系の ports で calc なのだけれども、 Debian で apt-get install calc したら、全然違う物が入った。 Debian だと apcalc と言う名前らしい。 Emacs用電卓lisp パッケージに calc と言う名前を付けちゃったから、 CUI の電卓の方の calc のパッケージ名を変えたらしい。
国語辞書を探してみたら、「抜挿」が載っていない。 「挿抜」は、三省堂デイリー新語辞典だけ、載っていた。 さて……。
遠隔のサーバに mount -t nfs するにはどうするか。 VPN 組むしかないなぁ。 IPSec は、色々な意味で、一番美しい形態だとは思うが、 手間が面倒……既設のルータを通り抜けられないし。 SoftEther は MS-Windows しか対応していないし、 あとついでに美しく無いので、却下。 vtun(vtund) はパスワード認証で lzo で圧縮して OpenSSL で暗号化するらしい。 OpenVPN は共通鍵認証もしくはPKI鍵認証らしい。 OpenSSH にも VPN 機能があるらしい。 OpenVPN が総合的に良さそうだが、 取り敢えず OpenSSH で試してみるのが一番楽か……。 ただ、トンネルを接続する毎にルート権限での実行が必要な問題がある。
↑ Sun,10 Feb,2008 追記: まとめ記事が見つかった。 http://www.komoto.org/vpn/vpntech.html
↑*2 OpenSSH で VPN を組んで、 qemu の tap な VPN?とひっつけてみた。 ssh サーバ側の group に sshusers を追加して root を加え、 sshd_config に
PermitRootLogin forced-commands-only
PermitTunnel ethernet
AllowGroups sshusers users
を追加、 login.access に
+:root:client.example.jp
を追加、 ~root/.ssh/authorized_keys2 に
command="sleep 1" ssh-dss SSHクライアント側の公開鍵 user@client.example.jp
を追加。 ssh クライアント側の ~user/.ssh/config に
Host vpn
   HostName server.example.jp
   Port 22
   HostKeyAlias server.example.jp
   ForwardX11 no
   PasswordAuthentication no
   CheckHostIP yes
   Protocol 2
   User root
   Tunnel ethernet
   TunnelDevice 0:0
   PermitLocalCommand yes
   LocalCommand sleep 1
  Compression yes
  #VersionAddendum  
を追加して、ssh クライアント側から
% sudo ssh -F ~user/.ssh/config -i ~user/.ssh/id_dsa vpn
する。 この時、ssh の portforward を使うと、 login.access で root ログインを許可する計算機を local に限定できるので、ちょっと安心できる……、 その場合は、 ssh サーバ側の login.access に追加する内容を
+:root:LOCAL
とし、 ssh クライアント側の ~user/.ssh/config に
Host portforward-vpn
   HostName server.example.jp
   Port 12345
   HostKeyAlias server.example.jp
   ForwardX11 no
   PasswordAuthentication no
   CheckHostIP yes
   Protocol 2
   User root
   Tunnel ethernet
   TunnelDevice 0:0
   PermitLocalCommand yes
   LocalCommand sleep 1
  Compression yes
  #VersionAddendum  
を追加して、 一旦 ssh サーバ側から ssh クライアント側に
% ssh -R 12345:127.0.0.1:22 user@client.example.jp
してから、ssh クライアント側で
% sudo ssh -F ~user/.ssh/config -i ~user/.ssh/id_dsa portforward-vpn
する。 qemu の仮想マシンのルートファイルシステムが、 OpenSSH の向こう側にある NFS サーバをとする様な、 ディスクレス仮想マシンの起動ができた。 ただし、当然ながらレスポンスが悪い、 NFS の応答が返ってくるまで3秒くらいかかる。 でも、非常用には使えるかな……。 あと、icmp が通らない気がする。 Fri,15 Feb,2008に続く。 Thu,07 Feb,2008Fri,22 Dec,2006に関連。
↑ VPN 組むと、場合によっては NAPT が必要になる。 NAPT 忘れてルータで蹴られて焦った。 FreeBSD で NAPT かけるには、以前は IPFW + natd が主流だったみたいだが……、 今は OpenBSD 由来の pf 単体で済ます方法も使えるらしい。 ipf(IP Filter) 使っている場合の NAPT は……、ipnat を使うらしい。 ただ、ipf を使っている状態で tap0 を有効にすると、 ipf.rules をいじっていないのに、 tap0 が無い状態で通信できていた相手と通信できなくなった……、 なんで?。
↑ 3つ全部、業務用で本格運用した事があるが、 個人的な印象では、 pf が一番スッキリしている感がある……。 フィルタリングも帯域制限も NAPT/NAT も全部まとめて pf.conf、 と言う点は重厚長大になりかねないかもしれないが……、 とにかく色々書きまくると、100KB くらいなりかねないからなぁ……。 あと、 ログ出力時に生パケットを記録できる (と言うか、ログ出力は生パケットの記録しかできない) のだが、 ログのファイル出力まで遅延があるのと (sudo tcpdump -n -e -i pflog0 すればリアルタイムで見られるけれど)、 ログ出力の分類機能が無い(ルール記述時点でのfacility指定ができない)。 一応記録しておきたい通信から、危険な通信まで、 ログ上では全部同一の facility になってしまう。
↑ Sun,17 Feb,2008 追記: FreeBSD の pf だと、 ソケットを開いているアプリケーションのユーザ・グループに関係なく、 user 指定や group 指定があるとマッチしなくなる現象に気付いた。 user 指定や group 指定にちゃんとマッチしているルールもあるのに、 特定のルールだけ、user 指定や group 指定を書くとマッチしなくなる。 なんだろう?。

Sun,10 Feb,2008

従来型の銀行(都市銀行とか地方銀行とか)で、 定期預金の満期日が非営業日だった場合、 満期利息とか満期解約とかの普通預金口座への入金は、 満期日以降、最初の営業日になるらしい。 その間は、 定期預金でもなく普通預金でも無い状態になるが、 普通預金の利息は付いているらしい。 ネット専業銀行辺りだと、 満期日が非営業日でも、満期日に普通預金口座に入金されるらしい。
login.access。 まず、 ユーザ名で一致する項目があるかどうかを検索し、 無ければグループ名で一致する項目があるかどうかを検索するらしい。 従って :ALL: の項目があると、 全てのユーザが一致して、そこで検索は終了してしまい、 グループ名での検索は行われなくなる。 一致する項目が無い場合は、「許可」らしい。 ……、 どうしてもログインさせたくないユーザ/グループ、しか、 記述できない様な気がする……。
sshd_config。 AllowUsers と AllowGroups の両方を記述した場合、 両方に一致した者しか接続できなくなるらしい。 AllowUsers に全員ぶん記述するのは現実的ではないので、 AllowGroups 使うしかない。 AllowGroups から漏れるユーザがある場合 (forced-commands-only な root とか)は、 sshd_config の AllowGroups で指定する為専用のグループを作るしかないか。
↑ そうすると、 AllowUsers の hoge@foo.var.example.jp の記述法が使えない。 login.access と併せて使えば、接続元のフィルタリングができるが、 pam を使う全ての物に影響が出てしまう。 /etc/pam.d/sshd から pam_login_access を外せば pam 全体への影響は出ないが、 接続元のフィルタリングができない。
GNU/Linux のスレッドライブラリの話、 Fri,05 Jan,2007の続き。 Debian 3.1(sarge) の場合、 kernel-image-2.6系を入れた上で libc6-i686 を入れないと、 NPTL 非対応、LinuxThreads 専用、になるらしい。 Debian だと i686 以外では NPTL 使えないのか……。 LinuxThreads 専用のライブラリやアプリケーションはどうするのかと思ったら、 LinuxThreads な libc6 は /lib/tls 以下に、 NPTL な libc6 は /lib/tls/i686 以下に、 と言う風に、両方入るらしい (libc6-i686 は libc6 に Pre-Depends 付いている)。 環境変数 LD_ASSUME_KERNEL=2.4 で linuxthreads を選択するらしい。 /etc/ld.so.nohwcap が存在する場合も linuxthreads を選択するらしい。 はっきりしないが、4.0 (etch) でも同じく LinuxThreads が基本らしい。 Ubuntu 6.10 辺りは NPTL になっているらしい……、 が、どのアーキテクチャがなのかは不明。
↑ GNU/Linux系の ldd は、 環境変数 LD_TRACE_LOADED_OBJECTS=1 を設定して対象を実行するだけの シェルスクリプトらしい。 ld.so が、それを見てライブラリ一覧を吐き出して終了するらしい。 ……、GNU/Linuxって、全ての実行ファイルは動的リンクなのか?。 ld.so とか libc.so とか、その近辺が死んだら、マシン丸ごと一蓮托生か……。
↑*2 Tue,12 Feb,2008 追記: linuxthreads 時は、
        libstdc++.so.5 => /usr/lib/libstdc++.so.5 (0x4001c000)
        libm.so.6 => /lib/libm.so.6 (0x400d6000)
        libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x400f8000)
        libc.so.6 => /lib/libc.so.6 (0x40101000)
        /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
で、 NPTL 時は、
        libstdc++.so.5 => /usr/lib/libstdc++.so.5 (0x4001c000)
        libm.so.6 => /lib/tls/i686/cmov/libm.so.6 (0x400d6000)
        libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x400f9000)
        libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0x40102000)
        /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
。 libc と libm が optimize された物になっている。
Xenomai(RTAI/fusion) の x86 tsc。 Time Stamp Counter、rdtsc の事らしい。 クロックを動的に変える石だと、TSC で正しい時刻を取得できないし、 複数コアとか複数プロセッサだとコアやプロセッサ毎に値が違う。 もっとも、RTAI, fusion, Xenomai のマニュアルには、 「(リアルタイム性能に影響があるから) クロックを動的に変える機能は disable にしとけ」、 って書いてあるけれど。 でも最近のマシンは、 高負荷な時以外はクロックを下げる事を前提に設計していて、 冷却する事は二の次の設計だからなぁ。 ……。 カーネルソースに grep してみた感じでは、 素の Linux も adeos も、 クロックが動的に変わる事は考慮せずに、 TSC を一部のタイマーに使っている様な気が……。
Xenomai(RTAI/fusion) の x86 sep。 kernel 2.6.0 以降でかつ NPTL が無いと、使えないらしい。 cpuid命令の返値に SEP と言うビットがあるらしい、 有効だと sysenter命令 と sysexit命令 が使えるらしい。 AMD64系の AMD64モードだと SEP は使えないらしい (syscall, sysret を使うらしい)……、 それ以前に Xenomai が AMD64モードと EM64Tモードに非対応。 sep を有効にすると、システムコール(vsyscall) は call で発行されるらしい。 無効にすると、システムコールは int80 で発行されるらしい。 ……。 で、それで何がどう変わるのか?。 ……。 それ以前に、GNU/Linux で NPTL を有効にすると不幸になる問題がある。 ……。 速度面の概論で言うと、 Athlon64 の AMD64モードでは syscall が速くて、 それ以外の今時の CPU では(AMD, Intel 問わず) int が無難、 らしい。 わざわざ NPTL にダイブまでして SEP 有効にする程でもないか。

Mon,11 Feb,2008

1GB の USBメモリ¥980-、 1GB の SDメモリ¥880-。 512MB のSDメモリ¥680-。
本屋が改装工事中だった。
PD1 無し、PD2CV 無し、APD2 無し、 PD3 無し、PD4 無し、 PD5 無し、PD5X 無し、 PD5plusX ¥3,980-、 PD6 無し。 ブルーフロウ 無し、ブルフロ ファンディスク ¥1,480-、 ブルーブラスター 外箱痛み¥2,680- 通常品¥2,980-で1本、ブルブラ ファンディスク 無し。 ガジェットトライアル 無し。 火星計画2 無し、火星計画3 無し。 PD5plusX 降下中……。
銀河英雄伝説 VI SG ¥1,980-、でも定価も¥1,980-らしい。 βテストまで行われた VII ってどうなったのだろうと思っていたが、 版権問題でもめてこけて消えたらしい。
大戦略 III NET BATTLE 新発売だとか。 ターン制らしい……、大戦略IIIってリアルタイム制じゃなかったっけ?。 ……、 大戦略 PERFECT 3.0 も発売予定らしい……、 能書き見る感じでは、xconq じみている気がする……。
今月のトラ技。 Parallax Propeller P8X32 のアーキテクチャって……。 ただ、本気で活用しようと考えると、 バスもしくはポートがまるで足らない様な気がする……、 バス・ポートが足りなくなる様な使い方をするのだったら、 素直に石を8個並べろ、と言う話もある。
ブロードキャスト。 ダイレクトブロードキャスト direct broadcast は、 例えば 10.255.255.255 とか 172.16.255.255 とか 192.168.0.255 とか。 リミテッドブロードキャスト limited broadcastは、 255.255.255.255。 ダイレクトブロードキャストは、 基本的にはルーターによって転送されないが、 場合によってはルーターによって転送される。 リミテッドブロードキャストは、ルーターによって転送されない。
↑ で、 ゲームやらメッセンジャーやらで、 リミテッドブロードキャストで相手を探す物の場合、 VPN 越しで対戦するにはどうするのだろう?。
↑ 実際に見た感じでは、 レイヤー2の tun + bridge だと、 リミテッドブロードキャストも転送されるみたい。

Tue,12 Feb,2008

EVSSL って、実在証明に関する事項まであったのか。
GNU/Linux-2.6.20.21 Xenomai-2.3.5。 CeleronM 1.5GHz なマシンで クロックの動的変更を切って ACPI がらみも全部切って、 100μsec ループ、 平静時でジッタが±1μsec、 ネットワークとか NFS とか叩いた時でジッタが -1〜+5μsecくらい。

Wed,13 Feb,2008

車が踏切に立ち往生と、人が線路内立ち入りだとかで、 5〜15分の遅れ。
NFS。 OpenBSD 4.2-RELEASE をサーバ、GNU/Linux-2.6.20.21 をクライアントにして、 100Mbase MTU 1500 でスイッチングハブ3段経由なネットワークで、 nfsvers=3,nolock,wsize=8192,rsize=8192,udp な NFS で、 書き込みは dd if=/dev/zero of=file bs=16384 count=16384 、 読み出しは dd if=file of=/dev/null bs=16384 count=16384 。 書き込みが 6MB くらい、読み出しが 3MB くらい。 まぁ、100base の天井に近い感じかなぁ。 ……、何で読み出しの方が遅いんだろう。
FreeBSD の make.conf。 FreeBSD 4 までは、
.if !defined(CPUTYPE)
. if ${.CURDIR} == "/usr/src/sys/compile/HOGE"
CPUTYPE=k7
. elif ${.CURDIR} == "/usr/src/sys/compile/MOGE"
CPUTYPE=p3
. endif
.endif
とかやっていたものが、 FreeBSD 6では使えなかった。 よく見たら、ディレクトリが変わっていた。 結局、
.if !defined(CPUTYPE)
. if !empty(.CURDIR:M/usr/src/sys/amd64/compile/HOGE*) || !empty(KERNBUILDDIR:M/usr/src/sys/amd64/compile/HOGE*)
CPUTYPE=athlon64
. elif !empty(.CURDIR:M/usr/src/sys/i386/compile/MOGE*) || !empty(KERNBUILDDIR:M/usr/src/sys/amd64/compile/MOGE*)
CPUTYPE=core
. endif
.endif
するのが良いらしい。

Thu,14 Feb,2008

何だか知らんが、電車がとてもすいていた。 いつもの平日の木曜日だと、新聞を広げる余裕も無い位の混雑になるのに、 今日は、立っている人数が数えられるぐらい。

Fri,15 Feb,2008

昨日が嘘の様に、いつもの混雑だった。
layer2 な VPN を FreeBSD 6.x 上で構築する話、 Sat,09 Feb,2008の続き。 VPN の向こうの LAN が 192.168.1.0/24、 手元の LAN が 192.168.2.0/24、 VPN が 192.168.255.0/24 の 向こう側が 192.168.255.1 で 手元側が 192.168.255.2、 とする場合、 手元の rc.conf には、
cloned_interfaces="tap0 bridge0"
autobridge_interfaces="bridge0"
ifconfig_tap0="inet 192.168.255.2 netmask 0xffffff00"
autobridge_bridge0="tap0"

defaultrouter="192.168.2.1"
static_routes="vpn"
  route_vpn="-net 192.168.1.0/24 192.168.255.1"
と追加するらしい。 あと、VPN と、tap な qemu を連結させる場合、 qemu 用の LAN が 192.168.254.0/24、 qemu用LANのサーバが 192.168.254.1、 qemu が 192.168.254.2、 の場合、
cloned_interfaces="tap0 bridge0 tap1 bridge1"
autobridge_interfaces="bridge0 bridge1"
ifconfig_tap0="inet 192.168.255.2 netmask 0xffffff00"
autobridge_bridge0="tap0"
ifconfig_tap1="inet 192.168.254.1 netmask 0xffffff00"
autobridge_bridge1="tap1"

defaultrouter="192.168.2.1"
static_routes="vpn"
  route_vpn="-net 192.168.1.0/24 192.168.255.1"
qemu 用の tap1 を作り、 別途、アドレスを割り当ててルーティングしないといけないらしい。 qemu を tap0 に割り当てようとしたら、 使用中の tap に重複割り当てはできない、 とエラーが出たし、 qemu を tap1 に割り当てたまま 192.168.255.3 とか割り振ったら、 パケットがどことも通らなかった。

Sat,16 Feb,2008

layer2 な VPN を FreeBSD 6.x 上で構築する話、 Sat,09 Feb,2008の続き。 OpenBSD で OpenVPN を使ってレイヤー2(tap)で構築する場合、
% ln -s /dev/tun0 /dev/tap0
しておかないといけないらしい。
↑ 遅延が滅茶苦茶大きい。 tcp でリンクを構築した状態で ssh の接続だと、 ネゴシエーション完了まで 15〜35sec かかった。 sshd_config で LoginGraceTime 10s とかしていると、確実に接続できない。 30s でも、駄目な場合がある。 60s でようやく、ほぼ接続できるようになった。 udp でリンクを構築した状態で ssh の接続だと、 ネゴシエーション完了まで 10〜25sec で、 tcp よりも若干早い気がする。
↑ ping 打ってみた。 0.5〜9秒くらいかかっている。 どうも、インターバルを長くすると返答も遅く、 インターバルを短くすると1発目の返答は遅いが2発目以降は早いという、 いかにもな感じ。 試しに、 インターバルを長くしたままパケットサイズを大きくしてみたが、 予想に反して早くならなかった……、 そっちじゃないのか。
↑ NFS でファイル転送してみた。 約 7MB の転送に、1〜17秒ぐらい。 単純に転送だけすると初回は10秒以上で2回目以降は 6〜8秒くらいかかるが、 裏で ping を続けていると 1〜3秒くらい。 UDPマウントでも TCPマウントでも有意な差はみられず。 OpenVPN を udp 接続でも tcp 接続でも変わらず……、 しいて言えば udp 接続の方が若干早いかも。 ……、キャッシュ?。
↑*3,2,1 速いの間違いではなく、早い。 ping だろうが ssh だろうが nfs だろうが、 ネゴシエーションの通りが遅いのが効いている様に見える。 通信が皆無のところにネゴシエーションを始めると遅いが、 裏で ping を打っているところにネゴシエーションを始めると早い気がする。 憶測するに、 OpenVPN の送信バッファからの送信のトリガが何なのかが、 絡んでいるのではないかと?。 で、 ping のパケットサイズを大きくしてみたのだが……、 man 見たら OpenVPN の送受信バッファは各 64KiB らしい。 ping 連打で通りがよくなる辺りから、 送信バッファ中のパケットの数が、 レスポンスに絡む送信トリガなのだろうか?。
↑*2 ping の時間を計測してみると、 tap0 - tun0 間のデータ転送の遅延時間だけみると片道 10〜20ms で 届いてはいるのだよね……。 それから、 tun0 layer2 - OpenVPN - tun0 layer2 の TLS 等の処理で 200〜300ms くらい、 tap0 - OpenVPN - tap0 の処理は計測不能なぐらい短い。 さらにモニタしていると、OpenVPN を udp 接続した場合、時々ロストしている。

Sun,17 Feb,2008

PD6 ¥5229-。
EIZO L365 ¥12,600- ディジタル入力付き 三菱TN 1024x768 らしい。
CF-T2 ¥59,800- だったか ¥54,800- だったか。 Dynabook SS1620 も同じくらいの値段。
GUNDAM X SIDE.1 SIDE.2 SIDE.3 各¥1,250-。
FreeBSD 6.3-RELEASE on Let'snote CF-Y5。 Sat,24 Feb,2007に発端、 Thu,17 Jan,2008の続き。 6.3-RELEASE にしてから、 2週間に1回くらいのペースで、普通に動いている最中に突然
usb2: host controller process error
usb2: host controller halted
とか出て、USBが死ぬ事が多い……。 2ヶ月以上前は、USBデバイスを使っていなかったから、 6.2-RELEASE では問題無かったのかどうかは不明。
↑ http://d.hatena.ne.jp/messier42/mobile?date=20080215 か?。 Sun,24 Feb,2008 追記:違うみたい。ehci 消しても不安定なままだった。 x を切る時や DPMS が入る時や負荷が高めの処理をした時に カーネルフリーズする件も、相変わらず頻発するし。
↑*2 そう言えば、このマシン、 外に出ている USB ポートが uhub2 port1 と uhub2 port2 の2つだけで、 内蔵光学ドライブで1使っているけれど、 残りの2つのは何に使っているのだろう?。
Sat,01 Mar,2008Wed,02 Apr,2008Sun,11 May,2008Tue,30 Sep,2008Fri,16 Jan,2009に続く。

Tue,19 Feb,2008

CORBA。 Debian とか Ubuntu で、 omniORB 4.1.x がリリースされて暫く経つのに、 omniORB 4.0.6 がリリースされてから数年間、ずっとそのままになっている。 で、ようやくその理由が判明。 omniORB 4.1.0 になるときに、 仕様が OMG C++ mapping version 1.1 とか言う物に変更されたらしい。 その為に、4.1系でコンパイルすらできなくなるアプリケーションがあるらしい。
↑ その OMG C++ mapping version 1.1 と言う物が何なのか、 よくわからない。 OMG は、CORBA の仕様を出しているコンソーシアムらしいが。
↑*2 omniORB 4.0 から 4.1 への変更点。
↑ clientSendRequest の件は、原文では記述されていないが、 ソースコードの互換性が無くなっている、 giop_c-< を追加する程度では済まない。 ただ、そんな所をいじる様な使い方をするのかどうか。
↑*2 シーケンスがらみは、 その手の事を気にしないコーディングをする人には、 あるいは理想的なオブジェクト指向?を志向するコーディングをする人には、 問題が大きそうだ。
↑*4 結局、C++ Language mapping specification version 1.1 って何?。
OpenOffice.org。 openoffice.org-2.3.1 の FreeBSD/amd64 用日本語版バイナリが、 FreeBSD 7.0用しか公開されていない……。 自前でソースからビルドすると、 3GBのディスクと20時間近い時間が必要になるから、 とてもやれないし……。 バイナリ配布の量に関しては、GNU/Linux の方が圧倒的に強いんだよなぁ……。
doxygen。 C++ CLI を使うか?、とか、C++ SIP を使うか?、とか、 聞かれたが、略語じゃ判らん……、 割り込み禁止とか VoIP とかじゃないだろうしなぁ……。 C++/CLI は、Microsoft が発表している言語の事らしい、 C++ とか付いているけれども、C++ との相互互換性は全く無いらしい。 SIP は、Python から C++ を呼び出すインターフェースの事らしい。 そちら方面では略語で問題無く通じるらしい。

Wed,20 Feb,2008

FreeBSD の portupgrade。 先日の portupgrade の頃からなのか?、 環境変数指定のオプションが -M に変わったらしい。
portupgrade -M DISABLE_VULNERABILITIES=yes
らしい。

Thu,21 Feb,2008

FreeBSD で印刷。 十数年間ずっと、BSD lpr (BSD lp) を使っていんだけれども。 今時は(2000年代初頭ころからは?)、cups を使うのが便利らしい。 取り敢えず、 ports の print/cups-base は必須で、 別途 print/foomatic-filters が必須(でも DEPEND 付いていない)、 追加で print/cups-pdf があると pdf への変換ができる、 CUI な lpr は print/cups-base に付属、 GUI な lpr が使いたければ print/gtklp 辺りも入れる。 ただし ports の foomatic-filters は古くてバグがあるので、 ports から入れた後に、総本山?の www.openprinting.org から 新しい foomatic-rip と foomatic-gswrapper を持ってきて上書きしなければ ならない……、ただしこれも、 個別に環境設定(手作業で書き換え)しなければならない箇所があって、 $execpath への代入で NONE/bin になっている箇所を /usr/local/bin に しないといけない。 それから、プリンタの種類によっては PJL が
-12345X@PJL
とか
-12345X@PJL RESET
の様に、ゴミとして印刷されてしまうので、ppd に
*JCLBegin: ""
*JCLEnd: ""
が必要らしい。 それから、一部のプリンターでは、gs -dPARANOIDSAFER 指定で 日本語フォントを見つけられなくなる問題があるらしい、 この場合は env GS_FONTPATH=/usr/local/share/fonts/TrueType gs -dPARANOIDSAFER するらしい。 あとは、プリンタメーカーか www.openprinting.org あたりから、 使用するプリンタ用の ppd ファイルを持ってきて、 cups から追加登録すれば、印刷できるらしい……、 古めの ppd だと「cupsomatic が無い」とかエラーが出るが、 これは foomatic-rip に置換する。
↑ …… EPSON のカラーレーザープリンタ(のppd)で、 「モノクロ高速印刷モード」が見つからないのだが……。 Fuji Xerox のカラーレーザープリンタ(のppd)にはあったのだが……。
↑*2 cups を使うと、プリンタ側での Postscript 対応は不要らしい?。
↑*2 Tue,26 Feb,2008 追記: モノクロプリンタ(LP-9000B あたり)として登録すると、 「モノクロ高速印刷モード」になった。 カラープリンタ(LP-9000C あたり)として登録すると、 モノクロの物でもカラー(混色で黒化)して印刷された。
↑ Firefox から cups 使って印刷、 もしくは Firefox から「印刷→ファイルに出力」したものを cups 通して印刷、 もしくは Firefox から cups-pds で pdf に変換した物を cups 通して印刷、 もしくは Firefox から cups-pds で pdf に変換した物を AcrobatReader を使って PostScript に変換してそれを cups 通して印刷、 すると、画像が滅茶苦茶 (画像の横幅2倍で左半分だけ表示、になるパターンが多いが、 それ以外のパターンもたまにある)になる現象に遭遇。 ファイルに出力した物や、pdf に変換した物を、 gv や Ghostscript や evince や AcrobatReader で見る限りは、問題無いのに。 あと、cups を通さないで印刷した場合も、 正常に印刷される(但し、モノクロの物でもカラー(混色で黒化)で印刷される)。
Wed,27 Feb,2008Thu,28 Feb,2008に続く。 Firefox は関係無かった。

Sat,23 Feb,2008

gerbv。 ver.1.0.x系から ver.2.0.x系になっていた。 特定のガーバーファイルを表示しようとすると、 再描画を無限に繰り返すという、 表示回りの痛いバグが治っていた。 あと、mm系のデータが扱えないバグも、ほぼ治っていた。 気付いた、まだ残っているバグは、 Analyze - Aperture definitions で表示される寸法が 常に入力ファイルと同じ単位系になっている、 Analyze - Drills used で表示されるドリル径が 常にインチ系になっている、 くらい。

Sun,24 Feb,2008

のび太:「息をするのもメンドクサ」、 Mon,19 Sep,2005の続き。 なんとなくそれっぽい続きを少し思い出した。 ドラえもん:「呆れた!(以下、忘却)」。
じゃぁ息をできない様にしてやる、だか何だかいって、 「物のありがたみをわからせる道具(名前わすれた)」を使って、 のび太が空気だか酸素だかを使えない様にして、 説教をするのだけれども、のび太は既に気絶していて、 オチは、「ママのありがたみを〜」で、ママが実家に里帰り、 「へんな使い方を〜」で終わり。 だったような気もするし、違う気もする。 ……、「ありがたみわかり機」(19巻?)、 冒頭は、のび太が食べ物を残すところから。 「息をするのも〜」とは関係なかった。
ドラえもん:「呆れた」「口をきくのもめんどくさけりゃ〜」は、 「テレパしい」(18巻?)だったと思う。 こちらは息ではないし。
北斗の拳のゲイラが出てくる話は、1986〜1989年の間らしい。 で、ドラえもんでのび太が「息をするのも面倒くさ」と言った回は、 1986年以前だと思う……、短編37巻……。
J-GearHead、 Sat,18 Feb,2006 の続き……、だと思うんだけれども、 前の記事が無いなぁ……、2年間引きずっていたのか……。 GearHead 1100 + 日本語化パッチ 008 の MS-Windows用バイナリを Wine で動かしてみたら、案の定動かなかった。 GearHead 1100 に MS-Windows版の日本語化パッチ 008 を適用して、 FreeBSD でビルドしてみた……、 日本語化パッチにバグだか仕様だかを見つけた。 取り敢えず、 オリジナル CUIモード、 オリジナル SDLモード、 日本語 CUIモード、 は、 コンパイルが通る様にパッチを書いてみた。 但し、日本語CUIモードだと、所謂2バイト文字の途中で、 改行とかエスケープシーケンス?とか突っ込まれてしまい、 文字化けしまくる……、駄目じゃん……、……明日に続く。
↑ SDLモードでビルドしようとしたら、 JEDI-SDLv1.0 の source tar ball にて、 必要なファイルが足らない、とか言う下らなくて馬鹿げたバグに遭遇。 しかも、総本山には古いバージョンが置いていないし。
↑ 仕方が無いので、 適当に web archive から古いバージョンを持ってきてみた。 JEDI-SDLv0.5 だと fpc 対応が不完全で、コンパイルが通らなかった、 しかも問題箇所が手パッチで治せる量じゃないし。
↑ で、さらに、総本山にある v1.0 よりもタイムスタンプが古い、 JEDI-SDLv1 を見つけたのだが……、 FreeBSD版 Free Pascalに対応していないとか言う問題が。 仕方が無いので試しに GNU/Linuxだと偽装してビルドしてみたら……、 必要な fpc のライブラリ?がインストールされていなくてコンパイルが通らない。 portupgrade fpc-pthreads fpc-x11 したら……、 大量の ports を突っ込まれた……。 firebird2-client は、sudo のまま portupgrade してはいけないらしい。
↑ どうにかこうにかコンパイルは通ったが、 日本語版 SDLモードだと、文字コード処理付近でコア吐いて落ちる。 やっぱり MS-Windows専用ソースだから駄目か……。
↑ 英語版 SDLモードは、コンパイル通った。 まぁ、総本山でも FreeBSD版バイナリは公開されているし。 試しに、日本語データを食わせてみたら、 案の定、文字化け(日本語を英語用グリフで表示)して読めない。

Mon,25 Feb,2008

GearHead、昨日の続き。 日本語CUIモードで文字化けするバグ修正のパッチ。 Pascal 書くの十数年ぶりだから、つらいわ……、 制御構文の文法だとか綴りだとか、関数名だとか忘れているし、 Pascal用の関数マニュアル入れていないから探せないし……、 そもそも、十数年前に書いたといっても Hello World に毛が生えた程度だったし。
昨日のパッチと今日のパッチを合わせて、 の3つのモードで、Unix系OS でも動作する様になった筈。 残るは、日本語SDLモードを Unix系OS に移植する事なのだが。

Tue,26 Feb,2008

GearHead、昨日の続き。 日本語CUIモードで文字化けするバグ修正のパッチの改訂版。 別ルーチンになっているメニュー表示でのトリミング処理を、 治すの忘れていた。

Wed,27 Feb,2008

踏切で非常停止の合図があったとかで、急停車。
cups + foomatic-rip で PostScript対応カラーレーザープリンタに印刷、 Thu,21 Feb,2008の続き。 PostScript対応プリンタなんだから foomatic-rip いらん、 と言う話もあるが、foomatic-rip かまして変換しておかないと、 モノクロ印刷の場合もカラートナーの混色で黒にして印刷するので トナー消費量が3倍 (しかもカラートナーは黒トナーより高いのでコストは3倍以上) になるだとか、 給紙トレイが選択できない(psopt でも駄目だった)だとか、 色々問題があるので。 両面印刷/片面印刷は PostScript のままでも選択できる(psopt を使用)のだが。
↑ どうやら、Firefox から cups で印刷すると駄目なだけでなく、 PostScript 中に埋め込まれたベタ画像データは全て、 cups + foomatic-rip で印刷すると、 画像領域だけ印刷に失敗する事が判明。 取り敢えず、Firefox をいじっても駄目だという事がはっきりした。 で、適当な画像ファイルを用意して、
% convert logo.gif test.ps		← ImageMagick 付属の画像コンバータ
% gs -r300 -sDEVICE=lp9000b -sOutputFile=test.out test.ps	← foomatic-rip の変換のコア部分のみの処理
% /usr/bin/lpr -Plps6500 test.out	← BSD-lpr。cups を一切使わずに出力。
しても、見事に失敗 (画像が横に3倍くらいに拡大されつつ、元のサイズと同じ大きさ分だけ印刷) した。 gs に -r300 とか -r600x600 とか付けても駄目。 縦方向は問題無い辺り、わけがわからない。 試しに、
% convert logo.gif test.ps
% gs -r300 -sDEVICE=psmono -sOutputFile=test2.ps test.ps
% gs -r300 -sDEVICE=lp9000b -sOutputFile=test.out test2.ps
% /usr/bin/lpr -Plps6500 test.out
とかやると、今度は正常に(グレイスケールで)印刷された……、 但し、印刷スプールの消費量と印刷時間が3倍くらいになった。 psmono を psrgb にして、lp9000b を lp9000c にすると、カラーで印刷された……、 但し、印刷スプールの消費量と印刷時間が10倍くらいになった。 試しに psmono を pswrite にしてみたら、駄目だった。 Ghostscript の変換の問題なのか?。
cups の ppd の gs 処理部分で
gs -q -dBATCH -dSAFER -dNOPAUSE -sDEVICE=lp9000c %A%Z -sOutputFile=- -
と記述すると、
gs -q -dBATCH -dSAFER -dNOPAUSE -sDEVICE=lp9000c  -dCasset=-1 -r600x600 -dNumCopies=1   -sOutputFile=- -
になった。
cups の話は Thu,28 Feb,2008に続く。
Free Pascal。 Pascal形式の文字列型の事を、すっかり忘れていた。 String型だと s[0] は文字列長で、中身は s[1] から始まり、終端文字は無い。 PChar型だと、中身は s[0] から始まって終端文字で終わり、文字列長は格納されていない。 String型を Copy() する時は、終端文字のぶんの加算は不要。
Free Pascal。 Pascal から文字コード変換をする場合、 何某かの変換関数が必要になるが、 既存の物が見当たらない。 まぁ、ふつう iconv (libiconv) だろう、と言う事で、 Pascal から cdecl な呼び出しってどうするのだろう、 と調べたら、割と簡単で、あっさりできた。
unit iconv;
{*******************************}
{	iconv wrapper		}
{	Wed,27 Feb,2008		}
{*******************************}
{example:
uses unixtype,iconv;
Function NewConvUni( const pmsg: PChar ): PWord;
const
	WCLen = 512;
var
	src_len, dst_len: size_t;
	pdst: PChar;
	psrc_tmp, pdst_tmp: PChar;
	iconv_result: size_t;
begin
	pdst := StrAlloc( WCLen );
	src_len := Length(pmsg);
	dst_len := WCLen - 2;
	psrc_tmp := pmsg;
	pdst_tmp := pdst;
	iconv_result := iconv.iconv( iconv_enc2utf16,
				@psrc_tmp, @src_len, @pdst_tmp, @dst_len );
	iconv_result := iconv.iconv( iconv_enc2utf16,
				NIL, NIL, @pdst_tmp, @dst_len );
	pdst_tmp[0] := #0; pdst_tmp[1] := #0;
	NewConvUni := PWord(pdst);
end;
}
{*******************************}

{$MODE FPC}

interface

uses
{$IFDEF UNIX}
	pthreads, baseunix, unix, unixtype
{$ENDIF}
{$IFDEF Windows}
	windows, jwawintype
{$ENDIF Windows}
	;

const
{$IFDEF UNIX}
  {$IFDEF LIBC_ICONV}
	libiconvname='c';
	{$DEFINE _LIBICONVNAME_}
  {$ELSE}
	libiconvname='iconv';
	{$DEFINE _LIBICONVNAME_}
  {$ENDIF}
{$ENDIF UNIX}
{$IFDEF Windows}
	libiconvname='iconv.dll';
	{$DEFINE _LIBICONVNAME_}
{$ENDIF Windows}
{$IFNDEF _LIBICONVNAME_}
	libiconvname='iconv';
{$ENDIF}
{$IFDEF LIBICONV_PLUG}
	libiconv_functionname_iconv_open	= 'iconv_open';
	libiconv_functionname_iconv		= 'iconv';
	libiconv_functionname_iconv_close	= 'iconv_close';
{$ELSE LIBICONV_PLUG}
	libiconv_functionname_iconv_open	= 'libiconv_open';
	libiconv_functionname_iconv		= 'libiconv';
	libiconv_functionname_iconv_close	= 'libiconv_close';
{$ENDIF LIBICONV_PLUG}


  {$IFDEF ENCODING_EUC}
    {$IFDEF ENCODING_EUCJP}
	SYSTEM_ENCODING = 'EUCJP';
	{$DEFINE _SYSTEM_ENCODING_}
    {$ENDIF}
    {$IFDEF ENCODING_EUCKR}
	SYSTEM_ENCODING = 'EUCKR';
	{$DEFINE _SYSTEM_ENCODING_}
    {$ENDIF}
    {$IFDEF ENCODING_EUCCN}
	SYSTEM_ENCODING = 'EUCCN';
	{$DEFINE _SYSTEM_ENCODING_}
    {$ENDIF}
    {$IFDEF ENCODING_EUCTW}
	SYSTEM_ENCODING = 'EUCTW';
	{$DEFINE _SYSTEM_ENCODING_}
    {$ENDIF}
    {$IFNDEF _SYSTEM_ENCODING_}
	SYSTEM_ENCODING = 'EUCJP';
    {$ENDIF}
  {$ENDIF}
  {$IFDEF ENCODING_UTF8}
	SYSTEM_ENCODING = 'UTF-8';
  {$ENDIF}
  {$IFDEF ENCODING_SJIS}
    {$IFDEF Windows}
	SYSTEM_ENCODING = 'CP932';
	{$DEFINE _SYSTEM_ENCODING_}
    {$ENDIF}
    {$IFNDEF _SYSTEM_ENCODING_}
	SYSTEM_ENCODING = 'SJIS';
    {$ENDIF}
  {$ENDIF}

	UNICODE_CODESET = 'UTF-16LE';

type
{{$IFDEF WIN32}}
{	Psize_t = ^size_t;}
{	size_t = LongWord;}
{{$ENDIF WIN32}}
{{$IFDEF WIN64}}
{	Psize_t = ^size_t;}
{	size_t = QWord;}
{{$ENDIF WIN64}}
	Piconv_t = ^iconv_t;
	iconv_t = pointer;

var
	{ Conversion table for SDL_TTF.TTF_RenderUnicode_Solid() }
	iconv_enc2utf16: iconv_t;
	iconv_utf16toenc: iconv_t;



function iconv_open( __tocode: Pchar; __fromcode: Pchar ): iconv_t;
cdecl; external libiconvname name libiconv_functionname_iconv_open;

function iconv( __cd: iconv_t; __inbuf: PPchar; __inbytesleft: Psize_t; __outbuf: PPchar; __outbytesleft: Psize_t ): size_t;
cdecl; external libiconvname name libiconv_functionname_iconv;

function iconv_close( __cd: iconv_t ): longint;
cdecl; external libiconvname name libiconv_functionname_iconv_close;



implementation

Procedure Init_workarea();
begin
	{ Initialize conversion tables. }
	iconv_enc2utf16 := iconv_open( UNICODE_CODESET, SYSTEM_ENCODING );
	iconv_utf16toenc := iconv_open( SYSTEM_ENCODING, UNICODE_CODESET );
	if (iconv_t(-1) = iconv_enc2utf16) or (iconv_t(-1) = iconv_utf16toenc) then begin
		Writeln('iconv initialization failed. (system encoding "' + SYSTEM_ENCODING + '", unicode encoding "' + UNICODE_CODESET + '")');
		halt(-1);
	end;
end;


initialization
begin
	Init_workarea();
end;

finalization
begin
	iconv_close( iconv_utf16toenc );
	iconv_close( iconv_enc2utf16 );
end;

end.
こんなんでいいらしい。 サンプルの NewConvUni() は、 変換後の文字列を SDL_ttf の TTF_RenderUnicode系(TTF_RenderUnicode_Solidとか) に突っ込むための物なので、 PUInt16 にキャストしている上に、終端文字が多くなっている、 あと使い終わったら Dispose() が必要。
Fri,14 Mar,2008追記: LIBICONV_PLUG に注意。
GearHead、昨日の続き。 Unix系でも日本語SDLモード
ncurses が、FreeBSD 標準の物と ports の物で、 conflict 起こしていた。 ……、影響範囲ってどこまでになるのだろう。

Thu,28 Feb,2008

人身事故の為、30〜1時間の遅れ。
cups で画像の印刷の不具合の話、 Thu,21 Feb,2008Wed,27 Feb,2008の続き。 環境は、FreeBSD 6.3-RELEASE で GPL Ghostscript 8.60 (2007-08-01) 。 色々なパターンを試してみた所、 昨日までは Ghostscript のエプソン用ドライバの スケーリング処理のバグを疑っていたのだが、 縦方向は間違えないし、フルカラーと白黒のスケーリングは合っている辺り、 それは無さそう。 また、パレットを使用している画像だけ、横方向がおかしくなる事から、 1pixel 当たりのデータ量が間違っているのではないかと。
↑ 結局、 Ghostscript の eplaser エプソンレーザープリンタ用ドライバの バグだった。 gdevescv.cを改造する話 のパッチを当てたら、正しく印刷できた。
GearHead、昨日の続き。 表示できない文字を、わざとPascal表記16進で表示する様に変更 (日本語化した後の標準設定だと、 ヘルプ表示の時に移動キーに表示できない文字が含まれる為)。 あと、 日本語化データでスプライトのファイル名を間違えている箇所を見つけたので修正

Fri,29 Feb,2008

線路に転落した人がいるだとかでダイヤに乱れ。
GearHead 関連を、 GearHead 日本語化 の Unix系用 パッチ のページ に移転。 スクリーンショットとかリンク集とか追加。

Sat,01 Mar,2008

PD5 ¥3,480-、PD6 ¥4,980-。
swap encryption。 OpenBSD に導入されたのは 2000年上期の 2.7 からで、 sysctl vm.swapencrypt.enable=1 すると有効になるらしい、 2005年上期の 3.7 からはデフォルト有効になったらしい、 どうやら blowfish 固定らしい。 NetBSD は 2004年の 2.0 で正式リリースとなった cgd を使うらしいが、 使い勝手が悪いので他の実装方法を検討中らしい。 FreeBSD は 2005年の 6.0 で正式リリースとなった geli を使うらしい。 GNU/Linux は 2004年の kernel-2.6.4 頃から実装された dm-crypt を使うらしい。
メモリ解放時のゼロクリア。 MS-Windows では、SecureZeroMemory() 使わないと、 最適化処理でゼロクリアが省略されるらしい。 それはそうと、 暗号関連やパスワード関連の処理をしているのに、 解放前に初期化をしないタコソフトの対策法を思い出せないでいたのだが、 ようやくみつかった。 BSD系ならば
% ln -sf J /etc/malloc.conf
すれば、 malloc() や free() で (内部的には new と delete と new[] と delete[] も包括される)、 自動的にゼロクリア(ゼロじゃないけれど)される。 但し、当然ながら、遅くなる。 Wed,28 May,2008Thu,29 May,2008Fri,30 May,2008に続く。 Tue,04 Mar,2008Sat,31 May,2008に関連。
↑ GNU/Linux では、みつからなかった(そんな手段は存在しない?)。 一応、MALLOC_CHECK_ に 3 を指定すれば、 ln -sf A /etc/malloc.conf 下位互換相当にはなるらしいが、 OpenBSD の様な厳しいチェックはしないらしい。 glibc のソースコード検索中……、 malloc/hooks.c にて MALLOC_CHECK_ が有効な時のメモリ解放の所のみ、 ln -sf Z /etc/malloc.conf 相当の処理を行うコードが記述されているのを発見、 但し #if 0 されていた。 ……ソースパッケージから glibc 再構築すると、 相当な時間とディスク容量が必要だよなぁ……。
↑ 関連として、 MALLOC_TRIM_THRESHOLD_ (プールしているメモリ量が指定値より大きい場合は解放する、-1 でプロセスが終了するまで返さない、デフォルト 131072)、 MALLOC_TOP_PAD_ (メモリを確保する際に多めに確保してプールしておく、デフォルト 0) MALLOC_MMAP_THRESHOLD_ (確保するメモリ量が指定値より大きい場合は mmap を使う、デフォルト 131072)、 MALLOC_MMAP_MAX_ (mmap で確保する上限数、デフォルト 65536) MALLOC_TRACE (mmap/munmap のログを指定したファイルに出力) があるらしいが、行儀の良いプログラム、と考えると、 MALLOC_TRACE 以外は使うべきではないと思うが。 ……、glibc のコメントに、MALLOC_TOP_PAD_ を使うべきだ、 みたいな事が書いてあるし……。 ……、Vine GNU/Linux で MALLOC_TRACE をしてみたけれど、 何も起きなかった……、 glibc-2.3.2 のソースを見たら、mmap系を行う時だけログを出していて、 brk()系だとログを出していなかった。 駄目だなぁ。
↑*3,*2 Wed,28 May,2008 追記: まともに free()/delete/delete[] していない駄目ソフトだと、 malloc.conf 指定しても解放時にゼロクリアされない、 突き詰めるとカーネルの munmap() でゼロクリアする様にしないと駄目。 malloc.conf 指定しなかったり GNU/Linux の場合でも、 malloc()用バッファを mmap で確保する時に /dev/zero で mmap() するので、 大元の1回だけはゼロクリアされている筈。 その後に同一プロセス (BSDの場合。GNU/Linux の場合はメモリを共有している全プロセス) がメモリを使いまわす時に、 ゼロクリアされるかされないかの違い。 それはともかくも、 確保したメモリを初期化していないのに 初期化したつもりでアクセスしてしまう様なバグや、 解放したメモリに再アクセスしてしまう様なバグを見つけるのには、 やっぱり便利なんだよね。
FreeBSD 6.3-RELEASE on Let'snote CF-Y5 で、 カーネルフリーズが頻発する件、 Sat,24 Feb,2007に発端、 Thu,10 Jan,2008Sun,17 Feb,2008の続き。 2月17日から2月24日の間に、ehci を切ったカーネルで試してみたが、 相変わらず発症する。 試しに usb を切ったカーネルを作ってみたが、それでも発症した、 しかもカーネル作り終わって再起動した最初の試行の時に発症するわ、 1日1〜2回のペースで落ちまくるわ。 で、次に、25日から、SpeedStep を無効にしてみるのを試してみた。 29日まで、全く発症しなかった。 今日、SpeedStep を有効に戻してみた、発症した(泣。 FreeBSD で Core Duo の SpeedStep は鬼門なのかなぁ……。 そう言えば、 FreeBSD 4 で Mobile Pentium3 (Pentium3M?) の SpeedStep を使っていた時も、 たまに落ちたなぁ……。 Cool'n'Quiet は問題無く使えているのだがなぁ……。 それとも i845GM とか i945GM とか、 その辺の統合チップセットが駄目なのか?。
↑ x を使っている時に不安定になる場合、 agp を切ってみるのと DRI を切ってみるのを試すべきなのだが、 Let'snote CF-Y5 で agp か DRI かどちらかを切ると、 x の画面描画が乱れる (kterm とか xterm とか eterm とか aterm とか rxvt で、 表示内容が読めなくなる場合がある) という問題が発生するので、できない。 agp や DRI を入れると不安定になる、って話は聞くけれど、 切ると不安定になるって……。
↑*2,*1 Wed,02 Apr,2008Sun,11 May,2008Tue,30 Sep,2008に続く。
GearHead、昨日の続き。 日本語化パッチ 008 で未翻訳だった箇所を翻訳、あと構文エラーを修正。 GearHead 日本語化 の Unix系用 パッチ のページ

Sun,02 Mar,2008

PD1 無し、PD2CV 無し、APD2 無し、 PD3 無し、PD4 無し、 PD5 無し、PD5X 無し、 PD5plusX ¥3,980-、 PD6 ¥4,980-。 ブルーフロウ 無し、ブルフロ ファンディスク 無し、 ブルーブラスター 外箱痛み¥2,680- 通常品¥2,980-で1本、ブルブラ ファンディスク 無し。 ガジェットトライアル 無し。 火星計画2 無し、火星計画3 無し
銀河英雄伝説 V g ¥980-、銀河英雄伝説 VI SG ¥980-。
工人舎の SA5シリーズが新発売らしい。ASUS EeePC 対抗か? SA5 と EeePC が並んで売っていた。 ディスプレイのサイズは、 同じか、EeePC がちょっと小さい(フチの非表示の部分が太い)、 ように見えた。 筐体は、EeePC の方が一回り大きく見えた。 軽量小型はいいのだが、ディスプレイが小さいんだよね。 かと言ってディスプレイの大きさを確保すると、重く大きくなるし。
Let'snote CF-T2、B が¥40,000-、C が¥60,000-、D が¥74,000-。
xterm や kterm の geometry。 .Xdefaults で KTerm*geometry: 80x25 と書いたら、 プルダウンメニューまで 80x25 になってしまった。 正しくは KTerm*VT100*geometry: 80x25 らしい。
暗号化ファイルシステムの有名所。 Thr,04 May,2006に関連。 ベンチマーク方法は Let'snote CF-Y5 CoreDuo 1GHz (注:最高速度にすると冷却ファンがとてもうるさいので クロックダウンしている) の FreeBSD 6.3-RELEASE で dd if=/dev/zero of=zero bs=1m count=10 、 非暗号化状態で 実ディスクでは 22970859, 22975034, 22687803 B/s、 MemoryFileSystem では 178447246, 189492560, 205732500 B/s。
で。 BSD系やGNU/Linux系やMS-Windows、横断して使える物はないのか……。
FreeBSD で fusefs-encfs。 sudo encfs したら、 マウント先は root しか閲覧できなくなった。 sysctl vfs.usermount=1 で encfs だったら、 マウントしたユーザでも閲覧できた。 うーん。
↑ encfs を実行すると、 マウントに成功しようが失敗しようが、 /dev/fuse[0-9]+ を1つ消費するらしい……、 失敗した場合、 誰もマウントしていないのに無駄に消費されている /dev/fuse[0-9]+ が1つできあがる。 /dev/fuse[0-9]+ をマウントした先を umount すると、 umount された /dev/fuse[0-9]+ は解放されるらしい。 その両方を合わせて、encfs で失敗したあと、 失敗した /dev/fuse[0-9]+ に対して mount_fusefs /dev/fuse[0-9]+ /dummy して umount /dummy すると、 無駄に消費されていた /dev/fuse[0-9]+ が解放された。
↑ 消費された /dev/fuse[0-9]+ を全部解放しないと、 kldunload fuse できない。
↑*2 Wed,08 Oct,2008に続く。
SDL なアプリケーションを ktrace したら read -1 errno 35 Resource temporarily unavailable が、やたら出ていた。 よくみたら、ファイルデスクリプタの 3 (/dev/fd/3) とか 4 (/dev/fd/4) を、 待ち受けしていた。 ファイルデスクリプタ使ったスレッド間通信でもやっているのだろうか?。 まぁ、無視してよいエラーだと判ったから放置。
ppc386 FreePascal で JEDI-SDL な SDL。 static link すると SDL_SetAlpha() で SIGSEGV 出して落ちる。 dynamic link だと平気。 ……。 SIGSEGV が出る原因は、 SDL_SetAlpha() に渡しているイメージのポインタが NIL になっていた。 ……。 何故 NIL になるか追いかけた所、 SDL_image が、libpng.so を動的に呼び出している (ダイナミックリンクですら無く、SDL_LoadObject() で読み込んで、 直接引っぱたいていた)のに、 スタティックリンクにすると呼び出せなくなってしまい、 読み込み失敗で NULL を返していた。 ……。 何故 SDL_image が libpng.so を動的に呼び出しているのか追いかけた所、 SDL_image がデフォルトでそうする仕様になっていた。 ./configure に --enable-jpg --enable-png --enable-tif --disable-jpg-shared --disable-png-shared --disable-tif-shared を追加すれば良さそう。 FreeBSD の場合、 /usr/ports/graphics/sdl_image/Makefile を編集しないと駄目だった。
↑ 何故、ダイナミックリンクにしないのか考えてみた。 例えば png しか扱わないプログラムでも、 ダイナミックリンクやスタティックリンクにすると libpng.(a|so) だけでなく libjpeg.(a|so) とか libtiff.(a|so) とか読み込まれるが、 SDL_LoadObject() にすれば libpng.so しか読み込まれないから。 辺りか?。 でも、SDL_LoadObject() の実装方法だと、 画像を読み込む毎に、 動的ライブラリを読み込んで解放して、していて無駄なのだけれど……。 それになにより、 ライブラリの依存関係を ldd で調べられないし、 FreeBSD/amd64 上で FreeBSD/i386 のバイナリを実行した時に、 amd64用のシェアードライブラリを読み込んでしまう問題があるし。
↑*2 libSDL本体と、SDL_mixer も、その手法らしい。 SDL本体は --disable-loadso --disable-alsa-shared --disable-esd-shared --disable-arts-shared --disable-x11-shared --disable-osmesa-shared 。 SDL_mixer は --enable-music-ogg --enable-music-mp3 --disable-music-ogg-shared --disable-music-mp3-shared 。 FreeBSD の場合、/etc/make.conf に
.if !empty(.CURDIR:M/usr/ports/audio/sdl_mixer*)
CONFIGURE_ARGS+= --enable-music-ogg --enable-music-mp3 --disable-music-ogg-shared --disable-music-mp3-shared
.endif
.if !empty(.CURDIR:M/usr/ports/devel/sdl12*)
CONFIGURE_ARGS+= --disable-loadso --disable-alsa-shared --disable-esd-shared --disable-arts-shared --disable-x11-shared --disable-osmesa-shared --disable-threads
.endif
を追加すればOK。 (Thu,06 Mar,2008 追記: SDL のスレッド制御機能を有効にすると、非常に不安定になるので、 --disable-threads を追加)
↑*3 SDL を使っているアプリケーションを FreeBSD/i386 でビルドして、 FreeBSD/amd64 で実行すると、コア吐いて落ちる原因はそれか……。 32ビット互換モードで動いているにも関わらず、 SDL_LoadObject() が 64ビットモード用のダイナミックライブラリを 読み込んでしまうものだから……。
↑ Thu,06 Mar,2008 追記: それもあったが、それ以外にも、 FreeBSD/amd64 上で FreeBSD/i386 のバイナリを動かすと、 SDL にスレッド制御をやらせた時に、メモリ破壊を起こしているっぽい。 SDL のスレッド機能を無効にすれば、動く様になった。
Thu,06 Mar,2008に続く。

Tue,04 Mar,2008

FreeBSD/amd64 で i386 なバイナリを実行する話、 Thr,07 Jul,2005Fri,08 Jul,2005の続き。 freebsd-update でバイナリアップデートだけやっていたら、 32ビット互換ライブラリが更新されないままだった。 make.conf に WITH_LIB32 が付いた状態で、
% cd /usr/src
% make build32
% make install32
% ldconfig -32
すれば、いちいち make world せずとも、 互換ライブラリだけ更新されるらしい。 Fri,07 Mar,2008Thu,06 Mar,2008に関連、 Wed,21 May,2008に続く。
malloc.conf でエラー検出やタコソフトのセキュリティ対策の話、 Sat,01 Mar,2008の続き。 V つけたら grep が
grep: Memory exhausted
とか言ってきた。
malloc.conf でエラー検出やタコソフトのセキュリティ対策の話、 Sat,01 Mar,2008の続き。 malloc.conf でエラー検出を有効にした状態で、 kterm か rxvt で、 uim-xim (uim-1.4.1) 使ってかな漢字変換をしたら、 uim-xim がコア吐いて落ちた。 さぁ、原因は何処だ?。 ……。
#0   in strlcpy () from /lib/libc.so.6
#1   in UTF8_Locale::utf8_to_native_str at ../../xim/locale.cpp:285
#2   in XimIM::utf8_to_native_str at ../../xim/ximim.cpp:485
#3   in ConvdispOv::layoutCharEnt at ../../xim/convdisp.cpp:1461
(以下略)
malloc.conf を JZ した場合は落ちなくなったが、 J するとやっぱり落ちる。 ……、strlcpy() のソース側引数に、 明示的に終端文字を付けていないオチだろうな。 ……。 ソースの xim/locale.cpp 見てみた。 当たり。 iconv() の呼び出し方を間違えていて、終端文字が付いていない。 今まで落ちなかったのは、 単なる偶然(多分、どこかでゼロクリアしている奴がいる)。 ……。 uim-1.4.2 出てるし。 Google code とか言う所に移転してた。 ……。 iconv 回りのバグ、気付いていないみたい。 ……。 Google code の使い方が判らん……。 Bugzilla の使い方も判らん……。 ……。 なんとか送信できたみたい。
↑ Wed,05 Mar,2008 追記: 1月下旬頃、開発バージョンでは修正していたけれども、 安定バージョンに反映するのを忘れていたそうで。 ……。 Google code の svn の webブラウザの使い方が判らん……、 cvsweb なら見慣れているのだが。
↑ Thu,06 Mar,2008 追記: Source → Browse → trunk で、開発バージョンの最新の状態が見えるらしい。 ブランチは、Source → Browse → tags とか Source → Browse → branches らしい。 更新の流れとしては、trunk → branches → tags といくらしい。 ……。 今更、ようやく svn の見方が判ってきた様な。 Jul 11, 2007 の r4707 で、trunk から 1.4系 branch が分岐した。 Jan 28, 2008 の r5141 で、trunk だけに、iconv() の outbuf に '\0' 追加する修正をした。 Feb 20, 2008 の r5231 で、1.4系 branch から uim-1.4.2 の tag が確定した。 と見るわけかな。

Thu,06 Mar,2008

FreeBSD/i386上でビルドした SDL を使うアプリケーションを、 FreeBSD/amd64 で動かすと落ちる話、 Sun,02 Mar,2008辺りの続き。 SDL のスレッド制御機能を有効にした場合に限り、 初めてスレッドの切り替えをしようとした時に、 落ちている事が判明。 初めての時に必ず落ちるので、2回目以降の切り替えはどうなるかは知らん。 SDL のスレッド制御機能を無効にすれば、問題無く動いた。
↑ あと、FreeBSD/amd64上の i386互換で ./configure すると、 int64_t と uint64_t の型判定を間違える。 なんで sizeof(int64_t) とか sizeof(uint64_t) が 4 なんだよ。 ……。 -I/usr/obj/usr/src/lib32/usr/include が必要らしい。 Tue,04 Mar,2008に関連。
↑*2 ついでに。 #define SDL_THREAD_PTHREAD かつ #undef SDL_THREAD_PTHREAD_RECURSIVE_MUTEX の時の処理に、#ifdef と #if を間違えている、 もしくは #define hoge 1 の 1 を書き忘れている、 バグがあるねぇ。
↑*3 SDL の --enable-pthreads で駄目なら、--enable-pth でどうだ、 と思ったら、BSD系と GNU/Linux系では pth非対応らしい。
↑*4 色々試してみた所、 FreeBSD/i386 でも、スレッド有効にすると不安定な事に気付いた。 時々固まって、kill -9 しないと止まらなくなる。
↑*5 なんか、Ruby/SDL でもスレッド有効にすると駄目らしい。
SDL。 結局、loadso機能と threads機能を、全部無効にすると解決した。

Fri,07 Mar,2008

FreePascal。 クロスコンパイルをしようとしたら、 リンカオプションの指定の仕方が man に載っていない。 ソースを追いかけてようやく判明。 -Xd でクロスコンパイル指定して、 -k でリンカオプション指定、 だった。 あと、-Fl の検索パス指定は、先入れ後出し、らしい。 ついでに、 -FL オプションでリンカオプションのインジェクションをかます事もできた、 -k があるから意味ないけれど。
FreeBSD/amd64 で i386互換モードの SDL ライブラリを作る方法のまとめ。 Tue,04 Mar,2008に関連。
libtool その1。 版によっては、 X 関連のライブラリの検索パスを /usr/X11R6/lib に決め打ちしているっぽい。
libtool その2。 リンクしようとしているライブラリの lib*.la が存在すると、 lib*.la 中に記述されたパスのみを使用するらしい。 FreeBSD/amd64 で、 FreeBSD/i386 のバイナリパッケージを /usr/local32 に展開していたりすると、 /usr/local32/lib/lib*.la の中では /usr/local/lib とか記述されているので、 -m32 しようが -m elf_i386_fbsd しようが ライブラリを絶対パスで記述しようが -Wl,-rpath,/usr/local32/lib しようが -L/usr/local32/lib しようが -Wl,-rpath-link,/usr/local32/lib しようが、 何しようがお構い無しに、/usr/local/lib/lib*.(a|so) をリンクしてしまう。
libtool その3。 CFLAGS に -B/usr/lib32 と書いても、強制的に消された。 CC に gcc -B/usr/lib32 とか書けば、生き残った。

Sat,08 Mar,2008

GearHead日本語化パッチで、ごくまれに落ちるので、 直感でメモリ回りのバグかと思って、 Valgrind とか ElectricFence とか ccmalloc とか mpatrol とか、 かけてみた。 Valgrind と ccmalloc と mpatrol は、 ユーザコードに到達する前に落ちて使えなかった。 Wed,19 Mar,2008 追記: ライブラリのリンクの順番の問題だった。 mpatrol の doc の FAQ の10。
ElectricFence の限界。
var
    dst: PChar;
begin
    dst := StrAlloc( 512 );
    StrPCopy( dst, '12345' );

    if Ord('a') = dst[6] then dst[6] := 'A';
    if Ord('a') = dst[5] then dst[5] := 'A';
end;
dst[6] は終端文字より後なのでアクセスするのはおかしいのだが、 確保されたメモリ内に収まっている。 dst[5] は終端文字を破壊している。 この手のタイプのオーバーランは、それだけでは絶対に発見できないし、 dst[512] とかそれ以降にアクセスしない限り発覚しないんだよね。 当たり前だけれど。
↑ GearHead日本語化パッチに、このバグが有った。 文字列の中から別の文字列に該当する文字を検索するルーチンなのだけれども、 検索される文字列の文字列長を無視して検索し続けるバグがあって、 検索する側の文字列にまで至ってようやく止まっているのだけれども、 どちらの文字列バッファも、その文字列バッファの間も、 正当に割り当てられたメモリ領域の為、 その手の違反が発生せず、検出できない……。
SDL で日本語入力。 ノーマルの SDL だと、日本語入力に対応していない……、 1.2.11 から対応している事になっているが、未完成で使えない……、 IM の起動すらできないし。 http://morihyphen.hp.infoseek.co.jp/prog/sdl-im.html を使ってみたが、 IM がらみのイベントを中途半端に SDL に取られてしまって、 IM の起動すらできない。 http://sdl-im.csie.net/ の SDL-IM を使ってみたが、 OnTheSpot で IM の起動と変換と終了はできるのだが、 入力中の文字列が文字化けするし(フォントが不適切?)、 アプリケーション側で入力された文字列を受け取ってくれない (Sun,16 Mar,2008 追記: SDL-IM のマニュアルを読んだら、 「IM で入力された文字列は SDL_FlushIMString() で取得する。 従来の SDL のキー入力関数では取得できない」 と言う主旨の事が書いてあった)。 http://alissa-sabre.cocolog-nifty.com/blog/2007/05/linux_79e5.html を使ってみたが、これも同じく、 OffTheSpot で IM の起動と変換と終了はできるのだが、 アプリケーション側で入力された文字列を受け取ってくれない (Sun,09 Mar,2008 追記: TSDL_KeyBoardEvent(event).keysym.unicode を読めば受け取れる)。 ……アプリケーション側の問題か?。 ……、この人の日記を片っ端から追いかけていったら、 SDL-1.2.12 で本家にマージされた旨の記述を発見。 SDL-1.2.12 でやりなおし。 ……、やっぱり変わらず、アプリケーション側が受け取ってくれない。 ……。 ここに来てようやく、SDL の IM 対応箇所のソースを読む。 ……。 アプリケーション側で IMに対応する様に書かないと日本語入力できないじゃん。 (Sun,09 Mar,2008 追記: だから TSDL_KeyBoardEvent(event).keysym.unicode を……)。 ……。 JEDI-SDL は対応していた……、対応も何もスルーするだけだけれど。 あとは GearHead 側で対応するように改造するだけか。
↑ SDL_EnableUNICODE( 1 ); は、既に入っていた。 SDL_PollEvent( @event ) した後、 TSDL_KeyBoardEvent(event).keysym.unicode が 0 〜 $7f の場合だけ、 受け付けていた。
↑ 'a愛上尾' だと '97 24859 19978 23614' になった。 16進数で '61 611b 4e0a 5c3e' だから、UTF-16 だな。
↑*2 日本語が通る様になったはいいが、 セーブファイル名にキャラクタ名をそのまま使うので、 キャラクタ名を日本語にするとファイル名も日本語になってしまう。 あと、uim の IMモードで、 OffTheSpot の表示領域が画面外にはみ出していても そのまま表示されてしまって見えない。
↑*3 Sat,15 Mar,2008 追記: MS-Windows の IME だと、 SDL-1.2.13 で TSDL_KeyBoardEvent(event).keysym.unicode を使う方式では 日本語入力できなかった。 UNIX系だと入力された文字コードが UTF-16 で .keysym.unicode に入っているのだが、 MS-Windows だと、 通常の文字入力は ASCII なら .keysym.unicode に入っているのだが、 IME が on の時のキー入力は全部 .keysym.unicode が0だった……、 どうなっているんだ?。 l0ugh氏 作の、WindowsAPI を直接引っぱたく関数を使えば入力できるのだが、 SDL 使っているのに OS依存の API を使うと言うのはどうも……。

Sun,09 Mar,2008

昨日の続き。 GearHead 日本語化パッチ改良版

Mon,10 Mar,2008

なんだかしらんが、ダイヤに乱れ。 5分前後の遅れ。
Pascal で、C言語で言う所の exit(); って何だろう……。 halt(); らしい。 あと、Sun方面では、
2#10111		2進数
8#76543		8進数
16#fd9c		16進数
32#zmlx3	32進数
らしいが……。
mlterm。 フォントがおかしかったり、UTF-8 でフォントが汚かったりしていたが、 設定が間違っていた。 ~/.mlterm/main が
fg_color = #000000
bg_color = #f5f5f5

fontsize = 14
use_bidi=false
iso88591_font_for_usascii=true
use_anti_alias = false
use_cp932_ucs_for_xft=false
not_use_unicode_font=true
#only_use_unicode_font=true
use_combining=true
use_dynamic_comb=true

use_xim=true
input_method=xim
fg_color は文字の表示色、bg_color は背景色。 ~/.mlterm/font が
ISO8859_1=-misc-fixed-medium-r-normal--14-130-75-75-c-70-iso8859-1:100;
JISX0201_ROMAN=-sazanami-gothic-medium-r-normal--0-0-0-0-c-0-jisx0201.1976-0:100;
JISX0201_KATA=-sazanami-gothic-medium-r-normal--0-0-0-0-c-0-jisx0201.1976-0:100;
JISX0208_1983=-misc-fixed-medium-r-normal--14-130-75-75-c-140-jisx0208.1983-0:100;
JISX0212_1990=-misc-osaka_unicode-medium-r-normal--0-0-0-0-p-0-jisx0212.1990-0:100;
ISO10646_UCS4_1=-misc-osaka_unicode-medium-r-normal--0-0-0-0-p-0-iso10646-1:100;
ISO8859 は 7x14、 JISX0208 は k14、 JISX0201 は漣で、 JISX0212 と ISO10646 はダミー。

Wed,27 May,2009に訂正版。
~/.mlterm/color が
black      = #202020
blue       = #0000cc
green      = #00bb00
cyan       = #00cccc
red        = #cc0000
magenta    = #bb00bb
yellow     = #ffd700
white      = #a0a0a0
hl_black   = #404040
hl_blue    = #0000ff
hl_green   = #00ff00
hl_cyan    = #00ffff
hl_red     = #ff0000
hl_magenta = #ff00ff
hl_yellow  = #ffff00
hl_white   = #ffffff
black は terminfo だかで黒が指定された時、 white も terminfo だかで白が指定された時、使われる……、 通常の文字の色や背景の色は、main の fg_color と bg_color が使われる。 と言う感じに書くらしい。

Tue,11 Mar,2008

vim。 何か、EUC-JP JISx0212 G3 や JISx0213 G3 の、 3バイトで1文字のヤツを正しく扱えないんですが。 UTF-8 なら、1文字が何バイトでも正しく扱えているけれども。 でも UTF-8 だと、文字コードの大小で文字種類の分類ができないからなぁ……。
↑ いかん、暫く Pascal 書いていたから、 同値判定に = と書いてしまう……。
↑*2 総本山で検索してみたら、 「EUC-JP の 0x8E は非対応」って書いてあった。 G2面非対応なら、きっとG3面も対応していないだろうなぁ……。
Intel Coreシリーズの SpeedStep の罠。 温度が上がったり冷却ファンがうるさかったり節電したりしようとする → クロック下げる → 処理速度が遅くなる → 同じ処理を行うにしてもCPUの稼働率が上がる → CPUのアイドル時間が減るので消費電力が上がって温度も上がる → クロック下げた意味無し。 冗談ではなく実話。 Let'snote CF-Y5 の CoreDuo 1.666GHz の場合、 最低で 125MHz まで下げられる。でも、 アプリケーション類は無負荷状態であっても OS や GUI の処理の負荷があるから、 875MHz よりも下げると温度が上がって冷却ファンの回転数も上がってしまう。 1000MHz よりも上げると、これまた消費電力が増えるので同上。 結局、875〜1000MHz 付近が、エネルギー効率が一番良いらしい。 Sat,24 Feb,2007に Let'snote 関連。
GearHead 日本語化パッチ改良版関連の話。
↑ fpc - ppc396 - FreePascal のバグではなくて仕様です?。 EUC-JP JISx0212 G3 とか EUC-JP JISx0213 G3 とか UTF-8 辺りの、 日本語1文字を3バイトとか4バイトとか使って表現する文字コードで Write() しようとした所、 表示内容が途中でぶった切られて勝手に改行された。 色々なパターンを試して、どこで改行されるか調べてみた所、 どうやら、2バイトで半角2文字分、とカウントして、 標準設定のコンソールならば半角80文字目、 つまり日本語で何文字になろうが関係無く80バイト目で、 クリッピングしていた。 駄目じゃん……。
↑ UTF8ToUnicode() して Write(WideString) を試してみたら、 UTF8ToUnicode() は変換できていないし、 Write() は相変わらず80バイト目でクリッピングするし、 で、駄目だった。
↑ 仕方が無いので、日本語で1文字ずつ表示したら、 GotoXY() で右端から半角2文字以内に飛ばした場合を除き、 変な所でクリッピングされなくなった。 でも、表示がとても遅くなった。
↑*4 GearHead を、UTF-8 なロケールで試した所、 ↑でクリッピングを回避したにも関わらず、 まだメッセージが途中で打ち切られる。 数えてみた。 255バイト目だった。 Pascal文字列だ……、回避策無し……。
↑*5 それ以外の部分でも、まだ文字の途中とかで切られている。 ソースコードを追いかけた……。 Length() で数えて、ASCII で数えて適切な文字数になる所で切っていた。 日本語文字列に対して切る時は、 先頭から順番に追跡しないと文字数は判らないし、 ちゃんと追跡して文字の途中にならない様にしなければならないんだよ……。
↑ GearHead の話は、 Fri,21 Mar,2008Sun,27 Apr,2008Sun,11 May,2008Wed,18 Mar,2009に続く。

Fri,14 Mar,2008

ようやく見つけた数年越しのバグ。
for (Hoge* ptr = start; ptr; ptr = ptr-<next)
	delete ptr;
Hoge は、適当な単方向なり双方向なりのリンクリスト型。 別バージョンで、
for (Hoge* ptr = start; ptr; ptr = ptr-<prev)
	delete ptr;
こんなのもある。 これが含まれている関数の付近に問題がある事までは判っていたのだけれども、 具体的な箇所が見つからないでいた。 /etc/mallo.conf を J して、ようやく見つけた。
ふと気づくと、駅前のコンビニが1軒、無くなっていた。更地。
libiconv。 MS-Windows で iconv を使ってみたら、 iconv.dll がちゃんとあるのに、 「iconv.dll 内に iconv_open が無い」とか 「iconv.dll 内に iconv が無い」とか 「iconv.dll 内に iconv_close が無い」とか言われて、 使えない。 どうやら MS-Windows版は LIBICONV_PLUG が #undef で、 libiconv_open(), libiconv(), libiconv_close() に しなくてはいけないらしい。 ざっと調べた所では、 OpenBSD は libiconv*() のみ、 FreeBSD は libiconv*() と iconv*() の両方使える、 NetBSD は libiconv*() のみ、 Solaris は iconv*() のみ、 GNU/Linux は iconv*() のみ、 らしい。 どうしろと……。
FreePascal の WideString。 中身は UTF-16LE らしい。 FreeBSD だと ASCII 近辺しか通らなくて、 日本語を突っ込むと1文字に付き ? が1つ表示される。 MS-Windows WIN32 だと、日本語も通った。 けれど、今度はリダイレクトでファイルに落とす事ができなかった。 vector で探した doslog とか言うツールを使っても駄目。 MS-Windows か FreePascal MS-Windows版 の仕様だろうか?。
FreePascal。 wine で動いた。 size_t と psize_t が見つからない。
↑ jwawintype にあった。 JWA は JEDI Windows API の事らしい。 …… size_t が ULONG 決め打ちなんだが、 WIN32 はそうでも WIN64 だと QWORD になるんでは?。
↑*2 が、しかし、 出来上がったバイナリは wine では実行できなかった。
SDL。 MS-Windows用のノーマル版は、コンソール出力に非対応らしい。 エラーメッセージとかウォーニングとかを printf()系で表示させる様な プログラムを書くと、不正な処理だか何だかのエラーを出してこける。 不便だ……。 web で検索してみると、stdout.txt とか stderr.txt に吐き出す、 と言う話も見当たるのだが、手元で試した所ではそうなっていない。
↑ OutputDebugString() や MessageBox() 辺りを使うといいらしい。 ただ、 OutputDebugString() はデバッガを使っていない時は無視されるし、 MessageBox() は1回毎にいちいちダイアログボックスを開かれて 応答があるまでスレッドが止まる。
↑ AllocConsole() すればコンソール専用ウィンドウが開かれ、 それ以降、標準出力や標準エラー出力に出した物は そのコンソール専用ウィンドウに出される様になるらしい。
{$IFDEF Windows}
var
	ConsoleInitialized: Boolean = False;
  {$IFDEF USE_WINDOWS_WRITECONSOLE}
	tb: Handle;
	dw: LongWord;
  {$ENDIF USE_WINDOWS_WRITECONSOLE}
{$ENDIF Windows}

{$IFDEF Windows}
Function InitializeConsole(): Boolean;
begin
	InitializeConsole := False;
	if not(ConsoleInitialized) then begin
		ConsoleInitialized := True;
		if Windows.AllocConsole() then begin
  {$IFDEF USE_WINDOWS_WRITECONSOLE}
			tb := Windows.GetStdHandle(STD_OUTPUT_HANDLE);
  {$ELSE USE_WINDOWS_WRITECONSOLE}
    {$IFDEF FPC}
			System.IsConsole:=true;
			System.SysInitStdIO();
    {$ENDIF FPC}
  {$ENDIF USE_WINDOWS_WRITECONSOLE}
			InitializeConsole := True;
		end;
	end;
end;
{$ENDIF Windows}
こんなんしておけば、あとは
{$IFDEF Windows}
	StrPCopy( cmsg, msg );
	Windows.OutputDebugString( cmsg );
	InitializeConsole();
  {$IFDEF USE_WINDOWS_WRITECONSOLE}
	StrPCopy( cmsg, msg + #$0a );
	Windows.WriteConsole(tb,@cmsg,Length(msg),dw,NIL);
  {$ELSE USE_WINDOWS_WRITECONSOLE}
	Writeln( stderr, msg );
  {$ENDIF USE_WINDOWS_WRITECONSOLE}
{$ELSE Windows}
	Writeln( stderr, msg );
{$ENDIF Windows}
すれば表示できた。楽ちん。 まぁ、UNIX系みたいに、 何も考えずにいきなり Writeln( stderr, msg ); で済むと一番簡単だが。
↑ AllocConsole() が呼ばれてから実際にウィンドウが開くまで、 遅延がある。 なので、 AllocConsole() した直後に FindWindow() すると 0 が帰ってくるし、 AllocConsole() した直後に MessageBox() とかすると、 MessageBox() が先に開いて、 その上にコンソールウィンドウが開いてしまい、 MessageBox が隠されてしまう。 AllocConsole() した直後に単純に Sleep(0) しただけでは駄目 (Sleep(10000) とかでも駄目)で、
var
	Console_HWND: Windows.HWND;
begin
	repeat
		Windows.sleep(0);
		{ In MS-Windows, the order of sleep is mili-second, not second. }
		Console_HWND := Windows.FindWindow( NIL, cmsg );
	until Console_HWND <> 0;
end;
としなければならなかった。

Sat,15 Mar,2008

VE-1, YF-19 ¥1,890-。VF-1S, YF-21 ¥2,280-。 1/144 GX ¥550-。
GUNDAM X SIDE.1 タイムバーゲンで¥600-。 F-91 サントラがタイムバーゲンで¥1,000-。
GUNDAM X SIDE.1 SIDE.2 SIDE.3 各¥1,250-。
鋼鉄の咆哮2 ¥1,890?。
大洋のセラミックヒーター ハンダごて、 機種によっては別売りの耐熱キャップがつけられるのね。
エンドミル、6mm しか売っていなかった。 ドリル歯、半月タイプは全く売っていなかった。

Sun,16 Mar,2008

GUNDAM SingleHistory 1 ¥2,350-で3枚。
2GB の USBメモリとか SDメモリとかが¥1,280-。
EeePC の後、 台湾各社が同程度の機種の予告広告を出しているけれど、 そんなに売れているのだろうか?。 工人舎の時は、音無しだった様な……、 まぁ工人舎はやたら高価で日本だけだけれど。
本屋が1軒無くなっていた。
PD1 無し、PD2CV 無し、APD2 無し、 PD3 無し、PD4 無し、 PD5 無し、PD5X 無し、 PD5plusX ¥3,980-、 PD6 ¥3,980-。 ブルーフロウ 無し、ブルフロ ファンディスク 無し、 ブルーブラスター 外箱痛み¥2,680- 通常品¥2,980-で1本、ブルブラ ファンディスク 無し。 ガジェットトライアル 無し。 火星計画2 無し、火星計画3 無し
銀河英雄伝説 V g ¥980-、銀河英雄伝説 VI SG ¥980-。
攻殻機動隊2 ¥300- と¥105-。 FSS 1〜12巻、各¥300-。 でも、中古CDにはあまり抵抗が無いけれど、 古本はちょっと抵抗があるのだよなぁ……、 ディジタルデータはある程度までは原型を保持できるけれど、 アナログデータは、とか、 JASRAC がらみの話も含めて。 新品 CD でも、どうせ JASRAC や流通やら事務所やらでピンハネされて、 原作者にはほとんど回らないと考えると……、 あと利用者の権利侵害の問題 (私的流用は許可されているのに CCCD とかいうイカサマ商品を出しているとか) とか。 それに対して、 本は印税制度がそれなりに……どれなりなんだろう?……、 とにかく原作者に還元されるのだよねぇ?。
Google。 1ヵ月毎に来てみたり3ヶ月来なかったり、よくわからん。

Tue,18 Mar,2008

o-o.resolver.o.*.*.*.*.????????????????.l.google.com って何だ?。

Wed,19 Mar,2008

アーサー・チャールズ・クラークが亡くなったらしい。

Fri,21 Mar,2008

GearHead 日本語化パッチ改良版。 ようやく落ち着いたと思う。 4週間かかったのか……。 Sun,27 Apr,2008Sun,11 May,2008Wed,18 Mar,2009に続く。

Sat,22 Mar,2008

GNU/Linux で iconv を使っているプログラムを スタティックリンク(静的リンク)したら、 iconv_open() が必ずエラーで帰ってくる様になった。 どうやら GNU/Linux が標準で持っている iconv は libiconv-1.x系ではなくて、 gconv とか言うコンパチライブラリらしく、 常に /usr/lib/gconv/* を使うらしい。 ところが、静的リンクにしてしまうと、 /usr/lib/gconv/* を動的に読み込めなくなってしまって、 変換エンジンの起動ができなくなって、 iconv_open() が必ずエラーになってしまうらしい。 libiconv-1.x系と差し替えたら静的リンクでも動く様になった。
↑ iconv2 と呼ばれる系列が、 gconv に近い、もしくは gconv の別名、 らしい?。
PD5 ¥3,480-、PD6 ¥3,980-。

Mon,24 Mar,2008

踏切で非常を知らせる合図があったとかで緊急停止。 3分遅れ。 最近多いなぁ。

Tue,25 Mar,2008

TrueCrypt 5.x系列。 Sun,15 Oct,2006Sun,09 Sep,2007Sun,02 Mar,2008に関連。 4.x系から 5.x系へ移行した際に、 GUI 追加や システム方面の暗号化の充実(TCGINA, TCTEMP の本体への統合)と共に、 遂に Mac OS X 対応したらしい。 で、 Mac OS X へ対応したなら FreeBSD への porting もできるだろ、 と言う有志(勇士?)が立ち上がり、そこそこ動く様になったらしい。 まだ FreeBSD 本家の ports への統合は、されていない。 Fri,13 Mar,2009Tue,17 Mar,2009に続く。

Anthy の学習辞書の話、 Sun,02 Sep,2007 Thu,18 Oct,2007の続き。 「かな漢字変換 anthy で、個人用学習データを活用して変換結果の改善を目指すパッチ

半年間の累計学習量のデータが貯まったので、グラフにしてみた。
Anthy 累計学習量の変化 (62KiB)
グラフの左端が開始時、右端が約半年経過後。 横軸の数値は当方での管理番号で、日数ではない。

UNKNOWN_WORD の動きはよく判らん。
SUFFIX_HISTORY と INDEPPAIR が、 4ヶ月経過で飽和の傾向が見え始めた感じがする。
EXPANDPAIR と CAND_HISTORY と PREDICTION は、 ここままいけば飽和しそうな感じではあるが。
OCHAIRE は飽和しそうな気配が全く感じられない。
last-record1 のサイズは、OCHAIRE の量に引きずられていると思われる。

ふと。 JunkMetal な人って、メックウォリアーじゃ駄目なのかな、とか思ってみた。 ……メックウォリアって参加人数少なかったっけ。 あと、 CUI でネットワーク対戦可能な 非リアルタイムもしくは PowerDoLLS 3, 4 辺りの半リアルタイムルールの GearHead とか作ってみたら、 JunkMetal な人も許容するのだろうか、とか。 でも CUI だと GearHead な人からも JunkMetal な人からも倦厭され、 旧来からの Roguelike な人でかつバトテ属性な人だけしか来なくて、 ものすごく過疎になりそう気もする……、 MAngBand とか見ると過疎化しているしねぇ。 さらには、サーバソフトウェアをBSD系専用にしてしまうとかすると どうなるのだろう、とか。
「メックウォーリアー」で web の検索をかけてみた。 「メックウォーリアー風の TRPG のリプレイが……」とか言う記事があって、 それはバトルテックって言うんじゃ、とか突っ込みたくなった。 でも最近?は、メックウォリアに統一したのだっけ?。
とりとめの無い馬鹿ネタと言えば。 ARTDINK の HR2 のルールだけクローンのゲームを作ってみたら 受けるかどうか、とか。 ロボットの制御プログラムは生の言語で作らせて、 HR2 サーバに TCP/IP で喋ると動く様にしておけば、 言語や OS の制限が無くなるから……とか。 それって建設する CoreWars じゃん(CoreWars は敵を破壊するのが目的)、 と言う話も。 TCP/IP を喋るプログラムをまともに作れるかどうかの敷居が高すぎると言う話も。 web で TCP/IP を喋るプログラムの解説を探してみると、 ほぼ間違いなく、 本人が作ったプログラム同士かつ同じ OS 上同士で通信していると 絶対に気付かない、 TCP/IP の仕様に違反しているバグがあるし。
……アートディンクはいまだにA列車シリーズを売っていて、 A列車シリーズで食っているのか……?。 いまだに食っていけている辺りが凄いというか何というか。

Wed,26 Mar,2008

iconv。 libiconv を ShiftJIS に設定して 「~」とか「〜」とか「 ̄」とか使うと ハマるのを忘れていて、思いっきりかましてしまう。 しかも iconv.dll が Run time error とか出して落ちるし。 で、これの対策ってどうやるのだっけ。
↑ Kaoriya 版 iconv.dll-1.10 バイナリ配布版 だけで発生する問題らしい。 一部の筋(ruby と popfilter と sylpheed 辺り)ではちょっと有名な話らしい。 Sylpheed版 iconv.dll-1.10 にしたら、問題無くなった。 香り屋版はエラー時に assert() かます様な設定にでもしているのかな。 香り屋版のパッチとスクリプトをざっと見た感じでは、見つからなかったけれど。
↑ 香り屋版の vim で、誰も問題にしなかったのか疑問に思った。 香り屋版 vim のバイナリパッケージをダウンロードして見てみた。 ……。 香り屋版 iconv.dll 使わずに、オリジナル版 iconv.dll 使ってるし。

Fri,28 Mar,2008

vim。 文字コード自動判別マクロ で、 内部文字コードが euc-jp で ShiftJIS や CP932 のファイルを編集した時に、 ファイル内に ~ や \ や 〜 や − が含まれていると iconv がこける仕様に対応(対処)した。 内部文字コードを euc-jp-ms に差し替えます。

Sat,29 Mar,2008

定期預金。 1月29日30日31日に1ヵ月満期自動継続定期預金を組むと 満期は2月29日になるが、 それ以降の自動継続の満期は毎月29日になるらしい。
EIZO L465 ¥12,800- 16inch, 1280x1024 D-sub & DVI-D, 45ms, シャープTN、 らしい。 一部のビデオカードを使うと DVI-D が正しく映らないらしい。
EIZO L557BK ¥17,800- 17inch, 1280x1024 D-sub & DVI-D, 25ms, サムスン PVA、 L465の直系後継らしい。
Let'snote CF-T2 (PenM 800MHz) ¥49,800-、 Dynabook 1620 (PenM 1.2GHz) ¥49,800-、 Let'snote CF-T2 (PenM 1.2GHz) ¥52,800-。 どういう価格設定なんだろう。
IO-DATA MOH2-U1.3P ¥5,250-。 BUFFLAO MO-PL1300U2 ¥6,300-。 BUFFLAO の方が1世代新しいらしい。
PD6 ¥5,229-。
Vine GNU/Linux。 手動でリンクした実行ファイルを実行しようとすると、
ELF binary type "0" not known.
とか出て動かない。
% brandelf -t Linux hoge
とかやってから無理矢理動かすと、
ELF interpreter /usr/lib/libc.so.1 not found
とかすっとぼけた事を言ってくる。 どうやら、リンクする時には ダイナミックリンカ名を省略してはいけないらしい……。
nkf。 nkf -S -e -Lu すると、 -X (「JIS X 0201 片仮名」を「JIS X 0208 片仮名」に変換)も付くのね。 規格だけ見ると eucJP は G2 で JIS X 0201 片仮名を持てるから デフォルトで変換するのはおかしいと言う考えもあるけれど、 実運用上で考えると eucJP 対応といいつつ G2 や G3 に 対応していないソフトってあったりするから有難い、 とも言えるわけで。 -x (片仮名を変換しない)オプションもある事だし。
iconv と cp932 と ShiftJIS と eucJP と eucJP-MS と ISO-2022-JP。 eucJP も ShiftJIS も cp932 も、 規格の上では ISO-2022-JP と1対1対応で設計されている筈だから、 実際の iconv がやっている様な CP932 → UCS → eucJP-MS とか eucJP-MS → UCS → CP932 の様に、 1対1対応していない Unicode を挟む様な変換をせずに、 CP932 → ISO-2022-JP → eucJP とか eucJP → ISO-2022-JP → CP932 の様に変換すれば、 ややこしい問題が発生しなくて済む様な気がするのだが、さて?。 これだと変換ソフトが日本語専用になるけれど、 どのみち iconv だって UCS と eucJP-MS や CP932 との変換テーブルを持っているのだから 大して変わらない様な。 ……。 って、Unicode ができる以前の変換ソフトって、普通そうしていたよなぁ。 あれ、nkf とか qkc ってそうかな?。

Sun,30 Mar,2008

攻殻機動隊。 実写風の CM の出来栄えが素晴らしい。
タチコマな日々。 「なしせんにん」と言うのは、 「梨売りと仙人」の事らしい。 「最後の1葉」と言うのは、 「The Last Leaf(最後のひと葉)(最後の一枚の葉)(最後の一葉)」 の事らしい?。

Mon,31 Mar,2008

動的リンクした ELF の確認、FreeBSD/i386 と FreeBSD/amd64。 対象アーキテクチャと、今いるアーキテクチャが同じならば、 ldd でリンク状況が見られるけれど、 対象と今いる所が違うと見られない。 この場合は objdump -p で確認できるらしい。
FreeBSD 6.x。 chroot な環境に mknod したが、デバイスとして機能していない……、 5.x から devfs になったの忘れてた。 mount_devfs するらしい。
さて、今年は工画堂ネタはあるのだろうか。

FENIX HomePage
G-HAL HomePage
Mail to, メールはこちらへ
Suggestion Box, 投書箱
BBS, 掲示板 UserName:BBS、Password:BBS
(C) 2008 G-HAL