2003-07-27

追記: 下記の件を修正したcsvform, dtnchot, strhist, timestampを公開しました。strhist以外は基本的に下記の問題に該当する箇所の修正のみです。strhistは、2.12以降を公開するのを忘れてたみたいです(苦笑)。あと、おまけがちょっと豪華になったのがひとつあります(笑)。ダウンロードできないなどのトラブルがありましたらお知らせください。

追記その2: いたずらに不安をあおるような書き方をしている気がしたので、小見出しをあらためました。……その後、あらためたやつは不正確なような気がしたので、さらに普通の言葉にあらためました。

今日の範囲外アクセス(TX-C)

strcpymax(sz1,sz2,size)

strcpyと同じですが、sizeを超えない文字数だけをコピーします。例:
strcpymax(sz,"0123456789",5);
szの内容は“0123”になります。

strcpylen(sz1,sz2,lch)

sz1sz2を最大lchバイトコピーし、sz1[lch] = 0にします。例:
strcpylen(sz,"0123456789",5);
szの内容は“01234”になります。

うわー! strcpymaxを使うべきところでstrcpylenを使いまくってました。懺悔ものです。

strcpylen(szsearch, sz, CCHPATHNAME);なんてやってるのは完璧にアウトですね(dtnchot)。szsearchの範囲をひとつ超えたところに '¥0' が書き込まれる。

次のようなコードを実行すると、その実害を観察できます(WZ 4.00Fa β2.1で確認、ただし環境によって再現しない可能性もあり)。

void main(TX *text)
{
    mchar sz1[CCHWORD] = "あああ";
    mchar sz2[CCHWORD] = "";
    information("%s", sz1);     // 「あああ」と表示(正常)。
    strcpylen(sz2, sz1, CCHWORD);
    information("%s", sz1);     // 文字列が空になっている。
}

2度目のinformationではsz1が空になっています。メモリ上でsz1sz2が隣接していて、sz1[0]'¥0' が書き込まれているものと思われます。

マクロの方も近いうちに直します。おぅ、みんな、見捨てないで…。

2003-07-25

ももはうまし(脈絡なさすぎ)。

[ももの写真]

ポータブルCDプレーヤー

iMP-550とファームのアップデート
http://www.c-plusc.com/erimt/archives/000964.html

iMP-550というポータブルCDプレーヤー(MP3も再生可)は、アップデータを焼いたCD-Rを「再生」することで、ファームウェアをバージョンアップさせるそうです。「CDを食わせてパワーアップ」というのが個人的にめちゃくちゃカッコよさのツボを突いてくるのですが。

……突いてくるのですが、僕は先日D-NE1を買ってしまったばっかりなのでした(前に使っていたのが壊れてしまったので買い替え)。それはそれで気に入ってるんですが、iMP-550の製品情報のページでちょっと気になるのが「39ヶ国言語の表示が可能なグラフィックLCD」という記述。D-NE1は日本語の曲名は表示できるけれども、アクセント記号つきのアルファベットなんかが入っている曲名(”Créme Brûrèe” とか “California Über Alles” とか)は表示できません。自分的には後者が表示できたほうがありがたいんですよね……。ん? 欧州向けのCD Walkmanとかにすればよかったんでしょうか(マニアック)。

CDプレーヤーとか、携帯電話とか、PDAとか、そのへんはさっさとUnicodeに移行しちゃえばいいのに、とかよく思います。

iPodなどのMP3プレーヤーも前から気になってはいたんですが(iPodは今回かなり迷った)、やはり「CDを買った帰り、さっそく聞きながら帰れる」というCDプレーヤーの魅力は捨てがたいです。

Norton AntiVirus 2003

某新履歴にも似たような話がありましたが。

Norton AntiVirus 2002の購読期限が切れたので延長しようとシマンテックのサイトに行くと、「今ならパッケージ版のNorton AntiVirus 2003がお安くお求めになれます」とか、そういうようなことを言ってきました。2002の更新キーが3,200円で2003のパッケージが3,500円。「それは2003にするだろう」と、パッケージ版の購入に進むと、じつは送料500円と消費税がかかるので実質的には4,200円ということがわかります。

ここでふと、シマンテック・ストアのサイトに「ダウンロード販売」の文字があったのを思い出しました。そこで、2003のパッケージ版の購入はキャンセルして、ダウンロード販売コーナーの「Norton AntiVirus 2003」のほうを見てみると……3,800円。消費税を入れても3,990円。

まあ、200円ほどの違いなので大げさに書きたてることでもないんですが、それなら更新時にはダウンロード版のほうをお勧めしてくれてもいいんじゃないかと思ってしまうのが人の性。シマンテックとしてもそのほうがコスト的にはいいのではなかろうかと。

というわけで、「Norton AntiVirus 2003」ダウンロード版を購入。

2003-07-21

承前[2003-07-20] の続き)

It’s not a matter of love

community
1 (利害・宗教・国籍・文化などを共有する)共同社会, 共同体, コミュニティー; 地域社会 .

「コミュニティ」という語を辞書どおりの意味で使うのなら、WZの掲示板で情報交換する人々を指してそう呼ぶとことはできるでしょう。少なくとも特定のソフトウェアのユーザーであるという共通項があるし、掲示板で発言している以上は他のユーザーとなんらかの形でコンタクトを取っているわけだし、明日WZが使えなくなったら(程度の差こそあれ)困るという意味では価値観や利害を共有しているといえるので。そういうことも踏まえて、20日の文章では単に「コミュニティ」と裸のまんまで使うのは避けてます。

