depressionist in depressive mood

[prev|next|index]2002:13

[prev|next]20020325Mo

今日はめずらしく目覚めが悪くない。 よいというほどでもないが。 こういう日が毎日だったらよいのにと思う。

先日 MySQL を人にすすめたこともあって、 もう少し調べてみることに。 日本 MySQL ユーザー会の サイト あり。 マニュアルの日本語版や ML のアーカイブなどが公開されている。 Windows 版のバイナリパッケージ 3.23.49 を 本家サイト よりインストーラをダウンロード。 最新バージョンは 4.0 であるがこれはまだアルファリリースのようである。

さてこまったことにマニュアルには Windows 版のインストール方法や設定方法がまとまってのっていない。 Windows ではとかかかれた部分を拾い読みしながら何とか設定できた。 マニュアルの 「2.1.2 Windows への MySQL のインストール」では、 C:\mysql\my-xxxx.cnf のうち適合するものを C:\my.cnf にコピーせよとある。 しかし中身はどうやら Unix 用の設定ばかりであり、 Windows 向けにカスタマイズするにはここの情報だけでは足りない。

そこで読みすすめていくと、「2.6 Operating System Specific Notes」という章があった。 「2.6.2 Windows Notes」- 「2.6.2.2 Starting MySQL on Windows NT or Windows 2000」に MySQL をサービスとしてインストールする方法がかかれている。

$ /c/mysql/bin/mysqld-nt --install
$ net start mysql

Windows 版ではインストール直後は、 全ローカルユーザがパスワードなし全権限ありになっており、 root もパスワードなしになっている。 安全のため mysql.user テーブルから無名のローカルユーザを削除し、 root にパスワードをつけるべし。

$ mysql mysql
mysql> delete from user where host='localhost' and user='';
mysql> exit;
$ mysqladmin reload
$ mysqladmin -u root password NEWPASSWORD

ところで C:\mysql\bin ディレクトリを眺めていると、 WinMySQLAdmin という管理ツールがあった。 これを起動すると NT 版の標準的な設定ファイルを C:\WinNT\my.ini に作ってくれるようだ。 しかしC:\my.cnf があるとなぜか C:\my_cnf.bak に名前を変更してしまう。 マニュアルには、設定ファイルは C:\WinNT\my.iniC:\my.cnf の順序で読み込むとかいてあったが、 どうもよくわからない。 設定は C:\WinNT\my.ini に集中しておけということか。 my.ini にはクライアントの設定が書いていないがどうしたものか。

WinMySQLAdmin はポップアップメニューから MySQL NT サービスのインストール・開始・停止・削除をコントロールできる。 それにスタートアップにショートカットを登録するボタンもあった。 なんだ先にいえよ。 そして最初の起動時に、接続用の User ID とパスワードを入力させられる。 しかしこれは設定ファイルにプレーンテキストでかきこまれてしまうのでちょっと怖い。

で早速 c:\mysql\bin\mysql クライアントで接続、 日本語のデータに対応しているか試してみる。

$ mysql test
mysql> create table tbl (clm char(50));
mysql> insert into tbl set clm='表計算';
mysql> select * from tbl;
+-------+
| clm   |
+-------+
| 阜v算 |
+-------+

見事に「表」の2バイト目の「\」が認識されてしまい化けてしまった。 WinMySQLAdmin で設定されている変数の一覧を表示させてみると、 character_setlatin1 となっている。 character_sets には sjis が含まれている。 Wnidows 用バイナリパッケージはあらかじめ使用できる文字セットが すべて使用できるようなオプションでコンパイルされているようだ。 なので my.ini[mysqld] セクションに default-character-set=sjis を追加。 サービスを再起動してもう一度試してみる。

$ mysql test
mysql> insert into tbl set clm='表計算';
mysql> select * from tbl;
+--------+
| clm    |
+--------+
| 阜v算  |
| 表計算 |
+--------+

今度は見事に Shift JIS コードを認識してくれたようだ。 調子に乗って language=japanese も指定してみた。 が、こちらはコードが EUC になっていてエラーメッセージが化けてしまう。 残念なり。

[prev|next]20020326Tu

今日の目覚めは最悪。 ちょっと油断するとこれだ。

