history

青木日記 RSS

<前月 | 最新 | 次月>

2004-11-05

RHG 読書会

明日っていうか今日 11/6 (土) は RHG 読書会です。

今月はなんとか行けそう。

(03:04)

tdiarysearch.rb / apply_plugin

tdiarysearch にバグが二つ来てるんだけど、 これがまた全部プラグインがらみなんだよな。 もうウンザリだよプラグイン。 やっぱ tdiarygrep の仕様のほうが気楽でよかった……。

(03:45)

TMail

TMail かあ。 別にメールに興味がなくなったわけじゃないんだが、 いまは相対的にウェブ方面のほうに魅かれる。

……というのは、まあよーするに、興味が薄れてるのかな。 ちょっと考えてみても BitChannel とか Ripper をメンテする 時間を削ってまで TMail をいじることはありえない。 ということは時間があればそれは全部 BitChannel とか Ripper に行くわけで、 TMail は放置されるのが必然だ。

(04:18)


2004-11-06

バイトだるー

このところ突然日記を書かなくなったのは、 コンビニバイトなんぞをやっていたからです。 週に 1・2 回にしてください〜と頼んでおいたはずが 「今週だけ」とかいう口実で先週が 3 日、今週が 4 日入ってて、 原稿の日程も重なって、 ついでに大学のテストも重なって、 もう何やってんだかわからなくなってきました。

いいかげんコンビニにはうんざりしてるんだけど、 それでも歯ブラシの柄を磨くよりは百倍マシだ。 あのバイトは、なんつーか、活力を根こそぎ吸い取られる。 それに対してコンビニはただ疲れるだけで済むしな。 賞味期限切れになったやつを食べられるのも得だ。

……と書くといかにも誤解されそうなので念のために追記しておくと、 賞味期限切れなのが嬉しいわけではないからね!

(05:43)

誤算

しまった、日付が変わってしまった。 ここの日記は 05:00 が境界になってるんだよね。

え? てことはもう 5 時すぎてんの? ええっ?

(05:44)

コンデンサみたいな

やっぱ行動の波というのはあると思うんです。 「いまは情報を吸収する時期」とか「いまはネタを放出する時期」みたいな。 プログラミングでも原稿でもそうじゃないでしょうか。 ちなみにわたしはいま「情報を吸収する時期」のような気がしてます。

だから原稿が進まないんですよ! そうなんですよ! (必死だな)

(05:48)

コンデンサ (2)

そういえば勉強に関してもやはり波はあるらしく、 大学浪人中は 「6 月はひたすら数学」「8 月はひたすら世界史」 とかいう恐しい勉強方法をしてました。 ただ英語の単語だけは継続的にやってたので微妙に半端な気がしないでもない。

(05:53)

本日のツッコミ (全2件) [ツッコミを入れる]

n某 [爆睡中でつか?]

青木 [うっす。やっと起きました。
いちおう行ってみよっと……]


2004-11-07

るびま

なんだかんだ言いつつ編集方面で参加することにしました。 とりあえず ML のログと編集 Wiki を読んどかないとな。

(05:04)

RHG 読書会

そうそう、今日っていうか昨日は RHG 読書会でした。 が、おもいきり寝過ごして飲み会だけになってしまいました。 なにやら待っててくださったみたいで、申し訳ない。

それにしても今日はえらいたくさん人がいましたね。 もはや読書会っていうより月例 Ruby 飲み会の様相を呈してきました。 ま、面白けりゃなんでもありでしょ!

ログはいつものとこにあります。

http://pub.cozmixng.org/~the-rwiki/rw-cgi.rb?cmd=view;name=RHG%C6%C9%BD%F1%B2%F1%3A%3A%C5%EC%B5%FE+Reloaded

(06:44)

本日のツッコミ (全1件) [ツッコミを入れる]

すぎむし [たのもしい えんぐんが あらわれた!]


2004-11-08

RDocのattrの扱い

[ruby-talk:119406] Re: [RDOC] Documenting accessor methods as methods

def a=(v) で作ったメソッドは attribute のとこに出るべきだ、 いやその逆に、attr_reader で作ったメソッドもメソッドとして出るべきだ、 という意見。

俺もこれはずっと気になってたんだよ。 「属性」なんて区分はなくすべきだろ。 属性かメソッド (関数) か、なんてのは実装の領分であって、 ドキュメントに書くべきことではない。 少なくとも Ruby ではその区別がないのだから区別するべきではない。 『オブジェクト指向入門』p.131「統一的参照の原則」も参照のこと。