それでなんなのか、というと、だからといってそれがすなわち倫理観まで共有しているとか、VC擁護に心血を注いでいるとか、みんながみんな自分の発言する掲示板をその手に掌握することを志向しているとか、「テキストファイル最高!」とかいう信念にとりつかれている集団ということにはならないし、事実そうはなってはいないんじゃなかろうかということです。

で、なんでわざわざそんなことを言うかというと、それは(別にコミュニティの存在を認めたくないからではなくて)、何回か掲示板で発言を繰り返しているという事実だけで、秘密結社の会員であるかのようにいわれるのは個人的な感情として不愉快だから。「コミュニティ」とか「取り巻き」とか書けば一見無難なように思えるかもしれませんが、書いてしまえばそこに特定の誰かが含まれることになるのは避けられないわけで、仮想敵を導入すると論の展開に便利だからということで自分がそこに放り込まれかねないとあれば「ちょっと待てよ」と言いたくもなるのです。曖昧な定義に基づいてなんとなく誰だかに言及しているというのは、誰についても言及していないのと同じではないのです(同じならそもそも言及しようとは思わないはずだし)。

隠しAPI(TX-C)

「隠しAPI」っていう呼び方はちょっと誤解を招きやすい表現だと思います。これらは別にWZのバイナリの奥深くに埋め込まれているというわけではなくて、_wz.hというヘッダファイルにきちんと関数宣言が書かれているのです。APIヘルプ(API.TML)には解説がありませんが、C言語がわかる人が_wz.hを読めば、すぐに使えるようなものがほとんどです(細かい解説がないので多少の想像力は必要ですが)。ドキュメント化されてない(Undocumented)APIとでも呼んだほうがいいのかもしれません。

だから僕としては別にそれらを無保証のデンジャーAPIだとは思ってないし、ちょくちょく仕様が変わるようであればそれはそれで問題だと思ってますけども、まあそれはまた別のお話。

100行<1行

VCのWZ関連掲示板でコミュニティのあり方とか、ソフトウェアのサポート形態であるとか、テキストエディタにまつわる思想的な意見を述べたような発言についてコメントが付きにくいというのは、(コミュニティについて前回書いたように)あまりそういうことに関心が高い人がいないんじゃないかというのもあると思いますが、もうひとつの理由として、そういう発言があまり効果を発揮しないと考えている人が多いのではないかとも僕は思うんですよね(あくまで個人的な予測ですけど)。

というのは、βテストなんかで何回か発言して、要望が取り入れられたり取り入れられなかったりして一喜一憂していると、どのような投稿がWZのコードに影響を与えやすいのかがわかってくる(少なくともわかったような気になる)んです。で、そうしたいわば「よい報告のコツ」として僕が感じたことのひとつが「可能な限り具体的に」ということでした。つまり、どんなによい意見でも、抽象的ではT_Y_さんにどうしてほしいのかは伝わらないということです。

理想のテキストエディタがどうとか、売れるソフトウェアがどうとか、そうしたことについて考えて語るのは楽しいので(笑)、僕もついついそういう方向に走ってしまいがちなのですが、βテストでは、100行演説するよりも、「○○すると××が落ちます」と1行書いたほうが確実にソフトはブラッシュアップされていくんですよね。発言する側としては、前者のほうがエキサイティングで楽だし、後者は地味で面倒ではありますが。

けっきょくみんな、そんなような結論をそれぞれ出していたりするから、というのもあるんじゃないでしょうか。

長大で感動的な演説をすると、空が暗くなってVCやT_Y_さんに稲妻のごとき天啓が下り、(それまでナニモノかに取り憑かれていたらしい)見米さんの目は光を取り戻して、以降VCのサポートは劇的に改善しT_Y_さんがあらゆるソフトウェアを一切バグを含まずに一瞬で書く能力を身につけ、WZ5はその次の日に完璧な形で出荷されたそうな、とか、そうなるわけでもないでしょう。

ほとんど自戒を込めて書いてますが、実際のところ、概念的な「立派な意見」はいくらでも書けるものだったりします。現実を引きずっていないから。WZを一から書き直すとかいうなら話は別ですが。そして、そんなことはわかりきったうえで書いているんだという人がいたとしたら、僕はその人が前述の「天啓効果」を一瞬でも本気で信じてしまったんじゃないかとしか思えないのです。

2003-07-20

ハイパースレッド II [WZ関連のもろもろ] – PAT
http://www.pat-unet.ocn.ne.jp/bbs/hyperbbs.cgi?mode=view;Code=2

WZの場合は、さらに性格が違っていて、列記とした市販のパッケージソフトですからね。過剰な取り巻きは、「甘えの構造」に帰着する温床でしかないだろうかなと。

こうした主張はあちこちで聞かれますし、理屈も理解できるのですが、じつは僕はこれがWZに当てはまっていると思えないんですよね。少なくとも僕が知っているWZ3後半以降では。

むしろ、あんなに開発者に厳しいユーザー集団はあまりないんじゃないかと思うのですが。

WZについて、作者を擁護する連帯感で結ばれたコミュニティがあるなどという認識は僕自身は持っていないし、掲示板でのやりとりを見てもあくまでプラグマティックなトーンで終始していることが多いと思います(し、僕はその傾向を好ましく思ってます)。

VCの掲示板で、「閉鎖的なコミュニティに対する憤り」みたいな文脈で自身の不満を結晶させてしまったようなユーザーの投稿に対して反応が鈍くなりがちなのは、そのような理由もあるのではないかと(そもそもそのようなコミュニティが存在するとは誰も(?)思っていないとしたら?)。

逆に、不満点の報告でも、具体的な事例を挙げているものについてはそれなりにコメントはついてるんじゃないでしょうか。