今日は納品物件の検収締切日なので書類を作成したり、 承認をもらうために書類を本社と発注元との間を行ったり来たりして持ちまわって一日つぶれた。

mysql クライアントを ssh 経由でつかおうとしたら なぜかうんともすんともいかなくなった。 exit コマンドは認識している様子。 Cygwin の sshd のせいなのか? そういえば、meadow なんかも ssh でログインして -nw で起動しようとすると emacs: standard input is not a tty とかいわれる。 そうそう ssh でなくても、 ローカルのコンソールで CYGWIN=tty とかにしておくと、 Meadow は同じエラーメッセージを出力する。 CYGWIN から tty をはずすと -nw でも起動できる。 このとき ps をとってみると、 Meadow を起動したシェルの TTY は con になっている。

そこで MySQL の Windows 版ソースをダウンロードしてきて mysql クライアントのコードを眺めてみた。 プログラムの最初の方に

if (!isatty(0) || !isatty(1))
{
  status.batch=1; opt_silent=1;
  ignore_errors=0;
}
else
  status.add_to_history=1;

とかいうコードがあった。 これは標準入力か標準出力がリダイレクトされていたらバッチモードで動けということか。 どうやら Cygwin の sshd が標準入出力を プロセスでリダイレクトしているんだろうな。 当たり前といえば当たり前である。 リモートのプログラムが Cygwin でコンパイルされたものであれば、 リダイレクトされているとは認識されないのであろう。 Windows のコマンドではどうしようもないか。 あ、もしかしたらデスクトップとの対話を許すにしておけば OK かも。 と思ったけどやっぱりだめだった。 それに DOS 窓が出てうざったいし。

んで、先ほどのリダイレクトチェックをコメントアウトして再コンパイルしてみたが、 残念ながら現象は変わらず。 他のファイルを grep してみるとあちこちで isatty でチェックしている。

ちなみにクライアントは、 VC でコンパイルされた mysql のほかに、 Cygwin でコンパイルされた mysqlc というものも同梱されていることが判明した。 こっちの方が GNU readline をつかっているので入力するときに行編集ができてよい。 ただ NT 名前付きパイプの機能は働かないような感じ。 まあ TCP/IP をつかえばよいだけだが。 で、Cygwin でコンパイルされているのだから、 これなら ssh 経由でも OK だろうと思ったけど、 なぜか mysql と症状は変わらず。 うーむ、Cygwin の dll が cygwinb19.dll とかになっているので、 Cygwin 1.3.x とは微妙に何かが違っているのだろうか。 これまた残念なり。

といっても別に ssh でログインせずとも、 MySQL クライアントをローカルにコピーして TCP/IP で接続すればいいだけじゃないのか。

ここンところ野菜を食ってないなと思い、 帰りがけにコンビニでツナ・コーン・サラダと胡瓜の浅漬けを買う。

[prev|next]20020327We

MySQL のリファレンスマニュアルを印刷した。 最初 HTML をそのまま印刷しようと思ったけど、 索引とかがないとつかいにくいと思いなおし DVI をダウンロードした。 しかし、なぜかフォントがみつからないというエラーで印刷できない。 PS ファイルではなくて PDF にしておいてくれるとうれしかったのにな。 仕方がないので Texinfo ファイルをダウンロードしてコンパイルすることに。

文字コードを Shift JIS に変換し、 texi2dvi でコンパイル。 しかし include.texi がないとかいって怒られる。 日本 MySQL ユーザー会のサイトの ML ログを検索したら、 どんぴしゃの質問が見つかった。 ソースパッケージの Docs ディレクトリに入っているようだ。 しかし Windows 版のソースパッケージにはないぞ。 仕方がないので Unix 版のソースパッケージをダウンロードする。 はいはい確かに見つかりました。

しかし 700 ページ以上あるねこのマニュアル。 必要な部分のみ印刷しないと大変なことになりそう。 つーか、変更履歴までかいてあるよ。 100 ページも。

ここンところ野菜を食ってないなと思い、 帰りがけにコンビニで コーンサラダと根菜の煮物とひじきの煮付けを買う。 食べようとしてから気がついたけど、 サラダにドレッシングがついてなかった。

[prev|next]20020328Th

今週は MySQL 週間だな。