流れによっては参戦しよう……そんな時間あるのか?

(06:25)

原稿書きの手法

ふーむ、るびまって編集中から Hiki 上でやってるんだなあ。 Wiki 上で (ウェブ上で) 長い文章を書くのは大変じゃないだろうか。 俺はツールをいろいろ使わないともう文章は書けなくなくなってしまった。 最低でも分量表示付き目次とソースコード展開と用語チェッカ、 あとできれば内容の依存関係をチェックするツールも使いたいな。

分量表示付き目次ってのはこういうのね

~/c/linuxintro % list                                      aamine@harmony
 1.   22  intro.rd ........ Linuxプログラミングを始めよう
 2.   42  abstract.rd ..... Linuxのすがた
 3.   22  stream_sys.rd ... ストリーム(1)システムコール編
 4.   24  stream_stdio.rd . ストリーム(2)stdio編
 5.   19  practice1.rd .... 実習(1)headを作る
 6.   30  practice2.rd .... 実習(2)grepを作る
 7.   15  hier.rd ......... Linuxのディレクトリ構造
 8.   21  fs.rd ........... ファイルシステム
 9.   23  process.rd ...... プロセス
10.   10  signal.rd ....... シグナル
11.   16  etc.rd .......... プロセスの環境
12.   18  network.rd ...... ネットワークプログラミングの基礎
13.   32  httpd.rd ........ 実習(3)HTTPサーバを作る・基本編
14.   27  httpd2.rd ....... 実習(4)HTTPサーバを作る・発展編
15.   30  advanced.rd ..... 本書を終えた後は
 
Total 342 Kbytes
 
~/c/linuxintro % ind intro.rd                              aamine@harmony
1 Linuxプログラミングを始めよう intro.rd      509
   1 本書の対象読者                                19
   2 本書で話すこと                                10
   3 対象とする環境                                10
   4 必要な環境                                    16
   5 開発環境の導入                                31
      1 Fedora Coreの場合                               6
      2 Debian GNU/Linuxの場合                         21
   6 gccを使ったビルド(1)                        87
      1 うまくコンパイルできないとき                   22
   7 開発環境の話                                  43
      1 C言語以外の言語                                10
      2 統合開発環境について                           13
      3 どのエディタを使うか                            8
      4 C言語の規格                                    10
   8 情報の集めかた                                46
      1 man                                            35
      2 info                                            6
      3 検索エンジン                                    3
   9 gccを使ったビルド(2)gccのオプション        108
      1 デバッグ                                       17
      2 デバッガ                                       55
      3 gcc -Wall                                       9
      4 最適化                                          8
   10 コマンドライン引数                          134
      1 argcとargv                                     42
      2 args.c                                         27
      3 実験                                           65

ソースコード展開というのは以下の #@mapfile みたいなやつ。

エディタは何でも構わないので以下のプログラムを打ち込んでください。
 
//list[hello_c][hello.c]{
#@mapfile(src/hello.c)
#include <stdio.h>
 
int
main(int argc, char **argv)
{
    puts("Hello, Linux!");
    return 0;
}
#@end
//}

この原稿をプリプロセッサにかけると #@mapfile 〜 #@end の部分に ./src/hello.c が展開される。 単なる include 機能では原稿を書くのには不足である。

最後の依存チェッカは今回の Linux 本で初めて使ってるんだけど、 キーワードの provide/require を宣言しておくと 内容の依存関係をチェックしてくれるツールだ。 以下の #@require と #@provide がそれ。

このあたりの事情も「Linuxはカーネルだけ」と言われる所以です。
#@provide(libc)
 
#@require(ライブラリ)
続いて/libを眺めてみると、他にもlibmだとかlibdlだとかlibnssなんたら
というファイルがありますね。実はこれも標準Cライブラリの一部です。
libmならば数学関係の関数、例えばsin()やcos()が入っています。
一つのライブラリなのに複数のファイルに分かれている事情はそれぞれです。
例えばlibmは歴史的な理由ですが、libdlには必然性があります。

読者が知っていると仮定してよいかどうかあやふやなものも とりあえず require しておけばよい。 本全体の前提条件にしたいキーワードは別途専用ファイルで宣言できる。

原稿書きツールに関する全体的な注意としては、 人間がいじる部分とツールがいじる部分を明確に分けておくこと。 例えば用語チェックをするなら怪しい個所を報告するだけに留め、 勝手に修正したりはしない。 長い文章では適用外にしたいところが必ず出てくるからだ。