MySQL のエラーメッセージをテキストからバイナリに変換する方法がマニュアルに載っていたので、 実行してみることに。 まず、 C:\mysql\share\japanese\errmsg.txt をEUC から Shift_JIS に変換。 そして comp_err で変換する。 しかしこのコマンドがなんとWindows 版バイナリパッケージには含まれていなかった。 なので、この間ダウンロードしておいた Windows 版ソースパッケージから comp_err.c を見つけ出した。 なんか IDE でプロジェクトを開くともとより comp_err.c が プロジェクトに含まれていない。 面倒なので、コマンドプロンプトから cl を起動してコンパイルした。 おっとその前に IDE で mysqlclient.lib のプロジェクトをビルドしておかなければならない。 が、これは火曜日に TTY 問題で mysql をビルドしたときにできている。

$ cl -MT -I../include comp_err.c \
/link ../lib_release/mysqlclient.lib advapi32.lib ws2_32.lib

しかしテキストファイルをバイナリに変換するだけなのに、 なぜ WinSock ライブラリまで必要なのか。 レジストリ関係の API までリンクしてるし。 mysqlclient.lib がインポートしているのだろうな。

そして comp_err errmsg.txt errmsg.sys と変換して C:\mysql\share\japanese にコピー。 my.inilanguage=japanese としてめでたく日本語でエラーメッセージが出るようになった。

ところで、日本 MySQL ユーザー会のサイトには、 日本語の errmsg.txt も日本語マニュアルといっしょに公開されている。 これはソースパッケージについてきたものと何が違うのか。 ダウンロードして差分をとってみると結構違う。 そもそもファイルのヘッダのコメントが、 日本 MySQL ユーザー会の方は 3.23.43、 ソースパッケージの方は 3.22.10-beta である。 ちなみにソースパッケージのバージョンは 3.23.49、 日本 MySQL ユーザー会のページには 3.23.48 ということになっている。 もうわけわからん。

とりあえず新しいほうがいいだろうということで、 日本 MySQL ユーザー会の errmsg に置き換えてみた。 エラーメッセージもいくつかはこなれた日本語に直されているのもあるしね。

だが今度は mysqld が内部エラーで起動しなくなってしまった。 もう一度差分をよく見てみると、 メッセージの項目数が日本 MySQL ユーザー会の方が少なくなっている。 これはもうどうしようもないので元に戻す。 なにがなにやら。

ここンところ野菜を食ってないなと思い、 帰りがけにコンビニで 海鮮サラダとごぼうと根菜のサラダを買う。 サラダを買おうとして気がついたけど、 ドレッシングが別売りになりましたとかいてありましたな。

[prev|next]20020329Fr

だいぶ前に買った「Java の格言」の要約をしてみた。 こういうのはたまに読み返さないとついつい忘れてしまうもの。

しばらく前から Cygwin の rcp とか rsh とかがなぜか Permission denied で実行できなくなっていた。 scpssh はまともに動いているのでいいやと思っていたが、 久しぶりに cvs でリモートのリポジトリにアクセスしようとしたら これもまた Permission denied で動かなくなっている。 デフォルトだと rsh をつかうようになっているのですな。 なので CVS_RSH=ssh にして起動してみたら パスワードを聞いてくるものの動作しているようである。 しかし、Meadow の PCL-CVS モードが パスワードの入力のところで入力待ちになってしまい動かない。 ssh-agent でもつかえばよいのだろうが、 どうも理解力不足で動かすには手に余る。

とりあえず Cygwin のバージョンを最新版にしてみる。 1.3.10-1 って安定しているのか? この前別のマシンに 1.3.10-1 をインストールしたら、 リモートからログインするとシェルが アプリケーションの初期化に失敗しました とかエラーメッセージボックスを出して動かなかったことがある。 そのときは別マシンのひとつ前のバージョンをディスクからインストールしてやり過ごした。 不安とともにバージョンアップしたが ssh でちゃんとログインできた。 うーむ。何かライブラリのバージョンが微妙に古いのをリンクしたりしていないか? しかしやっぱり rcp は期待通りに動きやしない。

そこでいろいろと rcp とかためしていると、 イベントビューアに foo@/home/foo/.rhosts as foo: cmd='rcp -f bar' と出力されていた。 ということは .rshots は見にいっているが そのかき方がおかしいということか。 でいろいろといじってみていると、 なんと .rhosts のホスト名を IP アドレスで書くようにしたらあっさり動いてしまった。 すごく脱力する。