そうは言っても自動変更するツールもやはり必要になる。 例えばソースコード展開プリプロセッサがそうだ。 このようなツールを使う場合はツール適用前に必ずコミットしておいて、 適用後は cvs diff で (目で) 変更点をチェックしてから再度コミットする。 ちなみにバージョン管理システムを使わないなんてのは問題外である。

最後に、内容をチェックするときは紙に印刷して読んだほうがよい。 なんでかわからないが、画面で読むだけでは絶対にチェック漏れが出る。

(06:27)

本日のツッコミ (全2件) [ツッコミを入れる]

たむら [説得力のある`あおきKNOWHOW' 投入きぼんぬ>るびま
それは、そうとLinux本も楽しみ]

青木 [たいしたことはできませんですよ。
Linux本は……早く書かないとなあ。]


2004-11-09

ソースコード検索エンジン

http://namazu.org/~satoru/pub/mito2004i/

以前も触れた高林さんの検索エンジン。 いい感じだー!

「Ruby コードの解析には flex ではなく ripper が使えないかな?」 とあるなあ。 これが「当然 ripper を使う」になるまではもっていきたいねえ。

(17:47)


2004-11-12

tDiary / コメント SPAM 避けチェックボックスパッチ

どこかから「パッチ公開キボンヌ」という声が聞こえてきたので、 この日記で使ってる tDiary のコメント SPAM 避けチェックボックスの パッチを置いておきます。 このパッチを当てるとツッコミ書き込みボタンの横にチェックボックスが付き、 それにチェックを入れないと書き込めなくなります。

(05:58)

ほしみ

もしかして「☆ミ」って流行ってる? プチ流行ってやつ?

(17:26)

反省

だめだ、ちゃっとはだめだ……。 慣れてないから無制限に時間を費してしまう。 もうちょっと現実に戻ろう。

(00:41)

本日のツッコミ (全7件) [ツッコミを入れる]

halchan [リファラではなくてコメントですよね?]

青木 [うわ。ありがとうございます。
修正しました。]

yuco [どうもありがとうございます。

skel/diary.rhtml ですが、
<input type="check" name="ishuman">
ではなくて、
<input type="checkbox" name="ishuman">
ですよね。]

青木 [あ、そうですね。なんでcheckになってるのか謎です。
(しかも HEAD ではちゃんと checkbox になっている)]

fumihiro [今patch使ってみたのですが,
<%%= comment_spamwarn() %%>
最後の%が一個多いみたいです.
そのままコンパイルエラーになりました.]

飴谷 [初めまして。パッチを使ってみたのですが、「spamwarn.html」を別途用意する必要があるのですね。
index.rbと同じ位置にspamwarn.htmlを置くのかと思いましたが、以下のようなエラーがでました。どこに置くのでしょうか?

TDiary::ForceRedirect (TDiary::ForceRedirect) /サーバにおいたパス名/tdiary/index.rb:35]

飴谷 [ちなみに、tdiaryは2.0.2を使っています。]


2004-11-13

daily build

[ruby-dev:24825]

> ついでに欲張るなら、いろんなアーキテクチャで実行するひとがいるといいと
> 思います。そうすれば、自分の使っているマシン以外で発生する問題を知るこ
> とができ、また、リリース前にいろんなアーキテクチャでテストを行う時に、
> メールで頼まなくてもしばらく待つだけでテスト結果が得られるようになりま
> す。

daily build は俺もやりたかったんだー。 でも電気代の財源を確保してから、と思ってたら akr さんに先を越されてしまった。 AlphaServer を 24h 運用すると高くつくからなあ……。

あ、そういえば AIX 入れなきゃ。

(22:06)


2004-11-14

Linuxプログラミング本

今日 (13 日の土曜日) はお仕事の日にした。

うわー、こりゃだめだ、見直すとどんどん量が増えていく。 HTTP サーバを完全ソースコード付きで解説するのはあきらめるしかない。 ポイントを絞って「このシステムコールがここで使えるぞ!」と紹介する方針でいこう。 その代わり、別のアプリケーションの構造を解説してもいいな。 何か面白いアプリケーションを探そう。

(05:27)

Linuxプログラミング本 (2)

「さまざまなプロセス間通信機構」 という節でついうっかり

=== 分散オブジェクトシステム

なんて項を作ってしまって、えらいことになった。 なんでわたしは ORPC なんて単語を書いてますか? これが Linux の C 言語の入門書かっつーの。

ざっくり削除。

てか 9:00 からバイトなんですけど。 徹夜後に 8 時間バイト……生きて帰ってこられるだろうか。

(08:18)

本日のツッコミ (全3件) [ツッコミを入れる]

arton [削除と言いつつloveruby.netのどこかに上がっていたらとてもいいのになぁ(あるいは次の本か)。]

たむら [↑うんうん(藁]

青木 [arton さんやたむらさんが読んで
おもしろいようなことは書いてませんよー ^^;;;
GNOME と KDE の話を書いたら筆がすべって COM に行って、
ちょうど上に RPC の話が書いてあったから
「DCOM では RPC を拡張した ORPC が…」てな感じです。]


2004-11-15

るびま 3 号

http://jp.rubyist.net/magazine/?0003

出ましたね。 今号はちょっとだけ編集に参加しました。 個人的におもしろかったのは Java (Library Report) と Win32OLE でしょうか。 あと tk も記事を読んでから 256 倍界道編を読み直しましたよ。

(22:18)


2004-11-20

RS/6000 7012-397; AIX 5.1L installation

長らく放置していた RS/6000 に AIX をインストールしよう。

実はこのマシンはマイクロチャネルアーキテクチャ (MCA) だ。 そんなわけで最新の AIX は動かない。 MCA で動作するのは AIX 5.1L が最後である。 この程度のマシンでは AIX 5 は辛いという噂もあるが、 Ruby をコンパイルするためにはソフトウェア環境の 鮮度が重要なのであえて 5.1 を選んだ。

さて、通常、鍵付き RS/6000 では次の手順を踏んで起動する (らしい)。

  • シリアルケーブルをつなぐ。コネクタは幅広のメス
  • キーを secure (鍵マーク) にする
  • 電源オン
  • 「200」が出るまで待つ
  • キーを service (スパナマーク) にする
  • 30 秒以内にリセットボタンを押す
  • シリアル 1 にシリアルコンソールが出る
  • "Exit Main Menu" を選ぶ
  • キーを normal (OK) にして Enter

だがインストール時はブートの手順がちがう。

  • キーを service (スパナ) にして起動
  • CD-ROM を入れる (起動するまでかなり間があるので注意)
  • メッセージが出たら「2」のキーを押して Enter

あとはメニューに従っていけばよい。

  • インストール中の言語の選択 (1 = 英語)
  • システムの構成 (1 = 既存システムにマージ、 2 = 新規 / 上書き、3 = バージョンアップ)

最初、ここでまちがって 1 を選んでしまった。 中古マシンだと何事もなく進むから困る。

RS/6000 7012-397; AIX 5.1L installation (2) システムの構成

「システムの構成」で 2 を選ぶと System Settings、Primary Language、Advanced Option の三つが設定できる。

System Settings では新規インストールかマージインストールかを選択。

Primary Language はロケールの選択。 日本語は Japanese (PC) と Japanese (EUC) がある。 Japanese (PC) がデフォルトっぽいが、今回は EUC を選んでみた。 UTF-8 の場合はインストール後に設定しなければならない。

Advanced Option ではインストールするパッケージの選択と、 Trusted なんとかを入れるかどうかが選べる。 PCI システムだとデスクトップ環境が選べたり、 64bit システムだとカーネルの種類が選べたりする。

RS/6000 7012-397; AIX 5.1L installation (3) インストール

あとはひたすら待つ。 途中でキーを NORMAL (OK) にしておくよう言われるので、まわしておく。 これをやっておくと作業終了後にリブートしてくれるらしい。

……まだだった。 AIX CD-ROM vol.5 を入れて Enter。 たぶん日本語環境だろうな。

RS/6000 7012-397; AIX 5.1L installation (4) インストール後

よーし終わったぜ!

リブートしたぜ!

ログインプロンプト出たぜ!

Console login: root[Enter]

Console login: root[Enter]

Console login: root[Enter]

Console login: root[Enter]

Console login: root[Enter]

来ました。お約束のトラブルが。 何度入力しても入力しても戻ってきてしまう。 しかもこれは端末がらみか……。すごい嫌なんですけど。

Google した結果、以下のことがわかった。

  • AIX で
  • 特定の機種で
  • シリアルコンソールからログインできなくなることがある

解決策はいろいろあるらしいので全部書いておく。

で、今回はシリアルコネクタ変換アダプタが原因だった。 Sun で動作実績がある別のコネクタを持っていたので これに変えてみたら、運よく動いてくれた。

もう、頼むよ本当に……。 シリアル関係はこれまでも何度かはまったんだよな。 安い変換アダプタとかはダメです。本当に。

RS/6000 7012-397; AIX 5.1L installation (5) システムの探索

あぁ、やっとログインできた。 とりあえずお約束の uname を打っとく。

# uname -a
AIX localhost 1 5 000******00

……謎の文字列 (一部は伏せる) が返ってきた。

# pwd
/
# ls
.sh_history  etc          lpp          sbin         unix
audit        home         mnt          tftpboot     usr
bin          lib          opt          tmp          var
dev          lost+found   proc         u

普通? いや、「u」って見たことないな。

# ls -l
合計 91
-rw-------   1 root     system           98 Nov 20 08:39 .sh_history
drwxr-x---   2 root     audit           512 Apr 10 2003  audit
lrwxrwxrwx   1 bin      bin               8 Nov 20 07:13 bin -> /usr/bin
drwxrwxr-x   5 root     system         2048 Nov 20 07:57 dev
drwxr-xr-x  19 root     system         2560 Nov 20 07:57 etc
drwxr-xr-x   4 bin      bin             512 Nov 20 07:33 home
lrwxrwxrwx   1 bin      bin               8 Nov 20 07:13 lib -> /usr/lib
drwx------   2 root     system          512 Nov 20 07:13 lost+found
drwxr-xr-x  34 bin      bin            1024 Nov 20 07:51 lpp
drwxr-xr-x   2 bin      bin             512 Apr 10 2003  mnt
drwxr-xr-x   6 root     system          512 Nov 20 07:19 opt
dr-xr-xr-x   1 root     system            0 Nov 20 08:39 proc
drwxr-xr-x   3 bin      bin             512 Nov 20 07:15 sbin
drwxrwxr-x   2 root     system          512 Nov 20 07:24 tftpboot
drwxrwxrwt   3 bin      bin            1024 Nov 20 07:58 tmp
lrwxrwxrwx   1 bin      bin               5 Nov 20 07:13 u -> /home
lrwxrwxrwx   1 root     system           21 Nov 20 07:47 unix -> /usr/lib/boot/unix_up
drwxr-xr-x  30 bin      bin            1024 Nov 20 07:55 usr
drwxr-xr-x  19 bin      bin             512 Nov 20 07:33 var

/u は /home なのか。user の u かな。

ちょっと思ったんだが、シンボリックリンク一つでも OS ごとに ずいぶん違うもんだな。たしか Solaris は bin -> ./usr/bin になっていた。 Tru64UNIX は bin -> usr/bin だった。で AIX は /usr/bin と。 ちなみに俺は Tru64 スタイルが好き。

# w
  08:44AM   稼働時間 47 分,  1 ユーザ,  負荷平均: 0.01, 0.03, 0.05
User     tty          login@       idle      JCPU      PCPU what
root     tty0        08:28AM          0         0         0 w
# ps -ef
     UID   PID  PPID   C    STIME    TTY  TIME CMD
    root     1     0   0 07:56:36      -  0:00 /etc/init
    root  2450     1   0 07:57:08      -  0:00 /usr/sbin/syncd 60
    root  3142  4160   0 07:57:30      -  0:00 /usr/sbin/inetd
    root  3490  4160   0 07:57:36      -  0:00 /usr/sbin/dpid2
    root  3710     1   0 07:57:08      -  0:00 /usr/lib/errdemon
    root  3940  4160   0 07:57:20      -  0:00 /usr/sbin/syslogd
    root  4160     1   0 07:57:15      -  0:00 /usr/sbin/srcmstr
    root  4686  4160   0 07:57:27      -  0:00 /usr/sbin/portmap
    root  4964  4160   0 07:57:33      -  0:00 /usr/sbin/snmpd
    root  5192  4160   0 07:57:24      -  0:00 sendmail: accepting connections
    root  5940  4160   0 07:57:39      -  0:00 /usr/sbin/hostmibd
    root  6716  4160   0 07:57:46      -  0:00 /usr/sbin/rpc.lockd
    root  6970  4160   0 07:57:43      -  0:00 /usr/sbin/biod 6
    root  7230     1   0 07:57:47      -  0:00 /usr/sbin/cron
    root  7532     1   0 08:20:41      0  0:00 -ksh
    root  7750     1   0 07:57:56      -  0:00 /usr/sbin/uprintfd
    root  8054  4160   0 07:57:52      -  0:00 /usr/sbin/qdaemon
    root  8268  4160   0 07:57:56      -  0:00 /usr/sbin/writesrv
    root  9042  4160   0 07:57:59      -  0:00 /usr/sbin/rsct/bin/ctcasd
    root  9292     1   0 07:57:56   lft0  0:00 /usr/sbin/getty /dev/lft0
  imnadm  9546     1   0 07:57:56      -  0:00 /usr/IMNSearch/httpdlite/httpdl
    root  9806     1   0 07:57:56      -  0:00 /usr/lpp/diagnostics/bin/diagd
    root 10064  4160   0 07:57:59      -  0:00 /usr/sbin/rsct/bin/rmcd -r
    root 10356  7532   5 08:44:04      0  0:00 ps -ef
    root 11612  4160   0 07:58:04      -  0:02 /usr/sbin/rsct/bin/IBM.ERrmd
    root 12128  4160   0 07:58:04      -  0:00 /usr/sbin/rsct/bin/IBM.CSMAgent
    root 12386  4160   0 07:58:13      -  0:01 /usr/sbin/rsct/bin/IBM.AuditRMd

システムを入れるたびに sendmail を止めてまわらないといけないんだよなー、めんどいなー。

ああそれから、BackSpace が効かないのが Linux の宿命だ。 そういうときは

# stty erace '^?'

で黙らせる。

ネットワークも見ておこう。

# ifconfig -a
lo0: flags=e08084b<UP,BROADCAST,LOOPBACK,RUNNING,SIMPLEX,MULTICAST,GROUPRT,64BIT>
        inet 127.0.0.1 netmask 0xff000000 broadcast 127.255.255.255
        inet6 ::1/0
         tcp_sendspace 65536 tcp_recvspace 65536
 
# netstat -a -f inet
Active Internet connections (including servers)
Proto Recv-Q Send-Q  Local Address          Foreign Address        (state)
tcp4       0      0  *.daytime              *.*                    LISTEN
tcp        0      0  *.ftp                  *.*                    LISTEN
tcp        0      0  *.telnet               *.*                    LISTEN
tcp4       0      0  *.smtp                 *.*                    LISTEN
tcp4       0      0  *.time                 *.*                    LISTEN
tcp4       0      0  *.sunrpc               *.*                    LISTEN
tcp4       0      0  *.smux                 *.*                    LISTEN
tcp        0      0  *.exec                 *.*                    LISTEN
tcp        0      0  *.login                *.*                    LISTEN
tcp        0      0  *.shell                *.*                    LISTEN
tcp4       0      0  *.klogin               *.*                    LISTEN
tcp4       0      0  *.kshell               *.*                    LISTEN
tcp4       0      0  *.rmc                  *.*                    LISTEN
tcp4       0      0  *.writesrv             *.*                    LISTEN
tcp4       0      0  loopback.49213         *.*                    LISTEN
tcp4       0      0  *.32770                *.*                    LISTEN
tcp4       0      0  *.32771                *.*                    LISTEN
tcp4       0      0  *.wsmserve             *.*                    LISTEN
tcp4       0      0  loopback.smux          loopback.32769         ESTABLISHED
tcp4       0      0  loopback.32769         loopback.smux          ESTABLISHED
tcp4       0      0  loopback.32770         loopback.32772         ESTABLISHED
tcp4       0      0  loopback.32772         loopback.32770         ESTABLISHED
udp4       0      0  *.daytime              *.*
udp4       0      0  *.time                 *.*
udp4       0      0  *.sunrpc               *.*
udp4       0      0  *.snmp                 *.*
udp4       0      0  *.syslog               *.*
udp4       0      0  *.ntalk                *.*
udp4       0      0  *.32770                *.*
udp4       0      0  *.32773                *.*

へー、tcp/tcp6 じゃなくて tcp4/tcp なんだ。 そりゃまた大胆な。

RS/6000 7012-397; AIX 5.1L installation (6) 基本設定

基本的な構成は install_assist がやってくれる。

# install_assist
 
 
                             端末タイプの設定
端末が正しく初期化されていません。端末タイプを入力して ENTER を
押してください。英語以外の言語をサポートしていない端末タイプも
あります。
 
     ibm3101          tvi912          vt330
     ibm3151          tvi920          vt340
     ibm3161          tvi925          wyse30
     ibm3162          tvi950          wyse50
     ibm3163          vs100           wyse60
     ibm3164          vt100           wyse100
     ibmpc            vt320           wyse350
     lft              sun
 
                      +---------------------メッセージ------------------------
                      | 次画面が読み取り不可能な場合、Break (Ctrl-c) キーを
    88  ヘルプ ?      | 押して、この画面に戻ってください。
    99  終了          |
                      |
>>> 選択 []:

うわ、嫌なかんじ。vt100 で日和っとくか……。

だめだ。ファンクションキーが全部きかない。

そんなことはなかった。 ESC + 数字キーで同じ結果になるようだ。

うーん、ライセンス入力から先に進まない。 何やってんだろう。

SEGV しやがった orz

回線を切断してもう一回やりなおす。

やっとコツがわかってきた。 Ctrl-H で消去、Enter で実行、左上に OK と出てたら ESC-3 で戻る、 を繰り返せばいいようだ。 なんて出来の悪いソフトウェアだ。 このへんは Tru64 が一番優秀だったなあ。

で、なんとかがんばってネットワークを動かす。 このマシンはイーサネットが二つあって、 しかも表に出てるやつは二つめの en1 のほうだった。 実にまぎらわしい。

# ifconfig -a
en1: flags=e080863<UP,BROADCAST,NOTRAILERS,RUNNING,SIMPLEX,MULTICAST,GROUPRT,64BIT>
        inet 192.168.1.43 netmask 0xffffff00 broadcast 192.168.1.255
lo0: flags=e08084b<UP,BROADCAST,LOOPBACK,RUNNING,SIMPLEX,MULTICAST,GROUPRT,64BIT>
        inet 127.0.0.1 netmask 0xff000000 broadcast 127.255.255.255
        inet6 ::1/0
         tcp_sendspace 65536 tcp_recvspace 65536

またデフォルトでは telnet が IPv6 でしか動いていなかったので、 inetd.conf をいじって tcp6 → tcp に変更した。 その後は refresh -s inetd でリロードできるらしい。

これでどうだっ。

~ % telnet rs7012
Trying 192.168.1.43...
Connected to rs7012.
Escape character is '^]'.
 
 
 telnet (rs7012)
 
 
 
 
AIX Version 5
(C) Copyrights by IBM and by others 1982, 2000.
login:

よし、telnet がつながった。 これで勝ったも同然だ。

RS/6000 7012-397; AIX 5.1L installation (7) アプリケーション

あとはいつも通り。 sudo, zsh, ssh, cvs, gcc, bison, まで入れれば Ruby がビルドできる。はず。 続きはまた明日〜。

(02:26)

gets("")

(すでにパッチを出したあとだけど記録のため残しておく)

gets("") が gets(nil) と同じになっているっぽい。

~/c/ruby % (echo a; echo; echo b; echo) | ruby-1.8.1 -e 'p STDIN.gets("")'
"a\n\n"
~/c/ruby % (echo a; echo; echo b; echo) | ./ruby -e 'p STDIN.gets("")'
"a\n\nb\n\n"

報告しようと思ったが、[ruby-core:03771] と同じみたいなので様子を見ることにする。

ちょっとだけ追ってはみたんだけど、 rb_io_getline() の次のとこをちゃんと抜けていないらしい、てとこで脱落。

        while ((c = appendline(fptr, newline, &str)) != EOF &&
               (c != newline || RSTRING(str)->len < rslen ||
                (rspara || rscheck(rsptr,rslen,rs)) ||
                memcmp(RSTRING(str)->ptr+RSTRING(str)->len-rslen,rsptr,rslen)));

……と言いつつも追ってしまうやつ。

この条件をわかりやすく書きなおすとこうなる。

for (;;) {
    c = appendline(fptr, newline, &str);
    if (c == EOF) break;
    if (c == newline) {
        if (RSTRING(str)->len >= rslen) {
            if (rspara && rscheck(rsptr, rslen, rs)) {
                if (memcmp(RSTRING(str)->ptr + RSTRING(str)->len - rslen,
                           rsptr, rslen))
                    break;
            }
        }
    }
}

なるほど。rscheck のとこが間違ってるな。 ここが if (rspara || rscheck(rsptr, rslen, rs)) にならないといけない。 意図を考えるとたぶんこうだろう。

        while ((c = appendline(fptr, newline, &str)) != EOF) {
            if (c == newline) {
                if (RSTRING(str)->len < rslen) continue;
                if (!rspara) rscheck(rsptr, rslen, rs);
                if (memcmp(RSTRING(str)->ptr + RSTRING(str)->len - rslen,
                           rsptr, rslen) == 0) break;
            }
        }

newline (= rs の最後の文字) が読み込めるまで読んで、 str の末尾が rs に等しいか memcmp でチェックする。 ただし str.length < rs.length のときは読み込みを続行し (continue)、 rs が変化したときは例外にする (rscheck)。

make test, make test-all は通るみたいだな。

# ちなみになんでこのバグに気付いたかと言うと tdiarygrep が動かなかったからで、 tdiarygrep を使ったのは RS/6000 の起動方法を検索するためだった。

(02:31)

Linux 本〜

AIX 入れたりパッチ書いたり、 Linux 本の原稿はどーしたんだと思われるかもしれませんがいいんです、 今日はたくさん書いたんです。

いやそれは嘘で文章はあんまり書いてはいないけど、たくさん作業したんです。 タグも付けたし全部文法チェックしたしプログラムのテストも書いたし文章も読み直したし。 だから大丈夫です! ええ! きっと今年中には出るよ! いや出ないけど! どっちだよ!

ねる。

(02:42)

本日のツッコミ (全2件) [ツッコミを入れる]

shelarcy [圏論勉強会来ませんでしたね。やっぱり日記に書き込まないとダメでしょうか?
http://www.sampou.org/cgi-bin/haskell.cgi?CategoryTheory%3a%b7%f7%cf%c0%ca%d9%b6%af%b2%f1&l=jp]

青木 [いやー、ML 読んでるからわかってはいたんですが、
時間と金がないっす……。たぶん 1 月あたりには
なんとか。]


2004-11-23

IDE

プログラマの生産性を上げるにゃ IDE はいらぬ、モニタが三つあればいい

タブ

タブブラウザって便利だけどさ、 それってモニタが狭いから便利なんじゃね?

わたしはリファレンスも本になってるほうが好きですが、 それはモニタを占有しないからです。

結論

とっとと 100 インチ液晶モニタを作れ!

(20:51)

本日のツッコミ (全2件) [ツッコミを入れる]

sugi [タブブラウザには、多くのページにアクセスしたままにできるという利点の他に、
今フォーカスしているページ以外を視界の外に追いやれるという利点があると思います。

なので、仮にモニタの広さがはるかに大きくなったとしても、
タブブラウザが不要になるというまでのことはないのではないかという気がします。]

青木 [なるほど。ウィンドウを紙にたとえるなら、
(ぴったりと) 重ねてまとめられるのが便利
ということでしょうか。タブ切り替えは
ページをめくるのだと考えればよいのかな。]


2004-11-25

『Winnyの技術』

http://int.mydns.to/blog/archives/2004/11/winny.html

47 氏自身が Winny の技術を書いた本が出るらしい。 これは買いでしょー。

(20:12)


2004-11-26

mozex

Mozilla でも textarea をエディタで編集できるんだなあ。 以下のページを参考にインストールした。

しかし UTF-8 対応のエディタを入れるのは面倒なので、 間にシェルスクリプトをはさみ、EUC-JP に変換しておく。

#!/bin/sh
# $Id: edit-textarea.sh,v 1.3 2004/11/26 19:15:17 aamine Exp $
 
file=`eval "echo $1"`
encoding=eucJP
tmpfile=/tmp/edit.iconv.tmp
 
iconv -f UTF-8 -t $encoding $file > $tmpfile
mv $tmpfile $file
/usr/bin/emacsclient $file 2>/dev/null
status=$?
iconv -f $encoding -t UTF-8 $file > $tmpfile
mv $tmpfile $file
exit $status

この日記は空行が自動的に全角空白に変わるのでコピペするときは要注意。

ところで、上記 URL のページ通りに設定するとファイル名が ダブルクオートでくくられたまま渡されるため、 わざわざ eval で外している。 シェルスクリプトの前に Ruby でも書いたんだけど、 やっぱり同じところではまった。 はまるなら最初っから付けなければいいんじゃないかとも思ったが、 まんがいちパスに空白が入っていると嫌なのでつけておくことにする。

端末のないプログラムのデバッグ

制御端末がないプログラムを print デバッグしたいときはこんなのを使うと便利。

require 'pp'
 
def ppp(obj)
  File.open('/dev/pts/2', 'w') {|f|
    PP.pp obj, f
  }
end

(04:32)


<前月 | 最新 | 次月>
2002|04|05|06|07|08|09|10|11|12|
2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|04|05|06|09|10|
2009|07|
2010|09|

Copyright (c) 2002-2007 青木峰郎 / Minero Aoki. All rights reserved. LIRS