ここンところ野菜を食ってないなと思い、 帰りがけにコンビニで 野菜サラダと野菜の煮物を買う。 しかしコンビニの惣菜って割高感が強いね。 ほんの一口分くらいしか量がない。 それに選択肢が少ない。 今の俺にとっては、マヨネーズ絡めたり、肉入れたりする必要なし。 どうどうと野菜で直球勝負といっていただきたい。 しかも塩分ひかい目で。

[prev|next]20020330Sa

今日は一日中ネットをはいかいして過ごす。 ネット依存症かあたしは。

ふとあるサイトを眺めていると、 メンソレータムと近江兄弟社に関する記述があった。 ここら辺の話をつい先日雑誌のバックナンバーで読んだよなと思い出し、 その雑誌をさがしはじめるが見つからない。 よくあることである。 そのうち部屋がだんだんと崩壊をはじめ、 積読していた本が出てくる。 もっとも一年以上前に積読の塔はバベルの塔よろしく崩壊して収拾がつかなくなっていたが。 もう整理する気も機会もなくなっている。

で、その積読していた本、 ぱらぱらとめくってみると所々に興味をそそる見出しが出てくる。 「達人プログラマ」。気恥ずかしいタイトルだな。 訳者の村上雅章さんてのは昔 FAI のシスオペやってた人ではないのか。 AWK にはまってた人というイメージが強いが。 結局、最初の探し物をほっぽってつまみ読みしてしまう。 タイトルから受ける印象とは違って、文体は固め。 あたしはもっとくだけた文章の方が読みやすい。 内容は G.M.ワインバーグのプログラマ版といった感じ。 スーパーエンジニアへの道なんかを思い出した。 職業プログラマの初級者は読んでおいて損はないと思う。

[prev|next]20020331Su

朝、目がさめると胸が苦しい。

えたいの知れない不吉な塊が私の心を始終圧えつけていた。 焦燥といおうか、嫌悪といおうか ---- 檸檬、梶井基次郎

二度寝してやり過ごそうと思ったが、 うつらうつらしてくるたびに奇妙な夢にうなされて目がさめてしまう。 もしかして幻覚か。 なんというか誰かが家にやってきて、 居留守を決め込んでいると勝手に上がってきて部屋の方に向かってくる気配がする。 ドアの前に立ったところではっとして目がさめる。 あるいは、振り返ると非難がましい目をした人物がこちらをにらんでいて、 その視線から逃げられず動けなくなってしまうといったような。 これらを三〜四回くりかいしたところでさすがに気味悪くなり薬を飲む。 なぜか時間の感覚が失われて月曜日の朝かと思って大いにあせった。 しばらくするとだいぶ気分がよくなった。 最近は薬の効きがよい。 脳の配線がつながってきたか。

どうも今日は知りあいとは顔を合わせたくないなと思ったが、 みなくてはいけない芝居がある。 To go or not to go. いくべきか、いかざるべきか。 なんてことを考えていたから変な夢を見たのかもしれない。 ちょっとネットで調べものとかしているうちに時間がきてしまう。 急いで朝風呂を浴びて不精ひげもそらずに飛び出す。 昨日もそらなかったので、ちょっとみにはわざとそっていないように見えるだろうと判断した。 ひとよりもちょいと濃いので、下手したら 4 〜 5 日そっていないように見えるかも。 ひげが濃いというのはいまどき自慢にはならないが、 イタリアの血が 16 分の 1 ほど混じっているそうなので仕方がない。うそだけどな。

で、会場の近くの駐車場はすでに満車である。 仕方がないので第二候補へ。 ここは少し割高なのだが時間が迫っているので あまり遠くの駐車場にとめる余裕がない。 しかし、ここも入ったとたんに満車となる。 五階建てのパーキングなのだが、 結局屋上まであがってしまった。

芝居は二時間の大作であった。 しかし観客のマナーがひどくて辟易する。 客電が消えたとたんにけんかをはじめる子供とか 泣き出す赤ん坊とか 小声で感想とか話している老夫婦とか 一番前の席で寝ているおばさんとか 退屈してビニールのバッグをギュッギュならしている小娘とか 何度も床に物を落とすバカとか。 出演者に同情することしきりである。 出演者も最初の客席の騒ぎで緊張が切れたか、せりふカミカミ。

ストーリーももう少し整理してもよかったんではないかなという感じ。 登場人物が多いせいかそれぞれのエピソードがいまいち盛り上がらない感じだった。 出演者の方もまだ経験が浅いせいか舞台上の立ち姿が見ていてなんとなく気持ち悪かった。 それはそれとして各場にみせるところもありまずは満足したとしておこう。

観劇後、アフターシェーブローションがなくなりかけていたので買い物に行く、 しかし売り切れ、というかもうアラミスの商品を取り扱う気まるでなしという感じ。 年々売り場が縮小されていっている。 そもそも 6、 7 年前は近所のデパートにアラミスのブースがあったのだが、 それがいつのまにかブースの担当者がいなくなり、 そしていつのまにかこちらのデパートにコーナーだけ移ってきていた。 商品を出してもらうのも最初は近くのレジに頼めといわれたり、 エスティローダにいえといわれたり (アラミスの製品は日本ではエスティローダ・アラミス事業部が輸入しているのである。) とうとうレジの後ろの人目につかないところに移されてしまっていた。 よっぽど売りたくないのか。 というより買うやつがいないのだろうな。 もうこの近所では入手は望めそうにない。 だいいちこのデパートも来年にはここから撤退するはずだ。 別のメーカーにかえようかな。 しかし学生時代からコロンとか 900 のフェイスソープとか愛用していたので業腹である。 こうなったら意地でも入手してやる。

この後どうせならついでに映画でも見るかと、 上演情報を調べに本屋へぴあを立ち読みにいく。 しかしなぜか見当たらない。 何やら品揃えが悪くなった感じ。 仕方がないのでついでに「創」と「演劇ぶっく」を購入。 映画は後日に回しましょう。

車を止めていた駐車場はデパートの系列なので、 シャツでも買うかと今度はそのデパートへおもむく。 しかしよさげなのがない。 というよりこのデパートはちょいと年齢層が高めだ。 40 代後半以上というところだろう。 バーバリのシャツに心ひかれたが値段が二万数千円というので、 これはすっぱいシャツだと思いこむ。 たかが二千円くらいの駐車代を惜しんで二万円も出すほど酔狂ではない。

しかしシャツ購入モードにスイッチが入ってしまったので別のデパートへ行くことに。 ここもあまり気をひかれるものはなかった。 考えてみるとこの季節は新入社員向けの無難にオーソドックスなのが多いのか。 というか以前好んで買っていたメーカーがなくなっている。 何やらしらンがあたしが気に入ったメーカーっていつのまにか置かれなくなっていることが多い。 この街はどんどん住みにくくなっていく。

それでもまあ適当なのを二着みつくろい、その他下着と靴下なども購入しておく。 その後別の階にある本屋を冷やかす。 ここも売り場が縮小されていて愕然とする。やはり不景気であるな。 ここんちはこの近所の書店では取り扱っていないようなマニアックな品揃えが魅力だったのだが。 あまりほかと変わらなくなってしまった。 ここでサニー・ランドール・シリーズの未読の文庫本と、 Web デザインの本、いろんなフライヤーを集めた本を購入。 なんだかんだいって結構散財する。 まだいろいろと買いたいものがある。 物欲の神様が降臨したか。

久しぶりに馴染みの酒屋に行ってスピリッツでも買おうと思い立つ。 みるとタンカレイのジンのラベルとキャップのデザインが変わっていた。 というわけで記念に購入しておく。 おつまみのコーナーにフグの白子の豆腐というめずらしいのが置いてあったのでこれも。 あと久しぶりにホーガーデンも購入した。これは輸入物のビールである。

フグの白子の豆腐はねっとりした豆腐というか さっぱりした杏仁豆腐とかいった感じ。 それ自身にはとくに味はなし、付属の梅じそのたれを付けて食す。 ホーガーデンは瓶から直接飲んだせいか、それとも味が薄くなったか、 記憶の中の味が再現されなかった。 最初に呑んだのはご当地であったが、 やはり 1 パイントのジョッキで飲みたいものである。 ちなみにあまり冷やさず、泡もあまり立てないほうが好み。